Java 9 steht kurz vor der Einführung unter Beschuss

Die Community fordert von Oracle Nachbesserungen und eine Verschiebung der Auslieferung. Wir haben bei Schweizer Java-Experten nachgefragt.
 
Java-Statthalter Oracle verspricht am 27. Juli 2017 das nächste Release Java 9 zu veröffentlichen. Es handelt sich um das bisher unter dem Namen Jigsaw bekannte Modulsystem, das heute offiziell als Java Platform Module System (JPMS) bezeichnet wird.
 
Kürzlich wurde von Mitgliedern des Java Executive Committee in einem Blog-Beitrag allerdings kritisiert, das neue JPMS sei noch nicht reif genug, weshalb dessen Release verschoben werden sollte. 'Heise' fasst die Kritik so zusammen: Jigsaw habe zwar "erfolgreich bei der Modularisierung von Java selbst funktioniert, wäre aber in 'echten' Anwendungsszenarien weitgehend ungeprüft". Viele existierende Java-Anwendungen seien unter Jigsaw nicht möglich oder würden erhebliche Architekturanpassungen erfordern.
 
AdNovum: Auswirkungen für Stakeholder möglichst klein halten
Inside-it.ch hat bei Schweizer Java-Entwicklern nachgefragt. Bei AdNovum begrüsst man, dass Oracle "mit dem JPMS (Projekt Jigsaw) die Produktion massgeschneiderter kleinerer Java-Applikationen oder Microservices ermöglicht und gleichzeitig den Schutz interner APIs verbessert". Denn diese Mechanismen würden eine bessere Modularisierung von Enterprise-Applikationen bringen, so der stellvertrende AdNovum-CTO Marcel Vinzens. "Die Einführung von JPMS hat jedoch als fundamentaler Umbau einen grossen Einfluss auf das bestehende Ökosystem von Java-Libraries und -Applikationen". So hätten Tests im Hause mit Referenz-Projekten gezeigt, "dass Upgrades auf Java 9 doch einiges an Arbeit mit sich bringen. Es ist deshalb sicher hilfreich, die Auswirkungen für die betroffenen Stakeholder möglichst klein zu halten", fügt Vinzens an.
 
Käme der Release wie angekündigt auf Ende Juli, werde die Einführung von JPMS insbesondere für Tool-Entwickler und Anbieter von JEE-Containern nicht unerhebliche Herausforderungen bringen, so Vinzens weiter. Eine Gefahr sieht er, "wenn die Community den neuen Ansatz nicht akzeptiert" und "sich die Java-Community fragmentiert, was sich negativ auf das Gesamtökosystem auswirken würde". Deshalb empfiehlt AdNovum Massnahmen zur Rückwärtskompatibilität und geeignete Übergangsfristen für die Adaptierung der neuen Möglichkeiten zur Modularisierung: "Falls dies mit dem aktuellen Zeitplan nicht erreichbar ist, kann eine massvolle Verschiebung sinnvoll sein". Dies mit dem Gesamtziel, "eine möglichst grosse Akzeptanz durch die Java-Community zu erreichen", so Vinzens.
 
Trivadis: Es braucht Konsistenz und neue Funktionen
Auch bei Trivadis sieht man deutlich, dass die "Einführung von Java 9 eine Zäsur in der Java-Entwicklung" ist. Oracle habe sich in letzter Zeit denn auch bemüht, Java 9 und Jigsaw den Leuten auf Konferenzen und in Artikeln zu erklären und zu verkaufen, wie Andy Moncsek, Senior Consultant bei Trivadis, die Situation erklärt. Viele habe der Blogeintrag nun überrascht. Da die Kritiker seit einiger Zeit ruhig geworden zu sein schienen, müsse er "als eine Art Hilfeschrei" verstanden werden. Aber selbst im Trivadis-Team sei man sich nicht ganz einig, wie sinnvoll eine Verschiebung des Releases sei.

"Java muss sich gesund weiterentwickeln können", also brauche man einerseits Konsistenz und andererseits auch neue Funktionen. "Wenn wir jetzt Java 9 wesentlich verschieben, dann wird es unter Umständen noch sehr lange bis zu einem 'fertigen' Java 9 dauern", so Moncsek. Da einige der Vorschläge aus dem Blog durchaus richtig seien, sollte man aber gleichwohl überlegen was man bis Ende 2017 noch erreichen könne, schliesst sich der Java-Spezialist von Trivadis der Forderung von AdNovum nach einer "massvollen Verschiebung" an.
 
Allerdings, schiebt Moncsek nach, müsse man auch sehen, dass die angeführte Tabelle mit Funktionen, die Jigsaw nicht erfüllt, aber andere Systeme abdecken, zunächst wie ein Wunschkonzert der OSGI Alliance (früher Open Services Gateway Initiative) aussieht. Diese Diskussion habe es schon mal gegeben, sagt er. Man müsse "deutlich unterscheiden, welche Features sinnvoll gewesen wären (da sie zukünftige Entwicklungen erleichtert und verbessert hätten) und welche essentiell sind". Java lebe von seinem Ökosystem und den zahlreichen Bibliotheken und Frameworks, betont denn auch er. Wobei ihm durchaus klar ist, dass es in der jetzigen Form von Jigsaw in vielen Fällen schwer wird, diese auf Java 9 zu portieren. "Und auch für bestehende Applikationen kann es in einigen Fällen schwer werden, sie zu migrieren", fügt Moncsek an.
 
"Java 9 wird sicherlich viel ungewollte Arbeit generieren"
Dennoch glaubt der Trivadis-Mann nicht an eine Verschiebung des Releases wegen dem Blogpost: "Manche der Wünsche werden eventuell in Java 10 einfliessen, aber Jigsaw ist für mich gesetzt und alle zukünftigen Änderungen werden irgendwie kompatibel sein". Im Umkehrschluss würde eine Verschiebung bedeuten, dass man Jigsaw möglicherweise komplett überdenken müsse und bei Null anfange, warnt er. Klar sei, dass Java 9 sicherlich viel ungewollte Arbeit generieren werde. "Bei neuen Anwendungen sehe ich die Situation nicht so kritisch, allerdings wird es noch eine Weile dauern, bis wir 'sauber' modularisierte Anwendungen sehen werden", teilt er in einer Mail mit. Viele Eigenarten von Jigsaw wie anonyme oder open respektive closed Module verwässerten eine saubere Isolation, wird er konkret. Momentan befürchtet er aber vor allem, dass viele Frameworks und Bibliotheken nur langsam oder gar nicht auf Jigsaw umsteigen werden. Dieser Umstand werde vor allem bei späteren Java-Versionen zum Problem, da "Oracle sicher nicht für immer den Classpath-Modus unterstützen wird. An dieser Stelle wäre die gewünschte Module redefinition aus der Tabelle im Blog wünschenswert. Ich hoffe Oracle reagiert da rechtzeitig", so Moncsek.
 
Bei Trivadis schaut man aber bereits in die Zukunft: Der Release werde kommen und in Java 9 könne noch im Classpath-Modus gearbeitet werden, doch "soll dies in Java 10 nicht mehr funktionieren". Man habe also jetzt "grob sechs bis sieben Jahre Zeit – drei Jahre Support von Java 9 nach Erscheinen von Java 10 – uns auf Modularisierung einzustellen". Darum rät Moncsek "allen, die nächsten drei Jahre zu nutzen, um bestehende Applikationen zu modularisieren". (Volker Richert)