Suche

Java 9 Runtime Images jetzt modular: Wird Jigsaw endlich Realität?

Diana Kupfer
© shutterstock.com/somchaij

Je später die Version, desto schöner die Features: Modularität gehört zu den gefragtesten Features, die mit Java 9 erwartet werden. Und nachdem die Einführung eines Modulsystems in Java, auch bekannt als Projekt Jigsaw, mehrmals aufgeschoben wurde, macht Oracle nun Nägel mit Köpfen: Wie Mark Reinhold, leitender Architekt der Java-Plattform, mitteilt, sind die ersten Änderungen, die Java Enhancement Proposal (JEP) 220 vorsieht, in den neuen Java 9 Early Access Build eingeflossen.

Zu den Neuerungen gehört unter anderem, dass das jre-Unterverzeichnis nicht mehr in den JDK-Images vorhanden ist. Abgeschafft wurden auch der Endorsed Standards Override Mechanism, der Erweiterungsmechanismus (Extension Mechanism) sowie die JAR-Dateien rt.jar, tools.jar und dt.jar – was erst der Anfang vom Ende der JAR-Datei im Java-Laufzeitsystem gewesen sein dürfte. Für Werkzeuge, die direkt auf rt.jar zugriffen, gibt es einen internen NIO-Dateisystemprovider, der Zugang zu Klassen- und Ressourcendateein innerhalb eines Laufzeit-Images verschafft. Die Konfigurationsdateien im Unterverzeichnis lib wurden in das neue conf-Verzeichnis verschoben. Schließlich wurde ein neues URI-Benennungsschema für Module, Klassen und Ressourcen definiert.

Weitere Änderungen sollen folgen; laut Reinhold handelt es sich bei den oben beschriebenen allerdings um die radikalsten.

JEP 220, erst Ende Oktober veröffentlicht, beschreibt das Ziel, modulare Laufzeit-Images für das Java Development Kit (JDK) und die Java Laufzeit Java Runtime Environment (JRE) bereitzustellen.

‚Jigsawgate‘

Wer in der Liste von JEPs nach dem Wort „modular“ sucht, der wird an vier Stellen fündig: Der JEP 162 vom 31.8.2012 trägt noch den vagen Titel „Prepare for Modularization“. Er entstand kurz nach der Mitteilung Mark Reinholds, dass das Modularisierungsprojekt „Jigsaw“ nicht Teil von Java 8 sein werde. Für viele in der Community war diese Nachricht eine Hiobsbotschaft. Schließlich bedeutet dieser Aufschub, dass sich Modularisierungsbefürworter bis Version 9, also mindestens bis 2016, gedulden müssen – und das, nachdem Jigsaw 2010 bereits von Java 7 auf Java 8 verschoben worden war. Mit einer Art Disclaimer unter der Überschrift „Non-Goals“ wollten die Autoren offensichtlich sichergehen, dass keine falsche Hoffnungen geweckt werden:

It is not a goal of this effort to integrate code for the module system, developed in Project Jigsaw, into JDK 8.

Post-Jigsaw: 4 neue JEPs

Nach diesem Rückschlag, nach den Reaktionen aus der Community ein regelrechtes „Jigsawgate“, entstanden im vergangenen Sommer JEP 200 und 201. Sie definieren eine modulare Struktur für das JDK bzw. modularen Quellcode definieren. Bereits kurze Zeit später gab es einen ersten Erfolg zu vermelden: Die Arbeiten am JEP 201 wurden in den OpenJDK-Master-Branch übernommen. JEP 220 ist der dritte Streich in puncto Modularisierung.

Nach Mark Reinholds Projektplan, den er am 2. Juli 2014 in seinem Blog bekanntgab, steht jetzt noch ein letzter JEP aus. Dieser soll das Modulsystem als solches einführen:

A fourth JEP will introduce the module system itself, which will be aligned with the module-system JSR. It may seem odd that the module system JEP comes last, but the earlier JEPs need make only minimal assumptions about its capabilities, hence work on them can proceed in parallel with work on the module-system JEP and JSR.

Bis zum geplanten Release 2016 ist noch viel Zeit für diesen größten und letzten Schritt, und die bisherigen Fortschritte in Sachen Modularisierung stimmen zuversichtlich, dass Jigsaw in Java 9 endlich Realität wird. 

Aufmacherbild: Missing jigsaw puzzle piece with light glow, business concept for completing the final puzzle piece von shutterstock.com / Urheberrecht: somchaij 

Geschrieben von
Diana Kupfer
Diana Kupfer
Diana Kupfer war Redakteurin bei S&S Media für die Zeitschriften Java Magazin, Eclipse Magazin und das Portal JAXenter. 
Kommentare

Schreibe einen Kommentar

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