© Excellent backgrounds/Shutterstock.com
Java Magazin
Teil 4: Project Jigsaw aka Java Module System

Eine Anwendung in vielen Teilen

Wir wollen Ihnen in dieser Artikelreihe einen Überblick über die Neuerungen in Java 9 verschaffen und einige Features von Java 9 kurz erläutern. Dabei haben wir diejenigen Themen ausgewählt, von denen wir denken, dass sie für Java-Entwickler am interessantesten sind. Und natürlich werfen wir einen Blick auf die größte Neuerung: das Modulsystem.

Angelika Langer, Klaus Kreft


Java 9 – ÜberblickTeil 1: Ergänzungen der Sprache und der existierenden APIsTeil 2: JVM Internals Teil 3: Neue und alte JDK-Tools Teil 4: Project Jigsaw aka Java Module System Teil 5: JDK-interne Packages wie sun.misc.* und ihr Ersatz Teil 6: Concurrency Updates

Mit dem Release 9 bekommt Java nun endlich das schon lange angekündigte Modulsystem [1]. Oracle hat bereits vor etwa fünf Jahren damit begonnen, die Modularisierung von Java-Anwendungen zu unterstützen. In diesem Zuge wurde zunächst einmal das JDK selbst restrukturiert und in Module aufgeteilt. Die Modularisierung des JDK ist nun fertig, und damit hat sich das Deployment des JDK geändert: Es gibt in Java 9 nun kein rt.jar mehr, stattdessen besteht das JDK jetzt aus Modulen. Diesem Beispiel soll die Java-Community folgen. Die Idee ist, dass mit Java 9 eine Transitionsphase beginnt, in der insbesondere Third-Party-Anbieter und schließlich alle Java-Anwendungen ihre Java-Software modularisieren.

Was ist ein Modul?

Module sind Artefakte, die eine Einheit von miteinander zusammenhängenden Klassen, nativem Code und Properties bilden. Zu jedem Modul gehören Metadaten, die das Modul und seine Beziehungen zu anderen Modulen beschreiben. Das Hauptziel der Modularisierung ist die Kapselung von zusammenhängenden Klassen und die saubere Beschreibung der Beziehungen zwischen den Modulen. Ein Modul in Java beschreibt:

Readability: welche anderen Module dieses Modul benutztAccessibility: welche Packages dieses Modul anderen Modulen zur Verfügung stellt

Der Zweck des Modulsystems ist es, diese Beziehungen der Module untereinander von der Übersetzung bis zur Laufzeit zu überprüfen und sicherzustellen.

Wozu braucht Java ein Modulsystem?

Die Möglichkeit, zusammenhängende Klassen zusammenzufassen, gibt es bereits mit den Java-Archiven, d. h. den JAR-Dateien. Außerdem gibt es in Java Kapselungsmechanismen mithilfe von Packages und den Visibility-Deklarationen über private, protected und public. Wozu also braucht es ein Modulsystem für Java? Schauen wir uns einige der Gründe an, die dazu geführt haben, dass ein Modulsystem für Java definiert wurde.

Die Visibility-Deklarationen beispielsweise haben sich als unzureichend herausgestellt. Ein gutes Beispiel für die Defizite sind die JDK-Klassen in den sun.*-Packages wie die Klasse sun.misc.Unsafe. Alle Klassen in den sun.*-Packages waren ursprünglich als interne Klassen für die Implementierung des JDK gedacht und sollten auf keinen Fall allen beliebigen Java-Benutzern zur Verf...

Java Magazin
Teil 4: Project Jigsaw aka Java Module System

Eine Anwendung in vielen Teilen

Wir wollen Ihnen in dieser Artikelreihe einen Überblick über die Neuerungen in Java 9 verschaffen und einige Features von Java 9 kurz erläutern. Dabei haben wir diejenigen Themen ausgewählt, von denen wir denken, dass sie für Java-Entwickler am interessantesten sind. Und natürlich werfen wir einen Blick auf die größte Neuerung: das Modulsystem.

Angelika Langer, Klaus Kreft


Java 9 – ÜberblickTeil 1: Ergänzungen der Sprache und der existierenden APIsTeil 2: JVM Internals Teil 3: Neue und alte JDK-Tools Teil 4: Project Jigsaw aka Java Module System Teil 5: JDK-interne Packages wie sun.misc.* und ihr Ersatz Teil 6: Concurrency Updates

Mit dem Release 9 bekommt Java nun endlich das schon lange angekündigte Modulsystem [1]. Oracle hat bereits vor etwa fünf Jahren damit begonnen, die Modularisierung von Java-Anwendungen zu unterstützen. In diesem Zuge wurde zunächst einmal das JDK selbst restrukturiert und in Module aufgeteilt. Die Modularisierung des JDK ist nun fertig, und damit hat sich das Deployment des JDK geändert: Es gibt in Java 9 nun kein rt.jar mehr, stattdessen besteht das JDK jetzt aus Modulen. Diesem Beispiel soll die Java-Community folgen. Die Idee ist, dass mit Java 9 eine Transitionsphase beginnt, in der insbesondere Third-Party-Anbieter und schließlich alle Java-Anwendungen ihre Java-Software modularisieren.

Was ist ein Modul?

Module sind Artefakte, die eine Einheit von miteinander zusammenhängenden Klassen, nativem Code und Properties bilden. Zu jedem Modul gehören Metadaten, die das Modul und seine Beziehungen zu anderen Modulen beschreiben. Das Hauptziel der Modularisierung ist die Kapselung von zusammenhängenden Klassen und die saubere Beschreibung der Beziehungen zwischen den Modulen. Ein Modul in Java beschreibt:

Readability: welche anderen Module dieses Modul benutztAccessibility: welche Packages dieses Modul anderen Modulen zur Verfügung stellt

Der Zweck des Modulsystems ist es, diese Beziehungen der Module untereinander von der Übersetzung bis zur Laufzeit zu überprüfen und sicherzustellen.

Wozu braucht Java ein Modulsystem?

Die Möglichkeit, zusammenhängende Klassen zusammenzufassen, gibt es bereits mit den Java-Archiven, d. h. den JAR-Dateien. Außerdem gibt es in Java Kapselungsmechanismen mithilfe von Packages und den Visibility-Deklarationen über private, protected und public. Wozu also braucht es ein Modulsystem für Java? Schauen wir uns einige der Gründe an, die dazu geführt haben, dass ein Modulsystem für Java definiert wurde.

Die Visibility-Deklarationen beispielsweise haben sich als unzureichend herausgestellt. Ein gutes Beispiel für die Defizite sind die JDK-Klassen in den sun.*-Packages wie die Klasse sun.misc.Unsafe. Alle Klassen in den sun.*-Packages waren ursprünglich als interne Klassen für die Implementierung des JDK gedacht und sollten auf keinen Fall allen beliebigen Java-Benutzern zur Verf...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang