Laden...

Wie ähnlich sind sich C# & Java?

Erstellt von Mr. Linky vor 20 Jahren Letzter Beitrag vor 20 Jahren 13.168 Views
M
Mr. Linky Themenstarter:in
75 Beiträge seit 2003
vor 20 Jahren
Wie ähnlich sind sich C# & Java?

Kann es sein, dass sich c# und Java ziemlich ähnlich sind? c# braucht das .net Framework und Java die JRE...

2.217 Beiträge seit 2003
vor 20 Jahren

ja gut ein paar ähnlichkeiten sind da aber J# ist wohl noch ähnlicher. Meines wissens nach braucht aber VB.net ebenfalls den Framework, wobei der ab den nächsten Windows Generationen eh dabei sein wird, von dem her ist das nicht so schlimm.

Auch wenn C# ein paar Ähnlichkeiten mit Java hat, glaube ich nicht das dus vergleichen kannst. Java läuft nämlich auch auf Linux d.h. das JRE (oder wie des heisst). Da gibts bei C# gerade noch ein paar Probleme.

Viele Grüße
Alexander

H
704 Beiträge seit 2003
vor 20 Jahren

Hi!

man kann C# als eine Mischung aus JAva und C++ sehen

was bei .net Framework heißt, ist bei Java die VM(Virtual Machine)

Meines wissens nach braucht aber VB.net ebenfalls den Framework

alle Sprachen, mit denen du afu .net Klassen zurückgreifst brauchen das Framework

Vb.net
C# .net
C++ .net
Cobol .net (Common buessness oriented language)
Eiffel .net ( Objektorienteirte Sprache der 80er)

[last.fm](http://www.last.fm/user/hauptmanAlpha/)
2.217 Beiträge seit 2003
vor 20 Jahren

mhh sogar bei c++?? das wusste ich net, naja gut zu wissen. wenn der framework jetzt noch perfekt auf linux laufen würde, wäre es ein großer erfolg für die sprachen

Viele Grüße
Alexander

A
3 Beiträge seit 2003
vor 20 Jahren

Auch wenn C# ein paar Ähnlichkeiten mit Java hat, glaube ich nicht das dus vergleichen kannst.

Klaro kann man es vergleichen 🙂 Es ist doch eindeutig, dass man Java als Schablone genommen hat . .Net ist DIE Antwort auf JAVA. Wer das nicht sieht, ist durchweg blind. Wenn man sogar ganz genau hinsieht, erkennt man sogar Ähnlichkeiten zu Delphi. Ähnlichkeiten zu C++ kann ich nicht erkennen, denn c#-code kann man doch lesen :🙂
Also wer Java lernt, kann super nebenbei C# lernen. Und wer Delphi kann, kann superleicht c# lernen... wer c++ kann, kann c++ 🙂

H
704 Beiträge seit 2003
vor 20 Jahren

Hi!

ich kann dir mal eine kryptischen Code von C# zeigen
wenn du willst
ich bin aber nicht schuld, wenn du dann auf Java umsteigst 😁

also
ein paar OO Feautures vermisse ich in C# ( Templates,...)
ach ja

[last.fm](http://www.last.fm/user/hauptmanAlpha/)
2.217 Beiträge seit 2003
vor 20 Jahren

unterschied Java C#. Java ist plattformunabhängig.

Viele Grüße
Alexander

F
108 Beiträge seit 2003
vor 20 Jahren

Das ist C# eigentlich auch!

www.mono-projekt.de - Die erste Deutschsprachige Mono-Community

2.217 Beiträge seit 2003
vor 20 Jahren

nicht direkt. für Linux gibts zwar das MONO Projekt aber irgendwie geht das noch nicht so 100% und es ist nicht direkt von ms, also kümmern die sich da auch nicht so driekt drum

Viele Grüße
Alexander

F
108 Beiträge seit 2003
vor 20 Jahren

Jup, aber es läuft auf allen Plattformen, die das Framework installiert haben! Leider wird MONO nicht von MS unterstützt, was aber auch nicht anders zu erwarten war.

www.mono-projekt.de - Die erste Deutschsprachige Mono-Community

2.217 Beiträge seit 2003
vor 20 Jahren

klar aber wenn mans mit SUN vegleicht, die schauen das JAVA auf allen Plattformen laufen soll / kann und wegen dem finde ich das da das plattformunabhängige klappt bei c# hapert des echt noch

Viele Grüße
Alexander

H
704 Beiträge seit 2003
vor 20 Jahren

Hi!

aber soo schlecht darf man Microsoft auch nicht wieder hinstellen

auf der (com) Website finden sich einige Artikel zu Linux

[last.fm](http://www.last.fm/user/hauptmanAlpha/)
2.217 Beiträge seit 2003
vor 20 Jahren

ja aber wenn die wollen das der framework überall läuft würden sie sich drum kümmern !

Viele Grüße
Alexander

H
704 Beiträge seit 2003
vor 20 Jahren

_Original von alexander _
ja aber wenn die wollen das der framework überall läuft würden sie sich drum kümmern !

der .net Standard ist(im Gegensatz zu Java) komplett offen
d.h. jeder kann ein Framework implementtieren

[last.fm](http://www.last.fm/user/hauptmanAlpha/)
2.217 Beiträge seit 2003
vor 20 Jahren

ja aber seien wir mal ehrlich. funktioniert der so perfekt auf linux?

Viele Grüße
Alexander

P
939 Beiträge seit 2003
vor 20 Jahren

C# hat Anlehnungen an viele Programmiersprachen (C, VB, Delphi, Java). Der größte Batzen kommt aber aus Java. Ein Java-Programm nach C# umzusetzen, dürfte noch am einfachsten sein, da es alle Java-Sprachkonstrukte so ähnlich auch in C# gibt (lock, inner classes usw.). Auch die besonderen .Net-Fähigkeiten wie Reflection, Serialization, Remoting usw. kommen alle von Java.

C# und .Net bieten noch ein paar Verbesserungen, die es in Java nicht gibt (properties, enums, foreach usw.). In der nächsten Sprachversion von C# kommen anonyme Delegaten hinzu. Diese entsprechen in etwa den anonymen Inner classes von Java. Der Haupteinsatzzweck wird wohl sein, dass man wie in Java die Ereignisbehandlung direkt beim Abonnieren eines Ereignisses mit angeben kann. Beispiel:

public void Init() {
    aClass.Changed += new EventHandler(object sender, EventArgs e) { Update(); };
}
private void Update() {
    // Zustand aktualisieren.
}

Templates soll es auch geben. Ein cooles Feature werden Iteratoren für die foreach-Schleife sein. Im Augenblick ist es so, dass sich ein IEnumerator immer die aktuelle Position merken muss. Bei Listen ist das kein Problem, es reicht ein einfacher Index. Bei komplexeren Datenstrukturen, wie z.B. Bäumen, ist schon ein Stack erforderlich. Mit einem neuen Schlüsselwort, der Name fällt mir leider nicht ein, ist das Implementieren des IEnumerator-Interfaces nicht mehr notwendig. Es reicht eine Methode zu implementieren, die nacheinander durch alle Elemente iteriert. Die Elemente werden aus der Methode heraus an die aufrufende foreach-Schleife gegeben. Danach wird die Methode an der alten Codeposition einfach fortgesetzt. Ich glaub das sah ungefähr so aus:

public object foreach() {

    // back ist falsch, wie das Schlüsselwort
    // richtig heisst, habe ich vergessen.
    // back gibt wie return ein Ergebnis zurück.
    // Die Methode wird aber nicht verlassen,
    // sondern später in der nächsten Zeile
    // fortgesetzt.
    back data[0];
    back data[1];
    back data[2];
}

In Java wird es in der nächsten Version auch ein paar Neuerungen geben ... die hauptsächlich aus C# übernommen werden 😉 Das wären z.B. Enums, foreach und Templates.

So entwickeln sich C# und Java immer weiter indem sie gegenseitig bei sich abgucken. Ist doch schön 🙂

Gruß
Pulpapex

Hinweis von herbivore vor 12 Jahren

Das Schlüsselwort heißt nicht back, sondern yield.

2.217 Beiträge seit 2003
vor 20 Jahren

kann ich nur sagen läuft wie bei vb und wbb (nur so als beispiel) irgendjemand erfindet was neues, die konkurenz schauts ab und so ergänzt sich dann alles.

Viele Grüße
Alexander

E
51 Beiträge seit 2003
vor 20 Jahren

man darf aber nicht sagen das java enums und foreaches von c# abguckt die gabs schon in VB 6 😁
ne aber solche alten sachen (ja auch schon in c++) das die mal implementiert werden ist vielleicht mit der konkurrenz mithalten aber kein ideenklau. oo sprachen haben halt viele gemeinsamkeiten. (ich will nich damit behaupten das c# nicht von java abgeguckt hat allein schon die asp ausbesserung (Java Script Pages clone) und asp webcontrols (die sollten wohl java applets ablösen)

Hafenstraße

6.862 Beiträge seit 2003
vor 20 Jahren

@ Pulpapex

Das Schlüsselwort was dir entfallen ist heißt yield.

Baka wa shinanakya naoranai.

Mein XING Profil.

2.217 Beiträge seit 2003
vor 20 Jahren

yield ?

Viele Grüße
Alexander

P
939 Beiträge seit 2003
vor 20 Jahren

WebControls sind schon ne Eigenentwicklung. Sowas gibt es in Java nicht. Vielleicht werden ja irgendwann mal die Java Servlets um eine Bibliothek für WebControls erweitert. Da würde es jedenfalls am besten hin passen. Applets sollen die bestimmt nicht ersetzen. Statt dessen kann man einfach .Net Anwendungen in Html einbetten und im IE ausführen ... das soll die Applets ersetzen 😁

Und JSP heisst Java Server Pages und nicht Java Script Pages 😉 ... Ist auch echtes Java, genau wie ASP muss es zunächst vom Web-Server kompiliert werden.

Gruß

2.217 Beiträge seit 2003
vor 20 Jahren

mhhh jsp ist irgendwie auch nicht so mein fall, ich finde für php gibts irgendwie die geilsten sachen (vbulletin, wbb usw) aber um mal wiede aufs thema zurückzukommen, ich glaube ms hat da viel abgespickelt aber auch viel selbst entwickelt.

Viele Grüße
Alexander

F
108 Beiträge seit 2003
vor 20 Jahren

Gibts yield in Java oder C#? Das hat mir in Ruby schon gefallen! 🙂

www.mono-projekt.de - Die erste Deutschsprachige Mono-Community

P
939 Beiträge seit 2003
vor 20 Jahren

Ah, dann kommt diese Art des Iterierens wohl aus Ruby.

Bisher kenne ich yield in C# und Java nur als eine Methode der Thread-Klasse. Mit yield kann man "höfliche Threads" programmieren, die bei langwierigen, CPU-intensiven Aufgaben ab und zu mal die Ausführung an andere Threads abgeben. Besonders bei BSystemen ohne Zeitscheibe kann das notwendig werden. Bei C# spielt es also (noch) keine Rolle, da Windows Zeitscheiben unterstützt.

P
939 Beiträge seit 2003
vor 20 Jahren

Ich hab mir Ruby mal bisschen angeguckt. Da geht das Konzept mit den Iteratoren ja noch viel weiter. Was ich gesehen habe, scheint es eine moderne Sprache zu sein, mit allem dabei was man braucht. Was ich nicht so gut finde ist, dass die Sprache nicht stark typisiert ist. Ist aber bei den wenigsten Skripsprachen der Fall.

Das hier hab ich nicht ganz verstanden:

class SongList
  def [](key)
    if key.kind_of ? (Integer)
      result = @songs[key]
    else
      result = @songs.find { |aSong| key == aSong.name }
    end
    return result
  end
end

Also der def [] Block definiert wohl einen Indexer. Wenn key ein Integer ist, wird einfach das Element am Index zurückgegeben. Ansonsten wird was ...? Ist aSong ne Klasse? Sieht nicht so aus. Vielleicht ist es ja das Ergebnis, das an result zurückgegeben wird. Komme nicht ganz hinter.

Beim Schreiben dieses Textes bin ich dahinter gekommen. Find iteriert durch alle Elemente in der SongList und |aSong| benennt wohl das aktuelle Element, das bei Übereinstimmung, also wenn der Ausdruck key == aSong.name true ergibt, zurückgegeben wird.

In C# würde es so aussehen.

public class SongList {
    public Song this[int key] {
        return songs[key];
    }
    public Song this[string key] {
        foreach(Song aSong in songs) {
            if(aSong.name == key) return aSong;
        }
    }
}

Die Anzahl der Codezeilen stimmt überein. Gar nicht schlecht für C# wo es doch in Ruby irgendwie kompakter aussieht 😉 Ich hab keine result-Variable definiert .. naja.