Bessere Garbage Collectors, Mikro-Benchmarks und mehr

Java 12 – die neuen Funktionen im Überblick

| Autor / Redakteur: Thomas Joos / Stephan Augsten

Java 12 soll Entwicklern die Nutzung mit ein paar neuen und verbesserten Features versüßen.
Java 12 soll Entwicklern die Nutzung mit ein paar neuen und verbesserten Features versüßen. (Bild: PublicDomainPictures - Pixabay.com)

Mit Java 12 stellt Oracle auch neue Funktionen zur Verfügung. Mit Switch Expressions und anderen Neuerungen werden Erweiterungen integriert, welche auch die Syntax der Sprache ändern.

Mit Java 12 geht Oracle seiner Strategie nach, kleinere Funktionen mit jeder Version zu integrieren. Bisher hat Java Für switch-case-Konstuktionen auf Techniken gesetzt, die bereits seit Jahren oder Jahrzehnten verfügbar waren. Mit Java 12 will Oracle hier etwas modernisieren. Die neue Version erlaub Expressions und mehrere Werte für „case“. Das erlaubt eine sehr viel effektivere Unterscheidung von Fällen. Diese neue Technik trägt die Bezeichnung „Switch Expressions“.

Neben den „Switch Expressions“ werden in Java 12 weitere Neuerungen integriert. Beispiele dafür sind der neue Garabage Collector „Shenandoah“ oder die Möglichkeit Mikrobenchmarks durchzuführen. Weitere Neuerungen sind JVM Constants-API, ein AArch64-Port und Standard-CDS-Archive. Oracle entfernt alle Quellen, die sich auf arm64-Ports beziehen, und wird nur den AArch64-Port behalten.

Hier eine Liste aller JEPs in Java 12:

JEP 189 – Shenandoah Garbage Collector (Experimental)

Mit „Shenandoah“ kommt ein neuer GC-Algorithmus (Garbage Collection), der die Pausenzeiten reduziert. Hierfür werden Evakuierungsarbeiten gleichzeitig mit den laufenden Java-Threads durchführt. Die Pausenzeiten sind dabei unabhängig von der Heap-Größe und bleiben konstant, egal ob der Heap 200 Megabyte oder 200 Gigabyte beträgt. Es wird aber explizit darauf hingewiesen, dass es weiterhin andere GC-Algorithmen gibt, die den Durchsatz oder den Speicherbedarf über die Reaktionsfähigkeit stellen.

JEP 230 – Microbenchmark Suite

Java 12 wird mit einer Basis-Suite von Mikro-Benchmarks ausgeliefert. Damit will man es Entwicklern einfacher machen, bestehende Microbenchmarks auszuführen und neue zu erstellen. Die Suite basiert auf JMH (Java Microbenchmark Harness) und wird innerhalb des JDK-Quellcodes in einem eigenen Verzeichnis geführt, so dass beim Build eine entsprechende JAR-Datei entsteht. Filterfunktionen erlauben es dem Benutzer, nur die Benchmarks auszuführen, die für ihn von Interesse sind.

JEP 325 – Switch Expressions

In Vorbereitung auf das sogenannte Pattern Matching (JEP 305) ist aufgefallen, dass das existierende switch-Statement mit Blick auf Scoping und Kontrollfluss zu einigen Unregelmäßigkeiten führen kann. Experimentell lässt sich der switch-Befehl künftig als Anweisung (Statement) oder Ausdruck (Expression) verwenden. Der Entwickler kann Scoping und Kontrollflussverhalten dadurch traditionell oder in einer vereinfachten Form nutzen, was die alltägliche Kodierung vereinfachen soll.

JEP 334 – JVM Constants API

In Java 12 wird eine API zur Modellierung von nominalen Beschreibungen von Key-Class-Datei- und Laufzeit-Artefakten eingeführt. Im neuen Paket java.lang.invoke.constant wird hierfür eine Familie von wertbasierten symbolischen Referenztypen definiert. Damit existiert künftig eine einzige standardisierte Methode, um ladbare Konstanten (Loadable Constants) zu beschreiben.

JEP 340 – One AArch64 Port, Not Two

Im Java Development Kit (JDK) finden sich aktuell noch zwei 64-Bit-ARM-Ports. Mit Java 12 werden alle Quellen entfernt, die sich auf den arm64-Port beziehen, 32-Bit-ARM-Port und 64-Bit-Aarch64-Port bleiben bestehen. Dadurch will man doppelte Arbeit vermeiden, die für die Wartung von zwei Ports erforderlich ist.

JEP 341 – Default CDS Archives

Bereits seit der JDK 8u40 ist es möglich, Class Data-Sharing (CDS) zu aktivieren, was die Startzeit deutlich erhöht und Vorteile bei der Speicherfreigabe bringt. Benutzer müssen nun nicht länger einen -Xshare:dump manuell ausführen, um von der Funktion zu profitieren. Der JDK Build übernimmt dies nach dem Verlinken des JDK-Images.

JEP 344 – Abortable Mixed Collections for G1

Der Garbage Collector G1 wird dahingehend angepasst, dass Mixed Collections sich künftig abbrechen lassen, wenn sie das Pausenzeitziel möglicherweise überschreiten. Dies kann passieren, wenn die integrierte Heuristik ein zu bereinigendes Collection Set zusammenstellt, das zu viele Live-Objekte über die Regionen hinweg enthält. Erkennt G1 einen solchen Fall, teilt er die Sammlung in einen obligatorischen und einen optionalen Teil.

JEP 346 – Promptly Return Unused Committed Memory from G1

G1 soll im Leerlauf künftig automatisch Heap-Speicher an das Betriebssystem zurückzugeben, was bisher nicht der Fall ist. Bisher gibt der Garbage Collector den Speicher aus dem Java-Heap beispielsweise erst bei voller Sammlung oder im Falle eines Concurrent Cycle zurück. Beide Szenarien kommen aber im Falle des G1 zu selten zum Tragen, was sich besonders nachteilig in Containerumgebungen auswirkt.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45775314 / Datenbanken)