Nicolas Guillet: J#.Net oder das Pokergame zwischen Microsoft und Sun
Artikel erschienen in Swiss IT Magazine 2001/39
Paradox, aber wahr: Ausgerechnet Java eignet sich mit seinen zu C++ abwärtskompatiblen Eigenschaften für den Einsatz in .Net am besten. So erstaunt es nicht, dass nun Java in Visual Studio.Net integriert wurde.
Anstatt Java sauber und sinnvoll in Visual Studio.Net einzufügen, haben die Microsoft-Entwickler vermutlich nur gerade den C#-Compiler-Quellcode kopiert und an die Java-Syntax angepasst. Letztere gleicht derjenigen von C# auffallend. Der Aufwand von Microsoft dürfte kaum mehr als zwei bis drei Wochen beansprucht haben.
Wie alle .Net-Sprachen verwendet J# keine VM, sondern generiert IL-Code, der dann in nativen Maschinencode umgewandelt wird. Dabei gehen allerdings die grössten Vorteile von
Java verloren: Dazu gehört insbesondere die Plattformunabhängigkeit. J#-Programme laufen nur dort, wo auch die .Net CLI (Common Language Infrastructure) vorhanden ist, und das ist im Moment nur in neueren Windows-Versionen gegeben. Ausserdem hält sich J#.Net nicht an etablierte Java-Standards: Dass JNI und RMI nicht unterstützt werden, ist sogar offiziell. So muss man sich fragen, wie viele Klassen fehlen, die für Java-Entwickler selbstverständlich sind und auch nötig wären, um eine Portierung zwischen J# und Java durchzuführen.
Ein weiteres Problem hat seine Ursache mindestens zum Teil in juristischen Streitereien: Die von J# verwendete Java-Version ist nicht die aktuellste. Wenn sich an den Verträgen zwischen Sun und Microsoft nichts ändert, dürfte J# noch lange Zeit auf derselben alten Java-Version aufbauen. Nicht gerade rosige Aussichten für potentielle J#-Entwickler. Wegen dem ambivalenten Verhältnis von Microsoft zu Java und Sun könnte J# durchaus dasselbe sang- und klanglose Aus blühen wie Microsofts J++.
Ich sehe im Moment keinen einzigen Grund, J# einzusetzen: Ausser man ist vernarrt in die Java-Syntax und ist gezwungen, .Net zu verwenden. Das von Microsoft ins Feld geführte Argument, dass Quellcode einfacher zwischen Java und .Net ausgetauscht werden kann, ist allzu fadenscheinig.
Bleibt die Frage, warum Microsoft überhaupt J# lanciert hat. Ist es die Angst vor Java und Sun? Für diese These spräche die Microsoft-Ankündigung, die Java-Datenbankanbindung JDBC für den SQL Server direkt zu unterstützen. Allerdings irritiert die Meldung, dass Microsoft gemäss Vertrag mit Sun keine neuen VM-Versionen mehr ausliefern dürfe.
Doch was für ein Interesse könnte Sun daran haben und wer profitierte davon, wenn die Java-VM nicht mehr im meistverbreiteten Browser und in der jüngsten Windows-Version verfügbar wäre? Will Sun gar Microsoft als Sündenbock hinstellen? Damit hätte aber Sun den zukünftigen Erfolg von Java im Browser etwas gar zu leichtfertig aufs Spiel gesetzt.
Andererseits ist J#.Net ein fast unfairer Versuch, Java das Wasser abzugraben und durch juristische Spitzfindigkeiten die Lizenzvereinbarungen und damit die Java-Kompatibilitätstests von Sun zu umgehen. Die Marktforscher der Gartner Group schätzen, dass bis 2004 nur gerade fünf Prozent der Java-Entwicklungen mit J# gemacht werden. Ich bin dagegen noch weniger optimistisch.