Tout sur Java12 - Nouvelles fonctionnalités, sécurité et déclaration d'expression de commutateur (exemples)

Publié: 2019-04-07

Java 12 - Toutes les nouveautés - Détails par Crunchify

Le 19th March 2019 , Java12 est sorti. Comme nous le savons, Java12 faisait partie de la version rapide, il a été publié seulement 6 mois après la sortie de Java11.

Dans ce didacticiel, nous passerons en revue toutes les modifications et les nouvelles fonctionnalités de Java12.

Personnellement je suis passé à Java12 pour tout mon développement mais pour le cycle de production c'est trop tôt. Gardez ce didacticiel dans vos favoris lorsque vous souhaitez passer à Java12 pour tous vos projets de production.

Quoi de neuf dans Java12 ? Nouvelles fonctionnalités de Java12 :

Il existe de nombreuses fonctionnalités internes et liées au flux de travail utilisateur dans Java12 qui ont changé. Voyons ce qu'il y a à l'intérieur de Java 12.

Changement-1) Déchargement de classe simultanée

Normal Garbage Collector décharge généralement la variable inutilisée pendant le cycle GC et nous remarquons généralement un arrêt/pause dans le processus, ou une augmentation du processeur pendant ce temps. Habituellement, nous ne le remarquons même pas.

Avec ZGC (Z Garbage Collector) - Java12 prend également en charge le déchargement simultané des classes. Comme cela se produit pendant le cycle GC normal, il n'y a pas de pause ni d'utilisation supplémentaire de la mémoire.

Par défaut, ZGC est activé dans Java12. Aucune autre action requise

Comment désactiver ZGC ?

  • Démarrez simplement votre application avec l'argument de ligne de commande JVM -XX:-ClassUnloading

Changement-2) Obtenez plus de détails sur JVM Crash

En cas d'erreur OOM (Out Of Memory) ou de plantage de la JVM, Java crée généralement des fichiers de vidage avec tous les détails.

Avec ces paramètres JVM, les fichiers de vidage seront créés sous le dossier /tmp/crunchify/ en cas d'erreur OOM.

Il y a une autre option ajoutée dans Java12 :

Un nouveau fichier journal sera créé nommé hs_err<pid>.log avec tous les détails sur le crash de la JVM. Ceci est très utile pour votre environnement de production si vous rencontrez des plantages fréquents et souhaitez déboguer davantage.

Par défaut, il est désactivé, mais vous pouvez activer un rapport d'incident complet en ajoutant le paramètre de ligne de commande JVM ci-dessus.

Changement-3) Formatage des nombres compacts

java.text ajoute la prise en charge du format numérique compact. 100o peut être mentionné comme 1K et 100000 peut être mentionné comme 100K .

Résultat:

Changement-4) Améliorations de la sécurité Java

security-libs/java.security change :

  • interdire et autoriser les options pour java.security.manager
    • si disallow alors System. setSecurityManager ne peut pas être utilisé pour définir le gestionnaire de sécurité.
  • Option -groupname ajoutée à la génération de paires de clés keytool
    • un utilisateur peut spécifier un groupe nommé lors de la génération d'une paire de clés.
  • Personnalisation PKCS12 keystore
    • comprend des algorithmes et des paramètres pour
      • protection des clés
      • certificat de protection
      • MacData
  • Nouveaux événements de sécurité JFR
    • Qu'est-ce que JFR (Java Flight Recorder)
    • 4 nouveaux événements JFR ajoutés
      • jdk.X509Certificat
      • jdk.X509Validation
      • jdk.TLSHhandshake
      • jdk.SecurityPropertyModification

Changement-5) JEP 325 : Changer d'expressions

JEP 325 Tutoriel sur les expressions de commutation par Crunchify

L' Switch statement améliorée est désormais prise en charge dans Java12.

  • case L -> syntax . Ici, aucune pause n'est nécessaire.
  • Utilisation de l'expression de commutation
    • c'est une instruction switch simplifiée
    • si une étiquette correspond, alors seule l'expression à droite d'une étiquette fléchée est exécutée.
    • Aucune instruction break n'est nécessaire.

CrunchifyJava12SwitchExample.java

IntelliJ IDEA Résultat :

Résultat du didacticiel Java 12 Switch Statement - Crunchify

Changement-6) API des constantes JVM

java.lang.invoke.constant : Comme vous le savez peut-être, la classe Java a un pool constant qui stocke tous les opérandes au moment de l'exécution.

Java12 ajoute une API pour invoquer des constantes lors de l'exécution.

Fonctionnalités supprimées de Java12 :

Fonctionnalités supprimées de Java12 - Crunchify Tips

Fonctionnalités obsolètes de Java12 :

Fonctionnalités obsolètes de Java12 - Crunchify Tips

Faites-moi savoir si vous avez un tutoriel pratique sur Java12 que vous aimeriez inclure ici.