.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).
|