Home   Cover Cover Cover Cover
 

.NET versus Java

Frage: Welche Merkmale des .NET-Frameworks ähneln denen der Java-Umgebung? Welche .NET-Merkmale werden von Java nicht unterstützt?

Antwort:

  • Sowohl das .NET-Framework als auch Java basieren auf einer virtuellen Maschine, die eine Reihe von Diensten zum eigentlichen Betriebssystem hinzufügt. In beiden Systemen werden Programme in die Sprache dieser virtuellen Maschine übersetzt. Während jedoch Java-Bytecodes in der Regel interpretiert werden (nur die am häufigsten ausgeführten Teile werden just-in-time in Maschinensprache übersetzt), werden .NET-Programme vor dem Laden immer just-in-time in Maschinencode übersetzt. Es gibt in .NET keinen Interpreter.


  • Beide Systeme benutzen einen Garbage Collector um unbenutzte Objekte automatisch wieder einzusammeln.


  • Beide Systeme haben ähnliche Sicherheitsmechanismen (z.B. einen Verifizierer, codebezogene Zugriffsrechte, usw.). Das Sicherheitsmodell von .NET ist jedoch feinkörniger, d.h. es erlaubt die Definition von Sicherheitsstrategien auf verschiedenen Stufen (Enterprise, Machine, User und Allication Domain).


  • Die Sprache C# ist (so wie alle .NET-Sprachen) ähnlich zu Java. C# bietet Objektorientierung mit einfacher Vererbung, Interfaces, Threads, Ausnahmebehandlung, etc. C# und Java sind auch syntaktisch sehr ähnlich. C# hat allerdings eineige zusätzliche Sprachkonstrukte wie Properties, Indexer, Events, Delegate, Structs und Referenzparameter.


  • Versionierung ist ein Merkmal, das es in Java nicht gibt. Eine Klassendatei in Java wird ausschließlich über ihren Namen identifiziert. Es ist nicht möglich, mehrere Klassendateien mit demselben Namen aber unterschiedlicher Versionsnummer im gleichen Verzeichnis oder im Hauptspeicher zu haben.


  • Außerdem unterstützt die Java-Umgebung keine Interoperabilität zwischen verschiedenen Programmiersprachen. Obwohl es im Prinzip möglich ist, andere Sprachen als Java in Bytecodes zu übersetzen, sind Java-Bytecodes dafür nicht geeignet. Sie unterstützen keine Merkmale, die in Java nicht vorkommen (z.B. Referenzparameter). Das macht es schwer (wenn nicht gar unmöglich), beliebige Sprachen in Bytecodes zu übersetzen.


  • Auf der anderen Seite ist Plattformunabhängigkeit kein Primärziel von .NET, obwohl es im Prinzip möglich ist, .NET auf anderen Betriebssystemen als Windows zu implementieren (siehe www.mono-project.com).