wegoptimiert

Editorial: Das Siechtum von Java

Als Apps noch Applets hießen
Von

1996 - das Internet, insbesondere dessen noch recht neue Spielart "World Wide Web" steckt gerade in einer stürmischen Entwicklung - erscheint die Version 2 des damals führenden Browsers Netscape. Besonderes Merkmal: Java. Damit ist es erstmals möglich, nicht nur statische Inhalte, sondern ganze Programme in einer Webseite einzubinden. Spielerische Animationen, interaktive Berechnungen, Lehrprogramme. Alles ist nun möglich, das Web lernt laufen.

Entsprechend groß war der Medienhype damals ob der neuen Möglichkeiten. Und Java war so schnell so wichtig geworden, dass selbst Microsoft gezwungen war, den Internet Explorer mehr oder weniger von Anfang an mit Java-Unterstützung auszuliefern.

Der nächste Coup dann 2001: Handyhersteller und Netzbetreiber setzen auf Download Games. Die Technik dahinter: J2ME, eine speziell für Handys abgespeckte Version des Java-2-Standards. Schon binnen kurzem gehörte J2ME zum Standard-Reportoire von Feature- und erst recht von Smartphones.

Dieser Siegeszug von Java ist dessen guten Eigenschaften geduldet: Modern, sauber definiert, betriebssystemunabhängig, mit einer für den Programmierer einfach nutzbaren Speicherverwaltung und vor allem sicher: Virtuelle Maschine und Sandbox trennen Applets vom Betriebssystem. Wenn eine Java-Anwendung Online-Verbindungen aufbauen oder Dateien lesen oder gar schreiben möchte, wird zunächst der User gefragt, ob er dieses wirklich zulassen möchte. Viren, Würmer und Trojaner haben so kaum eine Chance. Zwar hat Java einen gewissen Ressourcenhunger, doch gibt es auch hier deutlich schlimmere Programmiersprachen.

Plötzlich nicht mehr wichtig?

Doch dann kam das Apple iPhone ohne Flash und Java. Und während über Apples Entscheidung, das Flash-Plugin aus dem iPhone-Browser zu verbannen und sogar von Flash in die offizielle iPhone-Programmiersprache Objective C übersetzte Apps zu verbieten, in Medien und Community intensiv diskutiert wird, hört man kaum Kritik daran, dass auch Java außen vor ist.

Offensichtlich vermissen nur wenige iPhone-Nutzer die von früheren Handys gewohnten Java-Spiele. Ebenso scheinen nur wenige iPhone-Nutzer Webseiten mit Java-Anwendungen aufzurufen. Und Entwickler von Handy-Spielen scheinen sich damit abgefunden zu haben, dass ihre Games nicht mehr auf allen Geräten laufen, denn es gibt offensichtlich genügend Spiele-Entwickler für das iPhone und für J2ME. Anzahl der Suchanfragen bei google Anzahl der Suchanfragen bei google:
blau für "Java", rot für "C"
Grafik: Google
Es dürften einige der guten Eigenschaften von Java sein, die diesem zum Verhängnis werden: "betriebssystemunabhängig" ist closed-Shop-Anbietern wie Apple oder Microsoft ein Dorn im Auge. Microsoft bekämpfte Java anfangs dadurch, dass sie mit Windows eine inkompatible Java-VM auslieferten, bis ihnen das gerichtlich untersagt wurde. In der Folge entwickelte Microsoft dann C# als alternative Programmiersprache, die ebenfalls viele der guten Eigenschaften von Java enthält, aber näher an der Ausgangssprache C++ bleibt. Apple sperrt Java gleich ganz aus.

Eigene Fehler

Es dürften aber auch Fehler der Sprachentwickler selber sein, die den ganz großen Durchbruch von Java verhinderten. So ist die Betriebssystemunabhängigkeit fast heilig, es gibt keinen absichtlich inkompatiblen Modus, um systemnah zu programmieren, falls man es will oder muss. Zwar kann man System-Routinen in der Programmiersprache C einbinden, doch dann hat man immer ein in zwei Sprachen geschriebenes Konglomerat.

Auch die hohe Sicherheit von Java ist oft beim Programmieren im Weg. Applets fällt es schon schwer, lokalen Zustand zu sichern. Dabei gibt es bei größeren Anwendungen fast immer ein paar Einstellungen oder Ergebnisse (etwa der beste Punktewert des Nutzers bei einem Browser Game), die man für die Zukunft aufheben möchte.

Leider sind Applets bei Verwendung der Standard-Windows-Klasse AWT auch nicht vollkommen betriebssystemunabhängig. Vielmehr werden die Kontrollelemente und Fonts der Standard-Fenster-Umgebung verwendet, und da kann ein Applet, dass unter Windows perfekt aussieht, unter Linux schon mal zu breit werden, so dass es am Rand abgeschnitten wird. Mit Swing kam zwar recht schnell eine wirklich systemunabhängige Bibliothek, doch waren die zugehörigen Bibliotheken anfangs nicht in den Browser-Plugins enthalten, was die Swing-Applets wiederum sehr groß machte.

Ebenso war in der Vergangenheit die Implementation von Java sehr robust und stabil, was man aber von den zugehörigen Browser-Plugins leider nicht sagen konnte. Immer wieder kam es beim Zusammenspiel zwischen Browser und virtueller Maschine zu undefinierten Abstürzen. Auch fehlt bis heute eine einfache Möglichkeit, Applets vom Browser auf den Desktop zu ziehen, vom Applet zum App oder Widget. Dabei wäre Java doch aufgrund seiner Systemunabhängigkeit dafür geradezu prädestiniert.

Schließlich hat sich Sun viel zu spät zu dem Schritt durchgerungen, Java komplett unter einer Open-Source-Lizenz freizugeben. Zu lange hatte man gehofft, durch Java-Lösungen beispielsweise im embedded-Bereich gutes Geld verdienen zu können. Das rächt sich nun.

Wie reagiert Oracle?

Aber nicht nur Java entwickelte sich in den letzten Jahren schlecht. Auch Sun Microsystems, das Systemhaus, das die Sprache entwickelt hat, machte zunehmend schlechtere Geschäfte und wurde schließlich an den Datenbank-Riesen Oracle verkauft. Zwar bekennt sich Oracle zu Java, deren Kern-Geschäftsfeld sind aber Datenbanken und Unternehmens-Software. Und Oracle ist eines der ganz großen IT-Unternehmen, eher Konkurrent denn Partner von Betriebssystemherstellern für Desktops, Laptops und Smartphones. Das verbessert nicht gerade die Voraussetzungen für Java, doch noch zu einem plattformunabhängigen Standard zu werden.

Weitere Editorials