JDK 14: Die neuen Funktionen in Java 14

Das Java Development Kit (JDK) 14 hat GA erreicht und ist in einer Version mit allgemeiner Verfügbarkeit für Produktionsbereitstellungen enthalten. Das Upgrade auf Standard-Java umfasst neue Funktionen wie JDK Flight Recorder-Ereignis-Streaming, Pattern Matching und Switch-Ausdrücke. 

JDK 14 ist eine Feature-Version von Java und keine LTS-Version (Long Term Support) nach der sechsmonatigen Release-Trittfrequenz für Java. JDK 14 wird im April und Juli Sicherheitsupdates erhalten, bevor es von JDK 15 abgelöst wird, ebenfalls eine Nicht-LTS-Version, die im September erscheinen soll. Die aktuelle LTS-Version ist JDK 11. 

Zu den neuen Funktionen und Verbesserungen in JDK 14 gehören:

  • JFR Event Streaming bietet eine API für den kontinuierlichen Verbrauch von JFR-Daten aus In-Process- und Out-of-Process-Anwendungen. JFR ist ein Tool zum Sammeln von Profilierungs- und Diagnosedaten über eine Java-Anwendung und die JVM, während diese ausgeführt werden. Der Ereignis-Streaming-Vorschlag zeichnet die gleichen Ereignisse wie im Fall des Nicht-Streaming auf, wobei der Overhead nach Möglichkeit weniger als ein Prozent beträgt. Ereignis-Streaming muss mit Nicht-Streaming-Aufzeichnungen koexistieren, sowohl festplattenbasiert als auch speicherbasiert. Motivierend für diesen Vorschlag ist eine Situation, in der die HotSpot-VM mit JFR mehr als 500 Datenpunkte ausgibt, von denen die meisten nur durch Parsen von Protokolldateien verfügbar sind. Derzeit muss ein Benutzer eine Aufzeichnung starten, stoppen, den Inhalt auf die Festplatte kopieren und dann die Aufnahmedatei analysieren. Dies funktioniert gut für die Erstellung von Anwendungsprofilen, jedoch nicht für Überwachungszwecke.Ein Beispiel für die Überwachung der Nutzung ist ein Dashboard, in dem dynamische Aktualisierungen von Daten angezeigt werden. Das Erstellen einer Aufzeichnung ist mit einem Overhead verbunden, z. B. dem Kopieren von Daten aus dem Festplatten-Repository in eine separate Aufzeichnungsdatei. Wenn es eine Möglichkeit gäbe, Daten zu lesen, die aus dem Festplatten-Repository aufgezeichnet wurden, ohne eine neue Aufzeichnungsdatei zu erstellen, könnte ein Großteil des Overheads vermieden werden.
  • Die geplante Verbesserung  NullPointerExceptionsbetrifft die Verbesserung der Verwendbarkeit der von der JVM generierten Ausnahmen, indem genau beschrieben wird, welche Variable null war. Die Autoren des Vorschlags möchten Entwicklern und Supportmitarbeitern hilfreiche Informationen über die vorzeitige Beendigung eines Programms liefern und das Programmverständnis verbessern, indem sie eine dynamische Ausnahme klarer mit statischem Programmcode verknüpfen. Ein Ziel ist es, Verwirrung und Bedenken der Entwickler zu verringern NullPointerExceptions.
  • Nichtflüchtige zugeordnete Bytepuffer würden neue JDK-spezifische Dateizuordnungsmodi hinzufügen, mit denen die FileChannel-API zum Erstellen von MappedByteBufferInstanzen verwendet werden kann, die auf nichtflüchtigen Speicher (NVM) verweisen. Mit NVM können Programmierer den Programmstatus programmübergreifend erstellen und aktualisieren, ohne die erheblichen Kopier- oder Übersetzungskosten zu verursachen, die normalerweise für Eingabe- und Ausgabeoperationen erforderlich sind. Dies ist besonders wichtig für Transaktionsprogramme. Daher besteht das Hauptziel dieses JDK-Erweiterungsvorschlags darin, sicherzustellen, dass Clients von einem Java-Programm aus kohärent und effizient auf NVM zugreifen und es aktualisieren können. Ein sekundäres Ziel besteht darin, dieses Festschreibungsverhalten mithilfe einer eingeschränkten, JDK-internen API zu implementieren, die in der Klasse definiert ist Unsafe, damit es von anderen Klassen als verwendet werden kannMappedByteBufferDas muss möglicherweise auf NVM festgelegt werden. Ein weiteres Ziel besteht darin, zu ermöglichen, dass über NVM zugeordnete Puffer von vorhandenen APIs zur Überwachung und Verwaltung verfolgt werden. Zu den Ziel-OS / CPU-Plattformen gehören Linux / x64 und Linux / AArch64.
  • Switch-Ausdrücke vereinfachen die Codierung, indem sie erweitert werden,  switchsodass sie entweder als Anweisung oder als Ausdruck verwendet werden können. Switch-Ausdrücke werden voraussichtlich eine permanente Funktion in JDK 14 sein, nachdem sie in JDK 12 und JDK 13 in der Vorschau angezeigt wurden. Switch-Ausdrücke bereiten auch die Verwendung des Pattern Matching in vor switch. Mit dem Mustervergleich können Entwickler Komponenten unter bestimmten Bedingungen präziser und sicherer aus Objekten extrahieren. 
  • NUMA-fähige Speicherzuweisung für den G1-Garbage Collector zur Verbesserung der G1-Leistung auf großen Computern. 
  • Entfernen des CMS-Garbage Collectors (Concurrent Mark Sweep), der zuvor veraltet war und zur Entfernung vorgesehen war. Nachfolger von CMS sind entstanden, darunter ZGC und Shenandoah. 
  • Portierung von ZGC nach MacOS. Es wurde bisher nur unter Linux unterstützt.
  • Entfernen der Tools pack200 und unpack200 sowie der Pack200-API im java.util.jarPaket. Diese wurden in Java SE 11 nicht mehr unterstützt, um sie in Zukunft zu entfernen. Pack200 ist ein Komprimierungsschema für JAR-Dateien.
  • Datensätze, die eine kompakte Syntax für die Deklaration von Klassen bieten, die transparente Halter für flach unveränderliche Daten sind. Datensätze machen es einfach, Klassen zu erstellen, die im Wesentlichen Datenträger sind, ohne viel Boilerplate schreiben zu müssen. Der Vorschlag besagt, dass es einfach und präzise sein sollte, flach unveränderliche, gut erzogene nominale Datenaggregate zu deklarieren.
  • Ein Verpackungswerkzeug in einer Inkubator-Entwicklungsphase zum Verpacken eigenständiger Java-Anwendungen. Das Tool würde auf JavaFX basieren javapackager. Ein solches Tool war in Java enthalten, wurde jedoch im Rahmen der Entfernung von JavaFX aus JDK 11 entfernt.
  • Erweitern Sie die Sprache mit dem Mustervergleich für den instanceof Bediener. Dies wäre eine Vorschaufunktion in JDK 14. Mit dem Mustervergleich kann die allgemeine Logik in einem Programm, hauptsächlich das bedingte Extrahieren von Komponenten aus Objekten, präziser und sicherer ausgedrückt werden. Der Code kann kurz und typsicher gemacht werden.
  • Eine zweite Vorschau von Textblöcken, ein mehrzeiliges Zeichenfolgenliteral, das die meisten Escape-Sequenzen überflüssig macht und die Zeichenfolge automatisch auf vorhersehbare Weise formatiert. Textblöcke geben dem Entwickler bei Bedarf die Kontrolle über das Format, vereinfachen das Schreiben von Java-Programmen und verbessern die Lesbarkeit von Zeichenfolgen. Textblöcke wurden in JDK 13 in der Vorschau angezeigt. Die JDK 14-Iteration würde Escape-Sequenzen zum Verwalten expliziter Leerzeichen und zur Steuerung von Zeilenumbrüchen hinzufügen.
  • Verwerfen der Kombination der Garbage Collection-Algorithmen Parallel Scavenge und Serial Old. Java-Betreuer glauben, dass diese Kombination nur sehr wenig verwendet wird, aber viel Wartung erfordert.
  • Portierung des ZGC (Z Garbage Collector) nach Windows. Diese Funktion wurde erneut in die offiziell ausgerichtete Liste verschoben, nachdem sie wieder in die Liste der vorgeschlagenen Ziele zurückgesetzt wurde.
  • Zugriffs-API für Fremdspeicher mit der Einführung einer API für Java-Programme für den sicheren und effizienten Zugriff auf Fremdspeicher außerhalb des Java-Heaps. Diese API sollte als Alternative zu den Hauptmethoden dienen, über die Java-Programme auf den Speicher zugreifen, einschließlich nio.ByteBufferund sun.misc.Unsafe. Die neue API sollte in der Lage sein, mit verschiedenen Arten von Speicher zu arbeiten, einschließlich nativem, beständigem Speicher und verwaltetem Heap. Es sollte der API nicht möglich sein, die Sicherheit der JVM zu untergraben. Die Freigabe des Speichers sollte im Quellcode explizit sein. Es wird erwartet, dass die API bei der Entwicklung der nativen Interoperationsunterstützung hilft, die das Ziel von Project Panama ist.
  • Verfall der Solaris / Sparc-, Solaris / x64- und Linux / Sparc-Ports mit der Absicht, sie in einer zukünftigen Version zu entfernen. Durch das Löschen der Unterstützung für diese Ports können OpenJDK-Mitarbeiter die Entwicklung neuer Funktionen beschleunigen. Obwohl Solaris und Sparc bei Sun Microsystems, dem ursprünglichen Entwickler von Java, wichtige Technologien waren, wurden sie in den letzten Jahren von den Linux-Prozessoren und Intel-Prozessoren im Technologiebereich abgelöst.

Wo kann ich JDK 14 herunterladen?

Sie können Open Source JDK 14 von jdk.java.net für Linux, Windows und macOS herunterladen. Sie können Oracle Commercial Java SE 14-Downloads von Oracle.com herunterladen.