14.3 Zum Weiterlesen
Wer sich in die Geschichte der Module einlesen möchte, der bekommt gute Einblicke über diverse Präsentationen der Java-Macher: http://openjdk.java.net/projects/jigsaw/. Das Modulsystem bietet noch mehr Möglichkeiten, wie die Öffnung für Reflection oder transitive Abhängigkeiten, also requires transitive, damit ein Modul ein anderes Modul für den Nutzer mitbestimmt. Weiterhin existiert eine provide … with- und uses-Syntax für Service-Loader. Gibt es eine Schnittstelle I und eine Implementierung C, so kann die Modulinformation provides I with C enthalten und der Service-Lader kann mit ServiceLoader.load(I.class) den Typ C liefern – ohne die META-INF/services-Dateien, die vor Java 9 nötig waren. Außerdem können JDK-Module gegen andere ausgetauscht und Klassen »gepatcht« werden, indem sie anderen Modulen zugeordnet werden.
Auch wenn das neue Modulsystem interessant ist, gibt es Kritik, weil es einigen Teams nicht weit genug geht. Ein Kritikpunkt ist die Versionsnummer, die im Moment nur Zierde ist. Scott Stark, der Checkentwickler des bekannten JBoss AS, fasst ausführlich Probleme unter http://tutego.de/go/concerns-regarding-jigsaw zusammen.
Der Buchmarkt hält ein paar Spezialtitel bereit, die die Thematik ausführlich beschreiben, etwa »Java 9 Modularity: Patterns and Practices for Developing Maintainable Applications« von Sander Mak und Paul Bakker.