Java 9: Auf dem Weg zur Modularisierung

Neues Modulsystem für Java 9 vorgestellt (JSR 376)

Moritz Hoffmann

(c) Shutterstock / koya 979

Nach der Ankündigung im Sommer letzten Jahres, dass der Quellcode des JDK im Rahmen des Projekts Jigsaw modularisiert wird, hat Mark Reinhold nun einen Einblick in den Stand des entsprechenden Modulsystems (JSR 376) für Java 9 veröffentlicht. Damit soll die Modularisierung des JDK und anderer großer Legacy-Codebasen organisiert werden. Mit dem Ziel einer zuverlässigen Konfigurationslösung soll das Modulsystem den fehleranfälligen Klassenpfad-Mechanismus ersetzen und einzelnen Komponenten die Möglichkeit bieten, ihre öffentlichen Typen für andere Komponenten nur optional zugänglich zu machen.

Wie Reinhold in dem Statusbericht beschreibt, soll das Modulsystem eine grundlegend neue Art Java-Komponente darstellen. Seine vorläufige Definition bezeichnet ein Modul als eine benannte, selbstbeschreibende Sammlung von Code und Daten. Der Code soll sich dabei aus einer Zusammenstellung von Paketen zusammensetzen, die wiederum Typen (z. B. Java-Klassen und Interfaces) enthalten. Die Daten bestehen aus Ressourcen und anderen statischen Informationen.

Die Module sollen selbst beschreiben können, welche anderen Module sie für die Kompilierung und den Betrieb benötigen. Um zu bestimmen, welcher Code aus anderen Modulen sich auf Typen im eigenen Paket beziehen, kann ein Modul beschreiben, welche Pakete es exportiert. Im Modulsystem werden die erforderlichen Module lokalisiert. Das System soll dafür Sorge tragen, dass sich Module nur nach ihren beschriebenen Typ- und Paketfreigaben aufeinander beziehen.

Modul-Beschreibung

Diese Selbstbeschreibungen werden in der module declaration ausgedrückt, die weder einen Version String, noch Constraints des Version Strings des Moduls beinhalten. Sie sollen garantieren, dass die Modul-Informationen sowohl in der Laufzeit, als auch in der Kompilierungszeit verfügbar sind. Vom Nutzen des neuen Konstrukts für Java ist Reinhold überzeugt:

Expressing module declarations in a source file which is compiled, along with the other source files in a module, into a class file for consumption by the Java virtual machine is the natural way in which to establish fidelity. This approach will be immediately familiar to developers, and not difficult for IDEs and build tools to support. Build tools, in particular, can synthesize module declarations from information already available in project descriptions.

JSR 376 – Ein Ausweg aus der „JAR-Hölle“?

Eine weitere Neuerung sind die Modul-Artifakte, mit denen über schon bestehende JAR-Dateien hinaus nativer Code sowie Konfigurations-und andere Daten als JAR-Dateien angepasst werden sollen. Ob damit die gefürchtete „jar hell“-vermieden werden kann, in der verschieden Frameworks auf verschiedenen Versionen der gleichen Bibliothek beruhen, wird von der Community derzeit auf Reddit diskutiert:

Modules are not going to help with that since they don’t specify versions. There is no silver bullet to address this problem and the standard way to fix it is just to add exclude clauses in your build file. (crate_crow)

Die meisten Java-Fans scheinen sich dennoch über die neuen Entwicklungen im Projekt Jigsaw zu freuen.

Die Einzelheiten zu den zum Modulsystem gehörenden Modul-Descriptors, Platform Modules sowie Modul-Graphen, Modul-Pfaden und anderen Funktionen sind im ausführlichen Statusbericht nachzulesen. Auf der Hauptseite des Java Platform Module System (JSR 376) können sich Interessierte auf dem Laufenden halten. Eine Dokumentation zum Quick Start mit dem Modulsystem ist auf der Seite des Projekts Jigsaw verfügbar.

Zum Herbst 2016 soll Java 9 allgemein verfügbar werden. Was noch für Java 9 geplant ist, können Sie im Artikel Sieben Java-9-Features, auf die Ihr euch freuen könnt nachlesen. Early Access Releases für das JDK 9 stehen auf java.net zum Download bereit.

Aufmacherbild: number nine – 9 balloon font / Urheberrecht: koya 979

Verwandte Themen:

Geschrieben von
Moritz Hoffmann
Moritz Hoffmann
Moritz Hoffmann hat an der Goethe Universität Soziologie sowie Buch- und Medienpraxis studiert. Er lebt seit acht Jahren in Frankfurt am Main und arbeitet in der Redaktion von Software und Support Media.
Kommentare

Hinterlasse einen Kommentar

avatar
4000
  Subscribe  
Benachrichtige mich zu: