Diskussionen um JEP 11

Ein Inkubator für Java: Neues JDK-Proposal sieht Inkubator-Module vor

Hartmut Schlosser

(c) Shutterstock / NoDenmand

Wie können Java-Entwickler schneller von Innovationen des JDK profitieren? Ein neues JEP (JDK Enhancement Proposal) schlägt dafür die Einführung von Inkubator-Modulen vor.

JDK Enhancement Proposals (JEPs) sind der offizielle Weg, um im Rahmen des Java Community Process (JCP) Verbesserungen des Java Development Kits (JDK) herbeizuführen. Das neue JEP 11, das von Chris Hegarty eingereicht und von Brian Goetz unterstützt wird, schlägt nun die Einführung sogenannter Inkubator-Modulen vor.

Inkubator-Module sollen JDK-Release-Projekten einen Weg eröffnen, neben ihren offiziellen APIs ein Set von nicht-finalen APIs zur Verfügung zu stellen. Die Idee dahinter: Typischerweise würden Inkubator-APIs noch nicht im Zustand sein, um sie abschließend für das JDK zu standardisieren. Der Lebenszyklus solcher Inkubator-APIs wäre klar begrenzt: Entweder sollen sie im folgenden JDK-Release enthalten sein, oder aber – bei Nichtbewährung sozusagen – entfernt werden.

Wie im offiziellen Proposal-Doc beschrieben, ist das Ziel des JEP 11, einen Mechanismus zu etablieren, um die Qualität der APIs in der Java-SE-Platform zu verbessern und kostspielige Fehler durch zu frühe Standardisierung zu vermeiden.

Für das Verständnis wichtig ist, dass sich der JEP 11 auf JDK-Release-Projekte bezieht und keinen allgemeinen Inkubator für Sprachen- oder VM-Features sein will. Ebenso ausgeschlossen ist es, den JEP 11 für die Verteilung willkürlicher Nicht-JDK-Module zu nutzen. Weder soll dadurch der gesamte Lebenszyklus eines Moduls oder APIs definiert werden, noch die Verpflichtung entstehen, jedes JDK-Feature zunächst durch einen neuen Inkubator-Prozess zu schleusen.

So jung der JEP 11 ist – er wurde erstmals am 16. November 2016 eingestellt und am 19. Januar 2017 aktualisiert -, so kontrovers wird er auch schon in der Community diskutiert. Volker Simonis (SAP) stellt etwa auf der Mailingliste die Frage, ob wir hier nicht Gefahr laufen, eine Java-Fragmentierung zu befördern, da verschiedene Java-Implementierungen unterschiedliche Inkubator-Module enthalten könnten.

How do you intend to prevent „Java fragmentation“ with regard to „supported incubator moduls“? OpenJDK/OracleJDK are currently for sure the most dominant but by no means the only Java implementations on this planet. Independent Java implementors may not be able to use OpenJDK incubator modules due to licensing issues.

Auch im zurückliegenden Meeting des JCP wurde das Thema diskutiert. Patrick Curran schlug hier zwei Maßnahmen zur Lösung des Problems vor. Erstens soll der Prozess, zweiwöchentliche OpenJDK-Versionen bereit zu stellen, die sowohl Dokumentation (Spezifikationen) als auch Code enthalten, formalisiert werden. Außerdem soll sichergestellt werden, dass diese OpenJDK-Versionen derart lizensiert werden, dass sie das Recht gewähren, unabhängige Implementierungen zu erstellen.

Lesen Sie auch: Klartext im JCP-Meeting: “Oracle soll die Führung übernehmen oder den Weg freimachen”

Man sieht, die Diskussionen um den JEP 11 sind längst nicht abgeschlossen. Es handelt sich denn auch um einen sogenannten „Informational JEP“, was bedeutet, dass im Gegensatz zu sogenannten „Feature JEPs“ keine Zielversion angegeben wird. Mark Reinhold erklärt zudem die niedrige JEP-Nummer 11 mit dem Hinweis, dass der JEP langfristig angelegt ist:

It was always the intent to use lower numbers for informational JEPs that are expected to be long-lived. This is one of those.

Die Details zur Umsetzung der vorgeschlagenen Inkubator-Module finden Interessierte im offiziellen JEP-11-Proposal-Dokument.

Geschrieben von
Hartmut Schlosser
Hartmut Schlosser
Hartmut Schlosser ist Redakteur und Online-Koordinator bei Software & Support Media. Seine Spezialgebiete liegen bei Java-Enterprise-Technologien, JavaFX, Eclipse und DevOps. Vor seiner Tätigkeit bei S & S Media studierte er Musik, Informatik, französische Philologie und Ethnologie.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.