Was die Community über ein Java 8 ohne Jigsaw denkt: Licht am Ende des Tunnels?

Hartmut Schlosser

„Ich möchte wirklich ein neues Date/Time API, und ich denke, dass Lambdas die Ausdrucksmöglichkeiten mit Java dramatisch verbessern werden. Deshalb freue ich mich auf ein Java 8 auch ohne Modularität.“ So beschreibt Dustin Marx seine Gemütslage, nachdem Mark Reinhold gestern die Bombe platzen ließ und empfahl, das für Java 8 geplante Modulsystem auf Java 9 zu verschieben.

Bei dieser Empfehlung von Oracles Java-Chefregisseur Reinhold handelt es sich zwar formal nur um einen Vorschlag, der der Java-8-Expertengruppe unterbreitet wird. Dennoch ist die überraschende Klarheit der Aussage als Schlussstrich unter die Bemühungen in Projekt Jigsaw zu bewerten, ein Modulsystem für Java 8 auf die Beine zu stellen.

Jigsaw ist einer von historisch mehreren Anläufen – zunächst unter der Regie von Sun, dann unter der Oracle-Ägide -, der „Jar-Hölle“ des Fehler-anfälligen Classpath-Mechanismus in Java zu entkommen. Eine modulare Java-Plattform würde zudem freie Zusammenstellungen von benötigten Plattform-Komponenten erlauben, um flexibel verschiedene Usecases abzudecken – von großen Server-Anwendungen bis hin zu leichtgewichtigen Embedded-Systemen. Ein Modulsystem könnte so auch die Trennung zwischen der Java Micro Edition und der Standard Edition überflüssig machen – die geplante Konvergenz dieser beiden Editions wird aufgrund der Jigsaw-Verschiebung also ebenfalls noch auf sich warten lassen.

Trotz einiger Fortschritte in Jigsaw und einer vorliegenden Prototypen-Implementierung sieht Mark Reinhold wohl vor allem das Problem der Rückwärtskompatibilität ungelöst. Kompatibilität zu existierendem Code aufrechtzuerhalten sei eine unglaublich delikate Aufgabe, die sorgfältige Veränderungen in Spezifikation und Implementierung verlange, schreibt Reinhold. Zudem liege noch kein Entwurf, geschweige denn ein Prototyp für die Unterstützung verschiedener Container wie IDEs, Java EE Applikationsserver und Applets vor, die allesamt eine gewisse reflektive Dynamik benötigten.

Nun sieht die Timeline für Java 8 aber vor, dass die Arbeiten an großen Features bis Mai 2013 abgeschlossen sein sollen. Und davon sei man in Jigsaw noch weit entfernt, meint Reinhold. Was Reinhold dann sagt, scheint allerdings darauf hinzudeuten, dass er weiterhin an Jigsaw festhalten will:

We’re reasonably confident that we can work through these issues, but doing so will most likely take us past May 2013.

Reinholds Einschätzung nach würde eine Fertigstellung von Jigsaw den Release-Prozess um ein ganzes Jahr verschieben: auf ein Java-8-Release Mitte 2014. Er empfiehlt deshalb, nicht auf den nachzügelnden Passagier Jigsaw zu warten, sondern den Java-8-Release-Train wie geplant im Sommer 2013 einlaufen zu lassen. Jigsaw würde sich dann eine neue Fahrkarte für den Java-9-Zug verdienen müssen – geplante Ankunftszeit: Mitte 2015.

Es ist davon auszugehen, dass die Experten-Gruppe die Situation ähnlich bewerten und ebenfalls die Alternative verwerfen wird, das Release-Datum für Java 8 zu verschieben. Und so muss sich die Community eben mit dem Gedanken anfreunden, dass eines der beiden geplanten großen Features für Java 8 nicht kommen wird.

Besser sieht es hingegen mit dem zweiten großen Feature „Project Lambda“ aus. Die Spezifizierung der Lambda-Ausdrücke, die etwa die aus dem Kontext funktionaler Programmiersprachen bekannten Closures ermöglichen, ist bereits fortgeschritten und jetzt schon in einem Release-nahen Zustand. Dazu gesellen sich in Java 8 das lang ersehnte Date/Time API (JSR 310), Type Annotations (JSR 308) und weitere kleine Verbesserungen, die auf einer OpenJDK-Seite gesammelt werden.

Die Reaktionen der Community auf Reinholds Vorschlag fallen erwartungsgemäß heftig aus. So ist schlicht Ärger in dem Statement von Groovy-Chefentwickler Guillaume Laforge herauszuhören: Man habe sich in Groovy 2 absichtlich zurückgehalten, selbst ein Modulsystem zu implementieren, um Projekt Jigsaw nicht zu duplizieren. Jigsaw scheine sich zudem zu einem Art Mythos zu entwickeln:

We didn’t go too far with modularity in Groovy 2… because we didn’t want to duplicate what was supposed to be coming in Java 8.

But now, it means it won’t be in the hands of developers before 2 years, and in production before 3 years 🙁

It means that Jigsaw, if it ever ships, will have been 5+ years in the making. That sounds a lot, even for such a big feature and task.
Guillaume Laforge

Aber vielleicht findet auch sein Vorschlag Gehör, ein Zwischenrelease einzuschieben?

For example if Jigsaw is 6 months late, ship JDK 8.5 or whatever. Guillaume Laforge

Andere sehen mit dem weiteren Innovationsstau bei Java den Zeitpunkt gekommen, auf eine andere JVM-Sprache zu setzen:

Das könnte ein weiterer Grund sein, sich nach Alternativen umzusehen. Warum nicht Ceylon? Die haben ein Modul-System. Simon Martinelli

Aus dem OSGi-Lager kommt indes Verständnis für Reinholds Empfehlung – überraschender Weise möchte man sagen, wurde OSGi doch in der Vergangenheit selbst als Modularisierungstechnologie für Java vorgeschlagen, von Sun seinerzeit aber als „zu schwergewichtig“ zurückgewiesen. Modularität sei eine komplexe Angelegenheit, die man nicht im Schnelldurchgang haben könne, schreibt David Bosschaert. Aus den 12 Jahren, in denen OSGi bereits als produktive Modul-Lösung eingesetzt werde, solle indes die ein oder andere Lektion gezogen werden.

OSGi has been providing modularity to Java for over 12 years now and there are a lot of lessons to be learnt from it. David Bosschaert

Anzunehmen ist tatsächlich, dass OSGi nun wieder stärker in den Fokus rückt – genauer die Arbeiten im OpenJDK-Projekt Penrose, in dem Jigsaw mit OSGi in Einklang gebracht werden soll. Jedenfalls bringt sich Bosschaert mit seinem Abschluss-Statement als Teilnehmer einer „demokratischen“ Diskussion ins Spiel:

It’s good that the Modularity JSR will get some proper time now. I hope the process will be democratic and that the result will provide the best technology possible that keeps extensibility in mind. David Bosschaert

Oder man hält es so wie den eingangs erwähnten Dustin Marx, der über die erneute Verschiebung zwar enttäuscht ist, sich deshalb aber nicht die Freude an Java 8 verderben lässt. Ähnlich denken übrigens auch viele von Ihnen. Bisher haben in unserem aktuellen Quickvote zur Sache 22 Prozent für die Option gestimmt:

  • Das Verschieben eines Modulsystems auf Java 9 ist zwar ärgerlich, aber angesichts der Situation im Projekt Jigsaw der einzig gangbare Weg.

Für 23 Prozent ist die Verschiebung kein Grund, sich aufzuregen:

  • Mich stört eine Verschiebung nicht. Java 8 ist auch ohne Modulsystem ein wichtiges Release.

Wie immer Ihre eigene Bewertung auch ausfallen mag. Der Glauben an die Innovationsfähigkeit der Java-Plattfrom hat mit der gestrigen Empfehlung von Mark Reinhold gelitten. Hoffen wir, dass die Offenheit, mit der diese Empfehlung ausgesprochen wurde, ein Zeichen dafür ist, dass für Lösung des Modularisierungsproblems nun alle Optionen in Erwägung gezogen werden. Schließlich muss die Frage neu geklärt werden, ob man sich mit Jigsaw vielleicht doch verrannt hat, bzw. ob die erneut zugestandene Zeit wirklich zu einem brauchbaren Modulsystem führen wird.

Kommt da wirklich Licht am Ende des Tunnels?

Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.