| |
- 6 -
Doch dadurch entstehen auch zusätzliche Probleme: So muß in Programmiersprachen,
die eigentlich keine Objektorientierung unterstützen (z. B. Visual Basic), diese nach-
träglich integriert werden. Dass dieses gewisse Probleme mit sich bringt, sollte eigent-
lich klar sein. So schreibt beispielsweise auch JÖRN LOVISCACH ET. AL. [4], dass sich
kaum ein bestehendes Visual-Basic-Programm unverändert mit dem neuen Compiler
übersetzen lässt.
Schematisch lässt sich die Technik der .NET-Laufzeitumgebung folgendermaßen dar-
stellen:
Quelle: ct 4/2002, Seite 94
Abb. 1:
Übersicht über die Laufzeitumgebung von .NET
Weiterhin steht Microsoft im Kreuzfeuer der Kritik, dass zunächst die Plattformunab-
hängigkeit und Nutzung offener Standards in großem Zuge propagiert wurde, Microsoft
aber die Spezifikation der CLI nicht offen legt bzw. offen legen wollte, um so die Kon-
kurrenz daran zu hindern, ihre Produkte an die CLI anzupassen und somit dem Entwick-
ler den Zugriff auf andere .NET-konforme Komponenten mittels ihres eigenen Produk-
tes zu ermöglichen. Mittlerweile hat Microsoft jedoch auf die Vorwürfe reagiert und die
Spezifikation der CLI offengelegt3
Ein weiterer Unterschied besteht im Ausführungsverhalten. Bei Java wird der ByteCode
wahlweise während der Ausführung Anweisung für Anweisung interpretiert oder wäh-
rend der Laufzeit des Programms die benötigten Klassen zunächst in Maschinencode
compiliert und dann ausgeführt. Bei letzterem Verfahren spricht man auch von einer
Just-in-time-Compilierung (JIT). Obgleich durch das JIT-Compilieren die Zeit bis zur
Ausführung der ersten Anweisung natürlich länger ist, erhöht sich jedoch die Ausfüh-
rungsgeschwindigkeit erheblich, da hier eine Codeoptimierung möglich ist. Aus diesem
Grunde dürfte Microsoft auch wohl auf die Möglichkeit des ByteCode interpretieren
verzichtet haben, denn bei .NET wird ausschließlich ein JIT-Compiler verwendet.
3
Siehe auch: http://www.heise.de/newsticker/data/kav-27.03.02-000/
C#-
Quellcode
VB.NET-
Quellcode
Anderer
Quellcode
C#-
Compiler
VB.NET-
Compiler
Weitere
Compiler
MSIL
JIT-
Compiler
Ausführba-
rer Code
Entwicklung
Laufzeit
|  |
|
| |
|
|