JDK 15: Die neuen Features in der Übersicht

Avatar

Die Veröffentlichung des Java Development Kit 15, Oracles Umsetzung der neusten Version der Java SE (Standard Edition), rückt immer näher. Am 15. September ist es endlich soweit!

Was sich an der neusten Version im Vergleich zum Vorgänger JDK 14 verändert hat und auf welche neuen Features Du Dich freuen kannst, erklären wir Dir in der folgenden Übersicht:

Fremd-Speicher Zugriff API

Ein zusätzlicher Inkubator einer sog. foreign-memory access API (zu deutsch Fremd-Speicher Zugriff) soll dafür sorgen, dass Java Anwendungen sicher und effizient auf fremden Speicher, also Speicher außerhalb des Java heaps, zugreifen können. Die API soll dabei mit allen gängigen Speicherformaten (native, persistent, managed heap) kompatibel sein.
Ziel des Ganzen ist die Verbesserung der vorher sehr kostspieligen und unvorhersehbaren Operationen – vor allem in Verbindung mit dem Garbage Collector, geteiltem Speicher und serialisierbarkeit. Dabei wird die Sicherheit der Java Virtual Machine nicht gefährdet.

Versiegelte Klassen

Im JDK 15 wird eine Preview der sealed classes, also der versiegelten Klassen, zu finden sein. Zusammen mit Interfaces sollen versiegelte Klassen neben den gängigen Zugriffsmodifikatoren (public, private, package private, etc.) zusätzlich die Möglichkeit bieten, zu restriktieren, welche Klassen die versiegelte Klasse implementieren oder erweitern darf. Eines der Ziele dabei ist es, dem Autor einer Klasse oder einem Interface die Kontrolle darüber zu geben, welcher Code für die Implementation verantwortlich ist.

Solaris und SPARC Ports

Bereits in Java 14 wurden die Solaris und SPARC Ports als veraltet gekennzeichnet – mit dem Ziel, diese in der Zukunft komplett zu entfernen. Mit der Veröffentlichung von JDK 15 soll der nächste logische Schritt im Prozess umgesetzt werden: der Solaris und SPARC spezifische Source-Code soll entfernt und Dokumentation und Code-Kommentare überarbeitet werden.

Motivation für die Umsetzung einer solchen Änderung wird dabei scheinbar aus den “größeren” Projekten des Java-Ecosystems zu sein. Gerade die Projekte Valhalla, Loom und Panama bringen Änderungen an OS-Spezifischem und CPU-Architektur-Code mit sich. Das Entfernen von Solaris und SPARC wird dabei dafür sorgen, dass die Entwicklung dieser Projekte schneller voran getrieben werden kann.

Records (Aufzeichnungen)

Sogenannte Records (Aufzeichnungen) sollen als transparente Träger von unveränderlichen (immutable) Daten dienen. Zusätzlich soll eine Objekt-orientierte Lösung zur Aggregation von Daten entworfen werden. Diese sollen den Programmierer in seiner Tätigkeit unterstützen und seinen Fokus auf das Modellieren, nicht das Verwalten, der Daten lenken.

Edwards-Curve Digital Siganture Algorithm(EdDSA)

Digitale Signaturen sollen mit Hilfe des Edwards-Curve Digital Siganture Algorithm (EdDSA) implementiert werden. EdDSA ist dabei als Erweiterung des Systems zu betrachten und wird kein bereits existierendes Feature ersetzen.

Versteckte Klassen

Versteckte Klassen sind Klassen, die die Möglichkeit bieten, dass ihr Byte-Code nicht direkt von anderen Klassen verwendet werden kann. Ihr Verwendungszweck wird damit vorrangig die Verwendung in Frameworks sein, die zur Laufzeit Klassen generieren und diese indirekt (mit Hilfe von Reflektion) verwenden.

Nashorn JavaScript Engine

Zwei Module, die bereits mit der Veröffentlichung von Java 11 als veraltet gekennzeichnet wurden, sollen entfernt werden. Es handelt sich dabei um die folgenden Module:

  • jdk.scripting.nashorn

  • jdk.scripting.nashorn.shell

Neuimplementierung der DatagramSocket API

Ziel dieser Neuerung ist es, die API der beiden Module java.net.DatagramSocket und java.netMulticastSocket hinsichtlich der Pflege und dem Debugging besser zu gestalten. Die aktuelle Implementation ist bis Java Version 1.0 zurückzuführen und besteht aus einer Mischung Java- und C-Code. Durch die Neuerungen wird die “legacy” Version trotzdem erhalten bleiben.

Deaktivierung von Biased Locking

Bei Features, die besonders komplexen Code in die JDK bringen, wie beispielsweise biased locking, kann es schnell dazu kommen, dass die aufwendige Pflege und Entwicklung dieser Features anderen Neuerungen in der Entwicklung im Weg stehen.

Mit der Veröffentlichung von JDK 15 soll biased locking deaktiviert und als veraltet gekennzeichnet werden.

Pattern Matching für “instanceof”

Pattern Matching für instanceof kehrt für eine zweite Preview-Runde zurück. Es war geplant, dass in der zweiten Preview-Runde Benutzer-Feedback gesammelt und das Feature um die Funktionalität von deconstruction patterns erweitert werden soll. Dieser Plan wurde verworfen und das Feature wird vorerst in seinem momentanen Zustand zur Verfügung stehen. Die Erweiterungen sollen fortlaufend hinzugefügt werden.

Text Blocks

Die mit der Veröffentlichung von Java JDK 13 vorgestellten Text Blocks scheinen nach den zwei vorherigen Preview-Runden bereit zu sein, als Feature in die JDK aufgenommen zu werden.

Garbage Collectors

ZGC: A Scalable Low-Latency Garbage Collector (Production)

Der Z Garbage Collector wurde mit der Veröffentlichung von JDK 11 als experimentelles Feature eingeführt. Grund dafür ist der Gedanke, dass ein Feature dieser Größe und Komplexität mit Vorsicht und iterativ in das System eingeführt werden sollte.
Viele Änderungen und Verbesserungen haben dafür gesorgt, dass der ZGC mit JDK 15 als volles Produktions-Feature in das System integriert wird.

Shenandoah: A Low-Pause-Time Garbage Collector (Production)

Ähnlich wie der ZGC, wurde der Shenandoah GC mit dem JDK 12 als experimentelles Feature eingeführt. Auch hier haben Verbesserungen dafür gesorgt, dass der Garbage Collector als Produktions-Feature aufgenommen wird.


→ Hier findest Du den Artikel zum direkten PDF-Download: madafa.de/download/artikel-downloads/


Schreibe einen Kommentar