Project Jigsaw - Modularisierung in Java 7
Das OpenJDK-Projekt Jigsaw soll für Transparenz bei der Modularisierung der nächsten Java-Version 7.0 sorgen.
- Alexander Neumann
Eines der wichtigsten Features des nächsten Java (Version 7.0), wenn nicht gar das wichtigste, ist die Modularisierung des sehr großen und manchmal etwas schwergewichtigen JDK. Das hat kürzlich auch Mark Reinhold verdeutlicht, seines Zeichens Chef-Architekt der Java Standard Edition und zuständig für die nächste Java-Version. So kündigt er in seinem Blog-Eintrag mit "Project Jigsaw" eine Initiative innerhalb der OpenJDK-Community an, die demnächst sich der Modularisierung des JDK 7 annehmen und verstärkt über die Arbeit am JSR 294 – Improved Modularity Support in the Java Programming Language – aufklären soll. Die Einbindung der Modularität in Java 7.0 soll hier möglichst transparent erfolgen.
Der Java Specification Request 294 ist eine Spezifikation zum Thema Modularisierung innerhalb des Java Community Process (JCP), des zentralen Java-Standardisierungsorgans. Mit dem JSR sollen sogenannte Superpackages unterstützt und Java als Sprache sowie die Java Virtual Machine (JVM) so erweitert werden können, dass eine modulare Softwareentwicklung mit Java gewährleistet wird. Die Unterstützung des JSR 294 in Java 7 stellt Reinhold in Aussicht.
Weitere Spezifizierungen zum Thema sind der JSR 277 und der JSR 291. Der JSR 277 – Java Module System – möchte ein Distributionsformat und ein Repository für das Packaging von Java-Code und dazugehörigen Ressourcen anbieten. Zudem legt die Spezifikation Lade- und Integrations-Mechanismen zur Laufzeit fest. Doch wird auch Kritik an der Spezifizierung laut, sie wird von einigen Softwareherstellern als zu wenig flexibel kritisiert. So könne das Konzept nicht während des Betriebs weitere Servicemodule laden oder nicht mehr benötigte abschalten, sondern müsse erst über einen Neustart der Java Virtual Machine (JVM) neu geladen werden. Der JSR 277 wird nicht Bestandteil von Java 7 sein, da es zum jetzigen Zeitpunkt nicht möglich ist, wichtige Funktionen direkt in die JVM zu implementieren.
Der JSR 291 – Dynamic Component Support for Java – wurde von IBM im Februar 2006 eingebracht. Er möchte die zentralen Features des OSGi-Frameworks innerhalb des JCP standardisiert und innerhalb der Java Standard Edition eingebettet sehen. Als Vorbild dient hier der JSR 232 – Mobile Operational Management – aus der Java-ME-Welt. Ziel des JSR 291 ist, ein dynamisches Komponenten-Framework festzulegen, das bereits existierende Java-SE-Umgebungen unterstützt, die auf einem dynamischen OSGi-Komponenten-Modell basieren.
Sun hatte von Anfang an die Notwendigkeit des JSR in Frage gestellt, da die Einbettung à la JSR 291 bereits über die Spezifizierung durch das OSGi-Konsortium geklärt wäre. Obwohl OSGi "on top" von Java entwickelt ist, gibt es Bestandteile, die nicht in die Java-Sprache integriert sind. Da Reinhold nicht auf diesen JSR eingeht, ist nicht davon auszugehen, dass er in Java 7 integriert sein wird. (ane)