Es ist soweit: Java 7 wurde offiziell freigegeben. Wir wollen in diesem Beitrag einen Überblick über die Neuerungen geben und uns einige der neuen Sprachmittel und JDK-Ergänzungen in den nachfolgenden Beiträgen genauer ansehen.
Die Version 7 von Java hat lange auf sich warten lassen. Das liegt unter anderem daran, dass im Januar 2010 Sun Microsystems vom Softwarekonzern Oracle übernommen wurde und damit die Verantwortung für Java und den JDK an Oracle übergegangen ist. Wie vermutlich jede Firmenübernahme führte es zu Neuorientierungen, Umorganisationen und allerlei strategischen und organisatorischen Neuausrichtungen, die in diesem Fall die Freigabe der Version 7 von Java beeinflusst und verzögert haben.
Aber auch schon vor dieser Firmenübernahme war Java 7 in keinem überzeugenden Zustand. Der Community Process (JCP), in dem bis dahin die wesentlichen Weiterentwicklungen von Java besprochen, spezifiziert und verabschiedet worden waren, hatte sich seltsam aufgelöst. Das dürfte wesentlich an den Streitigkeiten zwischen der Apache Software Foundation und Sun Microsystems im Zusammenhang mit dem Apache Harmony JDK gelegen haben. Aber auch verschiedene technische Themen waren extrem umstritten in der Java-Community Closures/Lambdas und die Modularisierung gehören zu diesen Streitpunkten. Die Meinungsverschiedenheiten hatten dazu geführt, dass es zwar Implementierungen für einige Neuerungen gab, aber keinerlei Konsens und auch keine Spezifikation dessen, was implementiert worden war. Das Ergebnis war ein JDK 7, nämlich der OpenJDK, zu dem Sun Microsystems die maßgeblichen Beiträge geleistet hat. Aber es gab kein Java 7, also keine Festlegung dessen, was eigentlich die Version 7 von Java ausmacht. Interessanterweise gab es aber einen (noch von Sun Microsystems veröffentlichten) Meilensteinplan, in dem die Freigabe von Java 7 für den 9. September 2010 angekündigt war. Genau an diesem Stichtag sah sich Oracle dann veranlasst zu verkünden, dass es leider zu diesem Zeitpunkt keine Freigabe geben werde. Eine wirkliche Überraschung war es nicht, denn wesentliche Teile der geplanten Features waren weder spezifiziert noch implementiert und getestet.
Der neue Freigabeplan vom September 2010 sieht nun eine Teilung des ursprünglich für Java 7 geplanten Umfangs in eine Version 7 und eine Version 8 von Java Ende 2012 vor. Seit November 2010 gibt es auch vier JSRs (Java Specification Requests), die die Neuerungen in Java 7 und 8 beschreiben [1]. In diesem und den nächsten Beiträgen werden wir uns die Neuerungen genauer anschauen. Die Tabellen 1 und 2 zeigen eine Übersicht über die wesentlichen Neuerungen; die vollständige Liste ist unter [2] zu finden.
JDK 7
JSR 336
Java SE 7 Release Contents
Lang
JSR 334
Small language enhancements (Project Coin)
Vm
JSR 292
Support for dynamically-typed languages (InvokeDynamic)
Core
---
Concurrency and collections updates (Fork-Join bzw. jsr166y)
i18n
---
Unicode 6.0
---
Locale enhancement
---
Separate user locale and user-interface locale
Ionet
JSR 203
More new I/O APIs for the Java platform (NIO.2)
NIO.2 filesystem provider for zip/jar archives
SCTP (Stream Control Transmission Protocol)
SDP (Sockets Direct Protocol)
Use the Windows Vista IPv6 stack
TLS 1.2
Tabelle 1: Plan für JDK 7
JDK 8 (Ende 2012 oder später)
JSR 337
Java SE 8 Release Contents
Vm
JSR 294
Language and VM support for modular programming
---
A module system for modularizing the JDK (Project Jigsaw)
Lang
JSR 308
Annotations on Java types
---
Language support for collections
JSR 335
Lambda expressions, formerly known as closures, and defender methods (Project Lambda)
Core
---
Concurrency and collections updates that depend on lambdas (Parallel Arrays bzw. extra166y)
Tabelle 2: Plan für JDK 8
Worum geht es dabei?
Teil 1 Teil 2 Teil 3 Teil 4
Die Version 7 von Java hat lange auf sich warten lassen. Das liegt unter anderem daran, dass im Januar 2010 Sun Microsystems vom Softwarekonzern Oracle übernommen wurde und damit die Verantwortung für Java und den JDK an Oracle übergegangen ist. Wie vermutlich jede Firmenübernahme führte es zu Neuorientierungen, Umorganisationen und allerlei strategischen und organisatorischen Neuausrichtungen, die in diesem Fall die Freigabe der Version 7 von Java beeinflusst und verzögert haben.
Aber auch schon vor dieser Firmenübernahme war Java 7 in keinem überzeugenden Zustand. Der Community Process (JCP), in dem bis dahin die wesentlichen Weiterentwicklungen von Java besprochen, spezifiziert und verabschiedet worden waren, hatte sich seltsam aufgelöst. Das dürfte wesentlich an den Streitigkeiten zwischen der Apache Software Foundation und Sun Microsystems im Zusammenhang mit dem Apache Harmony JDK gelegen haben. Aber auch verschiedene technische Themen waren extrem umstritten in der Java-Community Closures/Lambdas und die Modularisierung gehören zu diesen Streitpunkten. Die Meinungsverschiedenheiten hatten dazu geführt, dass es zwar Implementierungen für einige Neuerungen gab, aber keinerlei Konsens und auch keine Spezifikation dessen, was implementiert worden war. Das Ergebnis war ein JDK 7, nämlich der OpenJDK, zu dem Sun Microsystems die maßgeblichen Beiträge geleistet hat. Aber es gab kein Java 7, also keine Festlegung dessen, was eigentlich die Version 7 von Java ausmacht. Interessanterweise gab es aber einen (noch von Sun Microsystems veröffentlichten) Meilensteinplan, in dem die Freigabe von Java 7 für den 9. September 2010 angekündigt war. Genau an diesem Stichtag sah sich Oracle dann veranlasst zu verkünden, dass es leider zu diesem Zeitpunkt keine Freigabe geben werde. Eine wirkliche Überraschung war es nicht, denn wesentliche Teile der geplanten Features waren weder spezifiziert noch implementiert und getestet.
Der neue Freigabeplan vom September 2010 sieht nun eine Teilung des ursprünglich für Java 7 geplanten Umfangs in eine Version 7 und eine Version 8 von Java Ende 2012 vor. Seit November 2010 gibt es auch vier JSRs (Java Specification Requests), die die Neuerungen in Java 7 und 8 beschreiben [1]. In diesem und den nächsten Beiträgen werden wir uns die Neuerungen genauer anschauen. Die Tabellen 1 und 2 zeigen eine Übersicht über die wesentlichen Neuerungen; die vollständige Liste ist unter [2] zu finden.
JDK 7
JSR 336
Java SE 7 Release Contents
Lang
JSR 334
Small language enhancements (Project Coin)
Vm
JSR 292
Support for dynamically-typed languages (InvokeDynamic)
Core
---
Concurrency and collections updates (Fork-Join bzw. jsr166y)
i18n
---
Unicode 6.0
---
Locale enhancement
---
Separate user locale and user-interface locale
Ionet
JSR 203
More new I/O APIs for the Java platform (NIO.2)
NIO.2 filesystem provider for zip/jar archives
SCTP (Stream Control Transmission Protocol)
SDP (Sockets Direct Protocol)
Use the Windows Vista IPv6 stack
TLS 1.2
Tabelle 1: Plan für JDK 7
JDK 8 (Ende 2012 oder später)
JSR 337
Java SE 8 Release Contents
Vm
JSR 294
Language and VM support for modular programming
---
A module system for modularizing the JDK (Project Jigsaw)
Lang
JSR 308
Annotations on Java types
---
Language support for collections
JSR 335
Lambda expressions, formerly known as closures, and defender methods (Project Lambda)
Core
---
Concurrency and collections updates that depend on lambdas (Parallel Arrays bzw. extra166y)
Tabelle 2: Plan für JDK 8
Worum geht es dabei?
Teil 1 Teil 2 Teil 3 Teil 4
289 mal gelesen