Nächster Schritt der Java-Modularisierung: Project Jigsaw wandert in JDK-9-Branch

Das Project Jigsaw zur Entwicklung eines Java-Modulsystems macht in Kürze den nächsten großen Schritt. Denn die jüngsten Entwicklungen werden schon bald in den zentralen Entwicklungszweig des JDK 9 integriert.

In Pocket speichern vorlesen Druckansicht 25 Kommentare lesen
Großer Fortschritt bei der Java-Modularisierung
Lesezeit: 4 Min.
Von
  • Alexander Neumann
Inhaltsverzeichnis

Alle Anzeichen deuten nun endlich darauf hin, dass das Java-Modulsystem Jigsaw tatsächlich Bestandteil von Java 9 sein wird. Denn Alan Bateman, JDK-Entwickler bei Oracle, hat in der jdk9-dev-Mailingliste bekanntgegeben, dass die sogenannte Snapshot-Version jetzt in den zentralen Entwicklungszweig des Java Development Kit 9 eingebunden wird. Erst diese Woche hatte der bei Oracle für die Java-Entwicklung zuständige Ingenieur, Mark Reinhold, die Dokumentation des für das Project Jigsaw zuständigen JSR 376 entsprechend überarbeitet.

Konkret handelt es sich dabei um die Implementierung und Integration der JDK Enhancement Proposals (JEPs) 200, 260 und 261, die unterschiedliche Aufgaben auf dem Weg hin zu einem Java-Modulsystem beschreiben. Im JEP 200 – The Modular JDK – wird eine Struktur für das JDK festgelegt, in der es in Module aufgeteilt wird, die sich zur Kompilier-, Build-, Installier- und Laufzeit kombinieren lassen. Der JEP 260 behandelt interne APIs, für die keine offiziell unterstützte Alternative bereitgestellt werden kann, die aber weiterhin im JDK 9 zugänglich bleiben sollen. Das tatsächliche Modulsystem beschreibt der JEP 261.

Traditionell geschieht die Entwicklung der Java-Programmierplattform in mehreren, erstmal voneinander unabhängigen Entwicklungszweigen. Beispielsweise gibt es den Hotspot-Zweig, der sich um den gleichnamigen Compiler und die ihm zugrunde liegenden VM-Features kümmert; die zentrale Java-Entwicklung erfolgt im jdk-Entwicklungsbaum, ganz zu schweigen davon, dass es noch weitere Trees zu anderen Gebieten gibt. Letztlich werden dann aber die Weiterentwicklungen im neuen Release der Plattform zusammengefügt.

Die Modularisierung ist ein schon seit 2005 unter Java-Entwicklern diskutiertes und durch Vorschläge der Betreiber des Industriestandards OSGi, mit dem sich seit deutlich mehr als zehn Jahren Java-Programme und ihre Dienste über ein Komponentenmodell modularisieren und verwalten lassen, auch ein politisch motiviertes Thema. Zeitweilig gab es sogar mehrere Spezifikationen innerhalb des Java Community Process (JCP) zur Modularisierung. Letztlich haben die Bemühungen im Project Jigsaw ihre Heimat gefunden, doch musste die tatsächliche Umsetzung schon für Java 7 und Java 8 verschoben werden.

Die Einführung eines Java-Modulsystems gilt mittlerweile als wichtigstes Projekt des JDK 9, dessen Freigabe derzeit für März 2017 vorgesehen ist. Inwiefern sich der Termin halten lässt, wird sich allerdings zeigen. Denn eigentlich sollte das nächste Java bereits diesen Herbst fertig sein, aber dann hatten gerade die Verzögerungen bei den Arbeiten an Jigsaw für die Verschiebung auf das nächste Jahr gesorgt. Nach dem derzeitigen Plan soll Java 9 Ende Mai "Feature Complete" sein. Danach folgt eine längere Phase des Testens mit dem Ziel, Ende Januar 2017 den letzten Release Candidate bereitstellen zu können.

Bei der Modularisierung von Java geht es vor allem darum, zukünftig die Java Standard Edition (Java SE) auch auf kleineren, leistungsschwachen Geräten einsetzen zu können, ohne dabei auf eine hinreichende Sicherheit und Performance verzichten zu müssen. Erreicht wird das durch abgespeckte, auf die jeweiligen Möglichkeiten des Zielgeräts angepasste Java-SE-Bundles.

Mit Jigsaw will Oracle nicht nur ein Modulsystem für Java-Anwendungen, sondern auch eine modulare Java-Plattform schaffen. Das modulare Java könnte nahezu beliebige Konfigurationen bereitstellen, die sowohl komplette Server als auch schlanke Hardware unterstützen. Neben der puren Größe von Java-Installern würde ein solches Konstrukt auch das modulare Laden notwendiger Bibliotheken ermöglichen und schließlich vermutlich die Laufzeitgeschwindigkeit erhöhen. Andere Programmierplattformen wie Perl, Node.js., .NET und Python sind beim Thema Modularisierung schon deutlich länger unterwegs. (ane)