Entwickeln mit Java

Der große Streit um die Sprache für alles

05.09.1997

Von Fotis Jannidis*

Der handfeste Krach, der die beiden Kontrahenten nun beschäftigt, kündigte sich bereits auf der diesjährigen Entwicklerkonferenz "Java One" an: Microsoft erklärte, es werde Suns neue Java Foundation Classes (JVC) nicht mit der virtuellen Maschine im eigenen Software Developer Kit und Internet Explorer ausliefern.

Javasoft, eine Tochtergesellschaft von Sun und zuständig für Java, vertritt dagegen die Ansicht, daß alle Lizenznehmer auch das JFC, das Teil der "Core Classes" des Java Development Kit (JDK), Version 1.2, werden soll, mit ausliefern müssen. Macht Microsoft seine Drohung wahr, werden wohl die Gerichte entscheiden müssen.

Microsofts Java- oder auch Anti-Java-Strategie läßt sich auf die Formel bringen: proprietär erweitern und den Kern aushöhlen, um Anwender für die eigene Plattform zu gewinnen und Entscheider zu verunsichern. Proprietär erweitert wird der von Sun definierte Standard mit Windows-spezifischen Schnittstellen für die Anwendungsprogrammierung (APIs) wie "J/Direct", das Entwicklern den Zugriff auf die gesamte Win-32-API erlaubt.

Programme, die diese Klassen verwenden, sind an die Windows-Plattform gebunden, verlieren also einen der größten Vorzüge von Java, nämlich die Möglichkeit "write once, run everywhere". Doch würden diese Klassen wohl ohnehin nur für Windows-spezifische Problemlösungen Verwendung finden, die sonst in C++ oder in Delphi geschrieben worden wären.

Sehr viel problematischer für die Weiterentwicklung von Java ist der Umstand, daß der Softwaregigant aus Redmond nicht alle APIs des JDK 1.1 auf seiner virtuellen Maschine unterstützen will. Besonders umstritten ist die Ankündigung, die Java Foundation Classes, mit denen GUIs programmiert werden, nicht zu unterstützen. Microsoft teilte mit, nur das eigene Produkt, die Application Foundation Classes, auszuliefern, denen Ende des Jahres dann eine Enterprise AFC folgen soll, wiederum ein Konkurrenzprodukt zur Enterprise API von Sun.

Ein überraschender Schachzug von Microsoft hat die Diskussion nun erneut angeheizt. Der Softwareriese hat für 150 Millionen Dollar Aktien von Apple gekauft, dem einzigen nennenswerten Konkurrenten im Bereich Desktop-Computer. Beobachter glauben, daß die Firma aus Redmond damit mehrere Ziele verfolgt: Zum einen soll das amerikanische Justizministerium von einer Anwendung der Anti-Trust-Gesetze abgehalten werden, obwohl dazu auch so durchaus Anlaß bestünde.

"Plattformübergreifend" - aus der Traum?

Zum anderen konnte Microsoft durch die Finanzspritze und vor allem die Zusage an Apple, daß das MS-Office-Paket auch weiterhin für die Konkurrenzplattform erscheinen wird, Netscape als Lieferant des Standard-Browsers für den Macintosh verdrängen. Prompt entstanden Spekulationen darüber, ob Microsoft auch die Referenzimplementierung der virtuellen Maschine auf dem Macintosh liefern wird, was die Aussichten auf plattformübergreifendes Programmieren sehr verdüstern würde.

Auf jeden Fall aber wird mit der virtuellen Maschine im Internet Explorer (IE) die Java-Auffassung von Microsoft auf nahezu allen Desktop-Computern präsent sein, da der IE in der nächsten Windows-Version Teil des Desktops sein wird. Andere Beobachter glauben dagegen, daß sich Microsoft mit dem Versuch, seine JVM ohne alle Klassen des JDK 1.1 zu verteilen, selbst schaden würde. Denn Netscape wäre plötzlich mit dem schlagenden Marketing-Argument versehen, als einziger großer Browser-Hersteller eine brauchbare Implementatierung der neuesten Java-Generation zu besitzen.

Daß Microsoft eine sehr eigene Auffassung von offenen Standards hat, zeigt sich bereits bei der Dokumentation zur MS-API J/Direct. Sie ist zwar im Internet-Standard HTML verfaßt, läßt sich aber - wohl aufgrund von IE-eigenen Erweiterungen - nicht mit Netscapes Browser lesen.

Nach der Eskalation der Auseinandersetzung mit Microsoft hat Sun neue Wege des Vertriebs von Java auf Windows-Rechner angekündigt. Außerdem soll das neue Produkt "Webtop", das unter Windows laufen soll, den Anwendern eine neutrale Client-Server-Umgebung bieten.

Anfangs galt als die besondere Stärke von Java, mit einem Internet-Browser den Zugriff auf beliebige Legacy-Systeme zu ermöglichen. Es folgte die Planung von Network Computern (NCs), die die Kosten für Pflege und Wartung von Rechnern deutlich senken sollten. Inzwischen sind bei Sun und IBM erste Modelle erschienen, allerdings noch nicht mit speziellen Java-Prozessoren. Microsoft hat seinem ersten Vorschlag des Net PCs nun ein weiteres Konzept folgen lassen, das als Konkurrenz zu den NCs gedacht ist: die "Windows-based Terminals" (WBT) mit Windows CE als Betriebssystem.

Neue Anwendungsbereiche für Java werden durch Servlets, also Java-Applets, die auf dem Server laufen, durch die Embedded-Java- und die Personal-Java-API erschlossen, die der Programmierung elektronischer Geräte aller Art dienen sollen. Allerdings glauben Insider, daß die erste Version von Embedded Java, die bald erscheinen soll, den Anforderungen von zeitkritischen Systemen noch nicht gerecht wird.

Ein futuristisches Projekt namens Java Spaces

Erst in Planung befindet sich eine neue Technologie mit dem Titel "Java Spaces". Sie soll ein im Netz verteiltes Betriebssystem erzeugen, das sich beliebig skalieren läßt und jedes Java-System vom elektronischen Kleingerät bis zum Server von Fragen nach dem physikalischen Speicherort von Daten und der tatsächlich verwendeten CPU befreien würde. Java Spaces konkurriert mit ähnlichen Projekten unter anderem von Microsoft ("Millennium").

Das aktuelle Motto auf dem Weg zum Ideal wiederverwertbarer Software heißt "Komponententechnologie". Dem Microsoft-Entwurf Active X steht die Spezifikation der Javabeans gegenüber (siehe Kasten). Ziel ist es, Applikationen aus Fertigbausteinen, eben den Javabeans, zusammensetzen zu können.

Die Javabeans-Spezifikation liegt seit Dezember 1996 vor, wenig später folgte die Beanbox von Sun, die einfache Kombinationen von Beans erlaubt. Inzwischen sind bereits zahlreiche Komponenten zu haben, Lotus will beispielsweise Elemente von Notes als Javabeans zugänglich machen, damit sich diese nicht nur im Lotus-Client, sondern in jedem Web-Browser verwenden lassen. Die neueren IDEs, zum Beispiel IBMs "Visual Age for Java", unterstützen bereits die Erstellung von Beans.

Sun hat außerdem die Spezifikation der nächten Generation von Javabeans ("Glasgow") zugänglich gemacht, die sowohl der engeren Integration von Javabeans in andere Beans als auch in die jeweilige Arbeitsplattform dienen. Zu den angekündigten Neuerungen gehören Drag and drop zwischen Beans und nativen Programmen, automatisierte Dienste zwischen Beans und Typenerkennung neuer Daten. Eine von Lotus entwickelte API namens Infobus für die Kommunikation zwischen Beans und Applets hat Sun ebenfalls in die Javabeans-Architektur aufgenommen.

Den Sprung vom Web-Schmuck zur Programmiersprache der Wahl für Geschäftstransaktionen will Sun durch die Einführung zahlreicher neuer APIs ermöglichen (siehe Kasten). Ein wesentlicher Schritt wurde bereits mit der Datenbank-Schnittstelle JDBC und der mitgelieferten JDBC-ODBC-Bridge getan, da mit einem Schlag alle ODBC zugänglichen Datenbanken mit Java ansprechbar waren.

Dazu kommen APIs, die die Zusammenarbeit von Java-Programmen im Netz sowie die Interaktion in heterogenen Netzwerken mittels Corba ermöglichen. Suns Schnittstelle Remote Method Invocation (RMI) zur Java-Java-Kommunikation in Netzwerken soll im JDK 1.2, das im dritten oder vierten Quartal dieses Jahres zu erwarten ist, Teil der Java Interface Definition Language (IDL) werden.

Außerdem wird durch eine Zusammenarbeit von Javasoft und der Object Management Group (OMG) die Funktionalität der RMI in das Internet Inter-ORB Protocol (IIOP) integriert werden, das Teil der Corba-Architektur der OMG ist. Diese Politik vermeidet eine Konkurrenz zwischen dem proprietären RMI und dem offenen Standard der OMG, der die Anti-Microsoft-Front zu zersplittern drohte.

Weitere Programmier-Schnittstellen für Internet-Transaktionen, Messaging-Systeme und Multimedia-Verarbeitung sowie eine Management-API zur Verwaltung von Netzen wurden entweder schon in den letzten Monaten veröffentlicht oder sollen bis Ende des Jahres bereitstehen. Die Enterprise Javabeans, deren Entwurf bis zum Ende des Jahres abgeschlossen sein wird, sollen außerdem die Entwickler von der Komplexität des Arbeitens in heterogenen Netzwerken abschirmen und Schnittstellen zu etablierten Transaktionssystemen offerieren.

In einer Umfrage in rund 270 größeren Firmen über die Verwendung von Java haben 43 Prozent der Befragten Javas Ausführungsgeschwindigkeit ein wesentliches Problem der Sprache genannt. Da bei Java ein Interpreter Klassen, die im Byte-Code vorliegen, während der Ausführung übersetzt, liegt die Geschwindigkeit von Java zur Zeit deutlich unter der von kompilierten Programmen.

Eine inzwischen verbreitete Technik zur Beschleunigung von Java-Code ist die Verwendung von Just-in-Time-(JIT-)Compilern, die im besten Fall eine Geschwindigkeitssteigerung um den Faktor zehn bringen. Eine neue Implementierung der virtuellen Maschine mittels der Hotspot-Technik, die Sun durch den Kauf der Firma Lonview Technologies erworben hat, soll die Geschwindigkeit von C++-Code bringen. Eine erste Betaversion wird im Herbst dieses Jahres erwartet, eine mit C++ vergleichbare Geschwindigkeit dürfte wohl aber erst im Frühjahr 1998 realistisch sein.

Sun will aus Java einen offenen Standard machen, ohne dabei die lukrativen Rechte an dem erfolgreichen Produkt zu verlieren. So machte die Firma einen ersten Vorstoß bei der internationalen Standardisierungkommission ISO/IEC und beantragte den Status "Publicly Available Submitter" (PAS). Damit wäre die Firma jene Instanz, die alle Vorschläge zur Verbesserung und Weiterentwicklung des Standards entgegennimmt und zur Verabschiedung einem ISO/IEC-Komitee vorlegt.

Sun wäre das erste Unternehmen, das diesen Status erhielte, den bislang nur nichtkommerzielle Grupperierungen bekommen haben, darunter auch einige Firmenkonsortien. Der Antrag ist allerdings in der ersten Abstimmungsrunde gescheitert.

Als problematisch hat das Standardisierungskomitee eine Reihe von Punkten angesehen: Wie große und welche der Javatechnologie sollen tatsächlich Teil des Standards werden? Würde Sun den Standard wirklich offen für alle Vorschläge halten? Wie würde die Weiterentwicklung von Java vor sich gehen? Außerdem soll "Java" nach dem Sun-Vorschlag eine geschützte Bezeichnung bleiben, was einige im Komitee vertretene Firmen ändern möchten.

Sun hat nach dem negativen Ergebnis nun innerhalb von 60 Tagen die Möglichkeit, auf diese negativen Kommentare zu reagieren. Die Frist läuft am 9. September aus, dann werden innerhalb von 45 Tagen die Antworten der ISO-Mitglieder erwartet.

Eines kann man nach zwei Jahren des Kampfes um Java bereits sagen: Wurde anfangs immer wieder bezweifelt, ob die Konzepte einer virtuellen Maschine und eines Netzwerk-Computers überhaupt praktikabel sind, so haben zahlreiche neue Entwicklungen und nicht zuletzt Microsofts heftige Reaktionen inzwischen den "Proof of concept" geliefert.

Active X versus JavabeansDer entscheidende Unterschied zwischen den beiden Komponententechnologien Active X und Javabeans läßt sich auf die Formel bringen: Active X ist sprachunabhängig, da die Komponenten beispielsweise in C++ oder Visual Basic programmiert werden können, und plattformabhängig, während Javabeans zwar sprachabhängig, aber dafür - wie Java insgesamt - unabhängig von der Plattform sind.

Zwar hat Microsoft eine Portierung von Active X auf andere Nicht-Windows-Plattformen angekündigt, aber diese Ankündigung sehen Beobachter mit Skepsis. Das zielt nicht nur auf den Vorwurf der "Vaporware", sondern auch auf technische Probleme.

Active-X-Komponenten müssen nämlich ihre Type-Library in der Windows-Registry eintragen, die lediglich unter Windows zur Verfügung steht. Javabeans laufen dagegen in jeder virtuellen Maschine, da sie aus normalen Java-Klassen bestehen, die in dem Kompressions- und Archivformat JAR gespeichert sind und bestimmten Designanforderungen entsprechen.

Da es bereits zahlreiche Active X Controls gibt, Javabeans aber eine sehr neue Technologie ist, bietet Sun Migrations- und Kooperationspfade an. In Zusammenarbeit mit Taligent entstanden ein "Migration Assistant", der Active-X-Komponenten in Javabeans konvertiert, und eine "Bridge for Active X", die den Zugriff auf eine Javabeans in einem COM/OLE/Active X Container ermöglicht.

*Fotis Jannidis ist freier Autor in München.