Spezifikationen für Java 7 und Java 8 vorgelegt

Oracle hat vier für die nächsten Java-Versionen wesentliche Java Specification Requests in den Java Community Process eingebracht. Sie sollen die Basis für Implementierungen von damit einhergehenden Java-Techniken liefern.

In Pocket speichern vorlesen Druckansicht 214 Kommentare lesen
Lesezeit: 3 Min.
Von
  • Alexander Neumann

Mark Reinhold, Oracles Cheftechniker für Java, hat bekannt gegeben, dass nun die vier für die nächsten beiden Java-Versionen entscheidenden Java Specification Requests (JSRs) in den Java Community Process (JCP) eingebracht worden sind. Sie sollen die im kürzlich vorgestellten Plan B vorgesehenen Java-Techniken spezifizieren. Laut diesem ist es geplant, das JDK 7 Mitte 2011 ohne Lambda-Funktionen, das die Modularität angehende Project Jigsaw und Teile von Project Coin zu veröffentlichen. Dafür soll schon Ende 2012 ein JDK 8 folgen, das die in Java 7 außen vor gelassenen Komponenten und mehr enthalten soll. Nach Plan A hätte Java 7 alle Neuerungen gleich enthalten, dafür wäre es frühestens Mitte 2012 erschienen.

Bei den jetzt vorgestellten Spezifikationsvorschlägen handelt es sich um die JSRs 334 bis 337. Im JSR 334 – Small Enhancements for the Java Programming Language – finden sich mehrere zuvor im Project Coin entwickelte Techniken. Aus dem Sammelbecken kleinerer Sprachfunktionen sind unter anderem die Erweiterung des switch-Statements um String-Fälle, eine verbesserte Typ-Inferenz, die einem mit dem Diamand-Operator die lästige Wiederholung generischer Typ-Parameter erspart, und ein spezieller try-Block, der für die korrekte Freigabe von Ressourcen sorgt, in dem JSR gelandet.

Der JSR 335 – Lambda Expressions for the Java Programming Language – widmet sich der Einführung von Closures in die Sprache. Das Konzept stammt aus der funktionalen Programmierung. Mittlerweile unterstützen auch nichtfunktionale Sprachen wie C#, JavaScript, Perl, PHP, Python, Ruby und Smalltalk die Funktion. Closures reproduzieren beim Aufruf ihren Definitionskontext, selbst wenn der Kontext außerhalb der Funktion nicht mehr existiert. Die Implementierung der Spezifikation findet im Rahmen des OpenJDK bereits im Project Lambda statt.

Der JSR 336 – Java SE 7 Release Contents – stellt eine Mantelspezifikation dar, in die weitere JSRs und Java-Techniken Einzug halten. Darunter finden sich beispielsweise eine neue Concurrency API inklusive Fork/Join-Framework, eine performanteres Arbeiten mit dynamisch typisierten Sprachen (JSR 292), eine neue File-System API (JSR 203), Unterstützung für Unicode 6.0 und JDBC 4.1 sowie die Einführung des Nimbus-Look-and-Feel und der JLayer-Komponente in der GUI-Technik Swing.

Im JSR 337 – Java SE 8 Release Contents – landen beispielsweise ein Modulsystem, das Java-Entwickler von der "Klassenpfad-Hölle" befreien soll, und ein erweitertes Framework für Collections, damit diese effizienter und paralleler ablaufen können. Nachdem die JSRs nun im JCP vorgeschlagen wurden, liegt es am Executive Committe des JCP, die Vorschläge abzusegnen oder nicht. Die Apache Software Foundation hatte schon im Vorfeld angekündigt, gegen Oracles Vorschlag zu stimmen, wenn der Konzern nicht seine Lizenzierungsstrategie bei den für die Java-Zertifizierung erforderlichen Test Compatability Kits (TCKs) ändere. (ane)