Nach langer Erwartung wird Java 9 im Juli 2017 veröffentlicht. Die neuste Version bietet einige Verbesserungen. Insgesamt 89 Java Enhancement Proposals (JEPs) wurden in Java 9 implementiert. In diesem Artikel stelle ich das Modulsystem des Projekts Jigsaw vor.
Die größte Änderung in Java 9 ist das neue Modulsystem Projekt Jigsaw. Mithilfe von Projekt Jigsaw wird die Programmierung auf Basis von Softwaremodulen in Java 9 möglich. Dieser Artikel erläutert Ihnen einen Teil der wichtigsten Grundlagen des Projekts Jigsaw, deren Aufgabe es ist, das Design eines Standardmodulsystems für das JDK 9 und für die Java-Plattform bereitzustellen. Projekt Jigsaw besteht aus insgesamt sechs JEPs und einem JSR:
- JEP 200: Modulares JDK
- JEP 201: Modularer Quellcode
- JEP 220: Modulare Laufzeit-Images
- JEP 260: Einkapselung von internen APIs
- JEP 261: Modulares System
- JEP 282: JLink
- JSR 376: Java-Platform-Modulsystem
Artikelserie
Teil 1: Java-9-Anwendungen kompilieren, paketieren und ausführen
Teil 2: Praktische Lösungen und Tipps für den erfolgreichen Umstieg auf Java 9
Teil 3: Top-down- und Bottom-up-Migration
Die OpenJDK-Webseite stellt die Ziele von Projekt Jigsaw eindeutig und präzise vor. So sollen die Java-SE-Plattform und das JDK skalierbarer für kleine Geräte sein. Außerdem sollen die Sicherheit und Wartbarkeit der Java-SE-Plattform sowie die Leistung von Applikationen verbessert werden. Zudem steht die einfachere Entwicklung und Wartbarkeit von Bibliotheken und großen Anwendungen auf dem Plan, sowohl für die Java-SE- als auch für die Java-EE-Plattform.
Java-9-Anwendungen bestehen aus Modulen. Bei der Kompilierung und Ausführung unterstützt Java 9 die Angabe von Modulen. Der Java-Compiler und der Java Launcher wurden mit neuen Flags bereichert, um die Kompilierung und die Ausführung von Java-9-Modulen zu ermöglichen. Zu den wichtigsten neuen Optionen zählen die folgenden Flags: —module-source-path, die dem Java-Compiler den Suchpfad für Module mitteilt, —module-path, die dem Java Launcher die Stelle der kompilierten Module mitteilt sowie —module, die das Hauptmodul nennt.
Außerdem wird das neue Konzept modularer JAR-Dateien vorgestellt. Nebenbei wird erklärt, wie man eine modulare JAR-Datei aus .class-Dateien erzeugen und wie sie für die Ausführung der Module verwendet werden kann. Die meisten internen JDK-APIs sind in JDK 9 nicht mehr zugänglich. Quellcode, der solche internen JDK-APIs verwendet, kann im JDK 9 nicht mehr kompiliert werden. Um die Kapselung auszuschalten, wurde eine neue Java-Compiler-Option namens —add-exports eingeführt. Mithilfe dieser Option kann man spezifizieren, ob ein internes JDK-Paket für ein bestimmtes Modul zugänglich sein soll. Ein konkretes Beispiel mit Quellcode wollen wir uns in diesem Artikel ansehen.