Oracle beantwortet Fragen zur Jigsaw-Verschiebung

Hartmut Schlosser

Die Modularisierung der Java-Plattform war eines der großen Projekte für das nächste Java-Release 8. Vor gut einem Monat hatte Oracles Java-Chefingenieur Mark Reinhold indes vorgeschlagen, Jigsaw auf das übernächste Java-Release 9 zu verschieben (Datum: 2015), womit er eine Diskussion entfachte, in der viele Fragen offen geblieben sind. Jetzt hat Reinhold ein Q & A veröffentlicht, mit der Absicht, ein wenig Licht ins Dunkel zu bringen.

Reinhold stellt zunächst klar, dass es sich bei der Verschiebung von Jigsaw um einen Vorschlag handelt, der der Java-SE-8-Expertengruppe unterbreitet wurde. In diesem Kreis wurde eine finale Entscheidung noch nicht getroffen – diese wird aber im Laufe des nächsten Monats erwartet.

Einblicke gibt Reinhold dann in die Interna des Jigsaw-Projektes. Gestartet 2008 unter Sun, sei das Projekt wie so manches andere in den letzten Jahren vor Suns Übernahme durch Oracle nur unzureichend personell besetzt gewesen. Nach der Übernahme lag die Arbeit eine Zeit lang still, bis sich etwa vor einem Jahr erst ein technisches Team ernsthaft um die Realisierung bemühte (nach der sorgfältigen Evaluierung von Alternativen, sagt Reinhold).

Neben diesen personellen Gegebenheiten liegt es aber auch an der schieren technischen Schwierigkeit der Modularisierung des JDK, dass das Projekt bis jetzt keine finale Lösung vorlegen kann.

Reinhold beschreibt zwei Hauptprobleme. Einerseits weise die JDK-Codebasis auf API- und Implementationsebene starke interne Abhängigkeiten auf. Die erste Aufgabe besteht also darin, die Abhängigkeiten abzubauen, um eine Anzahl unabhängiger Module bereitzustellen. Viel Arbeit sei bereits in dieses Problem investiert worden, allerdings seien einige besonders schwierige Fälle noch nicht gelöst.

Andererseits sei eine Hauptpriorität in Jigsaw die Kompatibilität zu älteren JDK-Releases, sowohl für existierende Klassenpfad-basierte Anwendungen, als auch für Modul-basierte Anwendungen. Reinhold hatte schon in einem früheren Blogbeitrag kommentiert, dass man die Kompatibilitätsfrage äußerst delikat behandeln müsse und er nicht sicher sei, ob die Zeit zum Testen bis zum Java-8-Release Ende 2013 dafür ausreiche.

Reinholds Geschichtsstunde macht auch klar, dass der ursprüngliche Fokus von Jigsaw, das JDK zu modularisieren, später auf die gesamte Java SE Plattform ausgedehnt wurde. Jigsaw soll nun auch ein Standard-Modulsystem für das Bauen von Bibliotheken und Anwendungen bereitstellen. Diese Erweiterung des Fokus wurde in den letzten Tagen von einigen Community-Vertretern kritisiert, mit dem Argument, dass man hier mit der einen Jigsaw-Klappe womöglich zwei recht unterschiedliche Probleme erschlagen möchte.

Dass Reinhold dennoch hinter Jigsaw steht, zeigt er in seiner positiven Status-Beschreibung. Große Fortschritte seien schon erzielt worden. Ein Großteil der Kernfunktionalität des Modulsystems liege bereits vor, sowohl auf Compile- als auch auf Runtime-Niveau. Die Java-Sprache selbst wurde hierbei durch Modul-Deklarationen erweitert, eine Struktur für modulare Quellcode-Bäume mit korrespondierenden kompilierten Klassenbäumen erarbeitet und im javac implementiert. Zudem stehe ein effizientes Modul-Dateiensystem, die nötigen modularen JVM-Erweiterungen, ein vorläufiges API sowie ein erster Schnitt des JDK und Java SE API in ein kohärentes Set von Modulen bereit. Derzeit arbeite man an der Refaktorisierung des java.util.ServiceLoader API, um modulare Services zu unterstützen.

Den Schrei der Community nach Alternativen weist Reinhold zurück. Maven könne zwar als Modulsystem zur Build-Zeit betrachtet werden. Modularität zur Laufzeit ist damit aber nicht zu haben. Die andere, immer wieder ins Spiel gebrachte Lösung OSGi sei hingegen ein dynamisches Komponentensystem zur Laufzeit, beinhalte aber zugleich auch ein Lifecycle-Modell und eine dynamische Service Registry. Diese seien zwar für bestimmte Arten von ausgefeilten Java-Anwendungen vonnutzen, doch nicht unbedingt für eine allgemein gültige Standardisierung der Java-SE-Plattform.

Interessant ist die Antwort auf die Frage, warum Jigsaw nicht in einem 8.5 Release nachgeschoben werden kann. Warum sollte die Community bis 2015 auf Jigsaw in Java 9 warten, wenn es doch womöglich schon 2014 fertiggestellt werden könnte?

Reinholds Antwort: Zwar arbeiteten heute viel mehr Entwickler am JDK als früher – sowohl aus den Reihen Oracles als auch der OpenJDK Community. Selbst kollektiv habe man indes nicht die Kraft, ein großes JDK-Release samt langfristigem Support häufiger als alle 2 Jahre zu veröffentlichen. Auf jeden Kommentar, die Release-Frequenz zu erhöhen, komme zudem eine genau entgegengesetze Meinungsäußerung, den Release-Zyklus zu verlangsamen, damit kritische Anwendungen vernünftige Migrationsfenster erhielten.

Mark Reinholds Q & A bietet weitere Einblicke in das Projekt Jigsaw, beispielsweise zum Verhältnis zwischen Jigsaw und dem Java Platform Module System JSR. Insgesamt kann das Q & A als Rechtfertigung gelesen werden, warum eine Jigsaw-Verschiebung auf Java 9 nötig wird, gleichzeitig aber auch als Plädoyer, Jigsaw jetzt nicht fallen zu lassen. Dabei werden Zwischenlösungen wie das 8.5-Release genauso wie Technologie-Alternativen wie OSGi oder Penrose deutlich zurückgewiesen – eine Position, die sicherlich nicht von allen Community-Vertretern so geteilt wird.

Klarheit bekommt die Community im Laufe des nächsten Monats mit der Entscheidung der Experten-Gruppe. Wer bis dahin Einfluss auf die Entscheidungsfindung nehmen möchte, kann seine Erwägungen an die Java-SE-8-Kommentarliste senden.

Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

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