Alles auf 8 – Java SE 8 ist da

Ein paar Verzögerungen hat es in den vergangenen Monaten gegeben. Doch gestern war es schließlich soweit: Oracle hat Java 8 veröffentlicht. Zwei Jahre, sieben Monate und 8 Tage nach Java 7 stehen die für die Produktion geeigneten Builds des JDK 8 jetzt zum Download bereit.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 4 Min.
Von
  • Markus Eisele
Inhaltsverzeichnis

Nicht der offizielle Duke

Ein paar Verzögerungen hat es in den vergangenen Monaten gegeben. Doch gestern war es schließlich soweit: Oracle hat Java 8 veröffentlicht. Zwei Jahre, sieben Monate und 8 Tage nach Java 7 stehen die für die Produktion geeigneten Builds des JDK 8 jetzt zum Download bereit.

Mehr als 400 der insgesamt 8000 gemeldeten Fehler und Verbesserungen kamen aus der Community. Vor allem dank der frühen Tests der Early Access Builds konnten diese gefunden werden. Am 25. März um 18 Uhr deutscher Zeit findet ein offizieller Launch-Webcast statt. Mark Reinhold leitet dabei eine Pane-Diskussion über die neuen Funktionen.

Die komplette Liste der Neuerungen findet sich in den Release-Notes. Die Höhepunkte sind dabei:

Aus dem initialen Vorschlag "Closures for Java" von Mark Reinhold hat Brian Goetz nicht nur Lambda Ausdrücke und Default-Methoden, sondern auch eine eigene Streams API gebaut und dieses Project Lambda sowohl mit der OpenJDK-Gemeinschaft abgestimmt als auch als eigene JSR durch den JCP gebracht. Das neue Tutorial führt dabei in das Arbeiten mit den neuen APIs ein.

Ausgehend von den Arbeiten von Stephen Colebourne mit Joda Time wurde mit dem JSR 310 eine neue Date and Time API für das JDK 8 erschaffen. Besonders hierbei ist vor allem, dass Stephen kein Oracle-Mitarbeiter ist und er durch die London Java Community unterstützt wurde. Dieser Teil des neuen Java 8 ist also stark durch die Java-Community mitgetragen. Durch die flüssige API wird die Arbeit mit Daten und Zeiten damit deutlich vereinfacht. Ein eigenes, neues Tutorial führt durch die Benutzung.

LocalDate today = LocalDate.now();
LocalDate payday = today.with(TemporalAdjuster.lastDayOfMonth()).minusDays(2);

Bisher konnten Annotationen nur an Deklarationen stehen. Mit Java 8 sind sie jetzt an jedem Typ möglich. Dies ermöglicht eine verbesserte Einbindung statischer Prüfwerkzeuge. Die Erstellung eigener für Code ist damit deutlich vereinfacht worden. Die Referenz ist dabei das Checker-Framework, das bereits diverse Tests und Dokumentation bereitstellt. Auch das offizielle Java-Tutorial wurde um Beispiele für die neuen Möglichkeiten erweitert.

Java und JavaScript haben zwar außer dem Namen nicht viel gemeinsam, aber sie wachsen weiter zusammen. Das schon aus JDK 7 bekannte Nashorn ist schneller und besser geworden. Es kann aus Java direkt oder via Kommandozeile aufgerufen werden und bietet eine einfache Integration zwischen den beiden Welten an.

Die Enttäuschung über das fehlende Modulsystem ist noch immer spürbar, aber Oracle hatte ja von Anfang an eine Zwischenlösung in Reserve. Statt einer vollständigen Dynamik in der Zusammenstellung der Funktionalitäten kommt Java 8 jetzt mit vordefinierten Profilen. Compact1 bis Compact3 decken dabei unterschiedliche Subsets des JDK 8 ab und eigenen sich somit zum Einsatz auf Geräten mit begrenzter Hardware.

JavaFX ist seit dem JDK8 auch teil des OpenJDK. Gesamthaft wurde die JavaFX-Dokumentation überarbeitet und es gibt ein neues Theme, neue Controls, Änderungen in der API und vieles andere mehr.

Mit Java 8 gibt es die Permanent Generation nicht mehr. Sie ist weg. Was nicht mehr da ist, muss nicht mehr eingestellt werden und kann auch nicht mehr zu klein sein. Das, was früher in ihr gespeichert wurde, ist jetzt auf den normalen Java Heap und Native Memory verteilt.

Den alten Hasen ist das Mission-Control-Werkzeug noch aus früheren Zeiten aus dem BEA-eigenen JDK bekannt. Seit 7u51 ist sie schon Bestandteil des JDK. Mit Java 8 wird nun die neueste Version ausgeliefert. ()