JDK 10: Was ist neu in Java 10?

JDK 10, eine Implementierung von Java Standard Edition 10, wurde am 20. März 2018 veröffentlicht. Zu den wichtigsten Verbesserungen zählen lokale Variablentypen sowie Verbesserungen für die Speicherbereinigung und -kompilierung.

JDK 10 soll nur kurzfristig veröffentlicht werden, und öffentliche Updates für JDK 10 sollen in sechs Monaten enden. Das kommende JDK 11, das im September erscheinen soll, wird eine LTS-Version (Long Term Support) von Java sein. LTS-Veröffentlichungen sind alle drei Jahre fällig.

Oracle hat eine sechsmonatige Release-Trittfrequenz für Java-Releases festgelegt. Es war geplant, dieses Upgrade und die Nachfolger nach Jahr und Monat der Veröffentlichung zu benennen, wobei die erste Version Java 18.3 hieß. Aber diese Pläne wurden verworfen, nachdem Einwände erhoben wurden.

Wo kann man Java JDK 10 herunterladen?

Sie können JDK 10 von der Oracle-Website herunterladen.

Neue und verbesserte Funktionen in JDK 10

Zu den Hauptfunktionen von JDK 10 gehören:

  • Typinferenz lokaler Variablen, um die Java-Sprache zu erweitern und die Typinferenz auf Deklarationen lokaler Variablen mit Initialisierern zu erweitern.
  • Parallele vollständige Speicherbereinigung für den G1-Speicherbereiniger, um die Latenzen im ungünstigsten Fall zu verbessern.
  • Datenfreigabe für Anwendungsklassen, um Startzeit und Footprint zu optimieren. Die vorhandene Funktion zur gemeinsamen Nutzung von Klassendaten wurde erweitert, sodass Anwendungsklassen im freigegebenen Archiv abgelegt werden können.
  • Ein experimenteller Just-in-Time-Compiler, Graal, kann auf der Linux / x64-Plattform verwendet werden.
  • Docker-Bewusstsein. Bei der Ausführung auf Linux-Systemen erkennt die Java Virtual Machine (JVM), ob sie in einem Docker-Container ausgeführt wird. Containerspezifische Informationen - die Anzahl der CPUs und der dem Container zugewiesene Gesamtspeicher - werden von der JVM extrahiert, anstatt das Betriebssystem abzufragen. (Die Anzahl der für den Java-Prozess verfügbaren CPUs wird aus bestimmten Mengen, Freigaben oder Kontingenten von Prozessoren berechnet.)
  • Drei neue JVM-Optionen, mit denen Docker-Container-Benutzer mehr Kontrolle über den Systemspeicher haben.
  • Eine Fehlerbehebung zur Korrektur des Anfügemechanismus beim Versuch, eine Verbindung von einem Hostprozess zu einem Java-Prozess in einem Docker-Container herzustellen.
  • Kürzere Startzeiten für das jShell REPL-Tool, insbesondere wenn eine Startdatei mit vielen Snippets verwendet wird.
  • Neue APIs, um die Erstellung nicht veränderbarer Sammlungen besser zu ermöglichen. Die copyOf, Set.copyOfund Map.copyOfMethoden erstellen neue Kollektion Instanzen von bestehenden Instanzen. Neue Methoden toUnmodifiableList, toUnmodifiableSetund toUnmodifiableMapwurden zu der Collectorsin dem Stream - Paket - Klasse, die Elemente eines Stromes erlaubt , in eine unveränderbare Sammlung gesammelt werden.
  • Eine Typinferenz für lokale Variablen, um die Sprache zu erweitern und die Typinferenz auf lokale Variablen zu erweitern. Ziel ist es, die mit der Codierung verbundene „Zeremonie“ zu reduzieren und gleichzeitig die Sicherheit des statischen Typs zu gewährleisten.
  • Eine saubere Garbage Collector-Schnittstelle zur Verbesserung der Quellcode-Isolation verschiedener Garbage Collectors. Zu den Zielen dieser Bemühungen gehört eine bessere Modularität des internen Garbage Collection-Codes in der virtuellen HotSpot-Maschine und die Erleichterung des Hinzufügens eines neuen Garbage Collector zu HotSpot.
  • Parallele vollständige Speicherbereinigung für den G1-Speicherbereiniger. Ziel ist es, die Latenz im ungünstigsten Fall durch Implementierung von Parallelität zu verbessern.
  • Aktivieren von HotSpot zum Zuweisen des Objektheaps auf einem alternativen Speichergerät, z. B. einem vom Benutzer angegebenen NVDIMM-Speichermodul. Diese Funktion sieht vor, dass zukünftige Systeme heterogene Speicherarchitekturen aufweisen können.
  • Aktivieren des Grall Java-basierten Just-in-Time-Compilers für die experimentelle Verwendung auf der Linux / x64-Plattform.
  • Konsolidierung der Repositorys der JDK-Gesamtstruktur in einem einzigen Repository, um die Entwicklung zu optimieren. Die Codebasis wurde bisher in mehrere Repos aufgeteilt, was zu Problemen bei der Quellcodeverwaltung führen kann.
  • Datenfreigabe für Anwendungsklassen, um den Platzbedarf zu verringern, indem gemeinsame Klassenmetadaten prozessübergreifend gemeinsam genutzt werden. Die Startzeit wird ebenfalls verbessert.
  • Thread-lokale Handshakes zum Ausführen eines Rückrufs für Threads, ohne einen globalen VM-Sicherheitspunkt auszuführen. Einzelne Threads können anstelle aller Threads oder ohne Threads gestoppt werden.
  • Bereitstellung eines Standardsatzes von Stammzertifizierungsstellenzertifikaten im JDK. Ziel ist es, Open-Source-Stammzertifikate im Java SE-Stammzertifizierungsprogramm von Oracle zu verwenden, um OpenJDK-Builds für Entwickler attraktiver zu machen.

Die langfristige Java-Roadmap

Folgendes wurde von Oracle für die nächste und spätere Version von Java SE in Betracht gezogen:

  • Das Amber-Projekt, das ein Inkubator für kleinere, produktivitätsorientierte Sprachfunktionen war, die Inferenzen vom Typ lokaler Variablen beinhalten, um die Zeremonie beim Schreiben von Java-Code zu verringern. verbesserte Aufzählungen, um die Ausdruckskraft des Aufzählungskonstrukts zu verbessern, indem Typvariablen in Aufzählungen zugelassen und eine schärfere Typprüfung auf Aufzählungskonstanten durchgeführt werden; und Lambda-Reste, um die Verwendbarkeit von Lambda und Methodenreferenzen zu verbessern.
  • Projekt Panama zur Verbindung von JVM und nativem Code mit nativen Funktionsaufrufen von der JVM und nativem Datenzugriff von der JVM.
  • Valhalla, ein Inkubator-Projekt für fortgeschrittene Kandidaten für Java-VMs und Sprachfunktionen, einschließlich Werttypen und allgemeiner Spezialisierung.
  • Project Loom, um die Komplexität beim Schreiben gleichzeitiger Anwendungen zu verringern. Der Plan sieht vor, alternative Thread-Implementierungen im Benutzermodus, begrenzte Fortsetzungen und andere Konstrukte hinzuzufügen, die eine Manipulation des Aufrufstapels beinhalten. Das Hauptziel dieses Vorschlags besteht darin, eine alternative Implementierung von Threads anzubieten, die von in Java geschriebenen Schedulern verwaltet werden. Das Java-Programmiermodell gewöhnlicher Java-Threads würde beibehalten, während die Leistung verbessert und der Platzbedarf verringert wird.

Mit dem neuen sechsmonatigen Release-Zeitplan können Funktionen, bei denen ein Release verpasst wird, um nur sechs Monate verzögert werden, wenn das nächste Release herauskommt. Über das hinaus, was für JDK 10 angekündigt wurde, hat sich Oracle nicht verpflichtet, wann eine der neuen vorgeschlagenen Funktionen tatsächlich in Java verfügbar sein wird.