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.
- Markus Eisele
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:
Lambda Expressions
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.
Date und Time API
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);
Type Annotations
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.
Ein schnelleres Nashorn
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.
Compact Profiles
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.
OpenJFX und JavaFX
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.
Kein OutOfMemoryError: PermGen space 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.
Java Mission Control 5.3
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. ()