Alles über Java12 – Neue Features, Sicherheit und Switch Expression Statement (Beispiele)

Veröffentlicht: 2019-04-07

Java 12 - Alles neu - Details von Crunchify

Am 19th March 2019 wurde Java12 veröffentlicht. Wie wir wissen, war Java12 Teil der schnellen Veröffentlichung, es wurde nur 6 Monate nach der Veröffentlichung von Java11 veröffentlicht.

In diesem Tutorial werden wir alle Änderungen und neuen Funktionen von Java12 durchgehen.

Persönlich habe ich für meine gesamte Entwicklung auf Java12 umgestellt, aber für den Produktionszyklus ist es noch zu früh. Speichern Sie dieses Tutorial als Lesezeichen, wenn Sie für alle Ihre Produktionsprojekte zu Java12 wechseln möchten.

Was ist neu in Java12? Neue Funktionen in Java12:

Es gibt einige interne und benutzerbezogene Funktionen in Java12, die sich geändert haben. Werfen wir einen Blick darauf, was in Java 12 steckt.

Änderung-1) Gleichzeitiges Entladen der Klasse

Der normale Garbage Collector entlädt normalerweise ungenutzte Variablen während des GC-Zyklus, und wir bemerken normalerweise einen Stopp/eine Pause im Prozess oder eine CPU-Zunahme während dieser Zeit. Normalerweise merken wir das gar nicht.

Mit ZGC (Z Garbage Collector) unterstützt Java12 auch das gleichzeitige Entladen von Klassen. Da dies während des normalen GC-Zyklus geschieht, gibt es keine Pause und auch keine zusätzliche Speichernutzung mehr.

Standardmäßig ist ZGC in Java12 aktiviert. Keine Aktion mehr erforderlich

Wie deaktiviere ich ZGC?

  • Starten Sie einfach Ihre Anwendung mit dem JVM-Befehlszeilenargument -XX:-ClassUnloading

Änderung-2) Weitere Informationen zum JVM-Absturz erhalten

Wenn ein OOM-Fehler (Out Of Memory) auftritt oder JVM abstürzt, erstellt Java normalerweise Dump-Dateien mit allen Details.

Mit diesen JVM-Parametern werden Dump-Dateien im Ordner /tmp/crunchify/ bei einem OOM-Fehler erstellt.

In Java12 wurde eine weitere Option hinzugefügt:

Es wird eine neue Protokolldatei namens hs_err<pid>.log mit allen Details zum JVM-Absturz erstellt. Dies ist sehr hilfreich für Ihre Produktionsumgebung, wenn Sie häufige Abstürze sehen und mehr debuggen möchten.

Standardmäßig ist es deaktiviert, aber Sie können einen umfangreichen Absturzbericht aktivieren, indem Sie den obigen JVM-Befehlszeilenparameter hinzufügen.

Change-3) Kompakte Zahlenformatierung

java.text fügt Unterstützung für das kompakte Zahlenformat hinzu. 100o kann als 1K und 100000 als 100K bezeichnet werden.

Ergebnis:

Änderung-4) Java-Sicherheitsverbesserungen

Änderungen security-libs/java.security :

  • disallow und allow Optionen für java.security.manager
    • wenn disallow dann System. setSecurityManager kann nicht zum Festlegen des Sicherheitsmanagers verwendet werden.
  • -groupname-Option Der Keytool-Schlüsselpaargenerierung hinzugefügt
    • Ein Benutzer kann beim Generieren eines Schlüsselpaars eine benannte Gruppe angeben.
  • Anpassen PKCS12 keystore Generierung
    • enthält Algorithmen und Parameter für
      • Schlüsselschutz
      • Zertifikatsschutz
      • MacData
  • Neue JFR-Sicherheitsereignisse
    • Was ist JFR (Java Flight Recorder)
    • 4 neue JFR-Events hinzugefügt
      • jdk.X509Zertifikat
      • jdk.X509Validierung
      • jdk.TLSHandshake
      • jdk.SecurityPropertyModification

Change-5) JEP 325: Ausdrücke wechseln

JEP 325 Switch Expressions Tutorial von Crunchify

Erweiterte Switch statement wird jetzt in Java12 unterstützt.

  • Java 12-basierter case L -> syntax . Hier ist keine Pause nötig.
  • Verwendung des Switch-Ausdrucks
    • Dies ist eine vereinfachte Switch-Anweisung
    • Wenn ein Label gefunden wird, wird nur der Ausdruck rechts neben einem Pfeillabel ausgeführt.
    • Keine Break-Anweisung erforderlich.

CrunchifyJava12SwitchExample.java

Ergebnis von IntelliJ IDEA:

Java 12 Switch Statement Tutorial Ergebnis - Crunchify

Änderung-6) JVM-Konstanten-API

java.lang.invoke.constant : Wie Sie vielleicht wissen, hat die Java-Klasse einen konstanten Pool, der alle Operanden zur Laufzeit speichert.

Java12 fügt eine API zum Aufrufen von Konstanten zur Laufzeit hinzu.

Entfernte Funktionen von Java12:

Entfernte Funktionen aus Java12 - Crunchify-Tipps

Veraltete Funktionen von Java12:

Veraltete Funktionen von Java12 - Crunchify-Tipps

Lassen Sie mich wissen, wenn Sie ein praktisches Tutorial zu Java12 haben, das Sie hier einfügen möchten.