Simon Koelsch coding software, using gadgets

4Okt/10Off

Java 7 – Plan B

Die enge Roadmap von Java 7 war ja schon seit einiger Zeit bekannt. Aus den Diskussionen auf den Mailinglisten der einzelnen Projekte wurde auch relativ deutlich, dass es eng wird, ein Release mit allen Features zu veröffentlichen.

Ein Beispiel ist Neal Gafters Posting auf der Project Lambda Mailingliste "A reminder of Project Lambda's scope". Hier merkt Neal im April an, dass eigentlich schon im Juni laut Roadmap ein "feature complete" JDK 7 da sein muss.

Mark Reinhold hat dann Anfang September in seinem Blog unter "Re-thinking JDK 7" das Problem angesprochen und zwei weitere Vorgehensweisen diskutiert:

  • Plan A wäre ein Release von Java 7 wie geplant, allerdings erst 2012.
  • Plan B ist Java 7 mit den bereits vorhanden Features (also ohne Closures, Jigsaw und teilweise Coin) Mitte 2011 zu veröffentlichen und die restlichen Features im JDK 8 Ende 2012 unterzubringen.

Die meisten Kommentare befürworten Plan B, was seit dem 20. September mit "It’s time for … Plan B" bestätigt ist.

Welche Features landen jetzt aber in Java 7, welche in Java 8? Hier also ein kleines Update um meinen Artikel "Java 7 Features" zu ergänzen.

Die Featureliste wurde inzwischen von Reinhold geupdatet, was noch fehlt ist ein tatsächlicher Zeitplan für die Milestones. Ein paar ursprünglich nicht enthaltene Punkte sind inzwischen ebenfalls dazu gekommen.

Hier die Änderungen für das JDK 7, welches nun also hoffentlich Mitte 2011 erscheinen wird:

Sprachfeatures

  • Project Coin wird in Java 7 enthalten sein, allerdings ohne Unterstützung der Sprache für Collections. Wenn ich die Beschreibung allerdings richtig interpretiere, ist "improved exception handling (multi-catch)" nun doch enthalten.

I/O and Networking

  • NIO .2 wird mit einem Provider für .zip- und .jar-Files kommen.
  • Unter Windows wird in Zukunft der Windows Vista IPv6 Stack bevorzugt benutzt.
  • Ausserdem wird TLS 1.2 verfügbar.

Internationalization

  • Unicode wird nicht wie geplant in der Version 5.1, sondern in Version 6.0 unterstützt.
  • Ausserdem wurde die Unterstützung von Locales verbessert.

Zusätzlich findet dann noch JDBC 4.1 seinen Weg in den Release.

Für Ende 2012, also für Java 8, sind jetzt folgende Punkte geplant:

  • JSR 294 + Jigsaw,
  • Lambda (Closures),
  • "Annotations on Java Types" (JSR 308),
  • das Swing Application Framework (JSR 296) und die Swing Datepicker Komponente.
  • Neu ist hier noch "Language support for collections".

Damit bleiben als JDK 7 Merkmale auf der Sprachseite vor allem NIO 2 und Project Coin. Auf der Seite der VM ist das wohl wichtigste Merkmal "Invoke Dynamic", um die Performance für Scriptsprachen wie Scala zu verbessern.

Ich würde mir für die Zukunft von Java einen "Date-Driven" Releasezyklus wünschen. Hier wäre dann klar, in einem festen Zeitraum kommt ein neues Release welches alle fertigen Features enthält. OpenBSD fährt damit zum Beispiel sehr Erfolgreich. Aber warten wir einfach ab, wie sich Java unter Oracle entwickeln wird.