Si vous êtes développeur, vous savez très bien que depuis Java 9, les lancements des nouvelles versions s’enchaînent à une vitesse incroyable, pratiquement tous les 6 mois. Java 14 (Java SE 14) et le Java Development Kit 14 (JDK 14) ont été lancés le 17 mars dernier. Cette version apporte quelques nouveautés intéressantes par rapport au langage, ainsi que des mises à jour de l’API et des améliorations du JVM. Dans cet article, nous ferons un récapitulatif des principales nouveautés de cette dernière version de Java.
Un point sur les fameux nuls pointer
XX:+ShowCodeDetailsInExceptionMessagesUn point important à ne pas négliger : si vous travaillez avec des applications dans un cadre de haute sécurité, ce type de message peut révéler le nom des variables, ce qui peut entraîner un risque de sécurité.
L'utilisation des records sur Java 14
public record Personne14(String prenom, String nom, Integer âge){}La différence est que ce type de classe ne nécessite pas de créer les getters, setters, etc. Pour accéder à un champ, on utilise le nom de celui-ci :
Personne14 p = new Personne14("Pierre", "Dupont","40");p.prenom(); À ne pas négliger : si vous travaillez avec des applications dans un cadre de haute sécurité, ce type de message peut révéler le nom des variables, ce qui peut entraîner un risque de sécurité.
Les Enchanced Switch Expressions
public void determineBestTeam() {String country = "Spain" ; String bestTeam = "" ; switch (country) { case "Spain" : bestTeam = "Barcelona"; break ; case "France" : bestTeam = "PSG"; break ; case "Italy" : bestTeam = "Juventus"; break ; } System.out.println(bestTeam) ; } Avec Java 14, nous pourrons maintenant faire comme ça :
public void determineBestTeam() {String country = "Spain" ; String bestTeam = switch (country) { case "Spain" -> "Barcelona"; case "France" -> "PSG" ; case "Italy" -> { // actions yield "Juventus"; } default -> throw new IllegalStateException("Unexpected value : " + country) ; } ; System.out.println(bestTeam) ; } }
La conversion directe des objets
public void foo() { Object obj = "String object"; if (obj instanceof String) { String str = (String) obj; System.out.println(str.toLowerCase()) ; } } Après : public void foo(){ Object obj = "String object"; if(obj instanceof String str){ System.out.println(str.toLowerCase()) ; } }
Les packages simplifiés
Souvent, les deux aspects les plus compliqués à traiter dans un environnement Java sont l’installation et la production des packages JAR. En plus de ces packages, il faut ajouter un kit d’installation adapté au système local où l’application Java sera installée.
Maintenant, avec Java 14, vous pourrez utiliser l’outil « jpackage » avec lequel vous pourrez produire un package spécifique à la plateforme avec toutes les dépendances, comme si vous réunissiez tous les fichiers Jar dans un même endroit. Les formats dépendent du système local : deb et rpm (Linux), pkg et dmg (macOS), msi et exe (Windows).
Le traitement simplifié de blocs de texte
String requete = """ SELECT c \ FROM Countries c \ WHERE c.geoId = 37 """ ;
Et encore d'autres nouveautés
D’autres changements mineurs sont également annoncés :
- amélioration de certains garbage collectors spécifiques à l’architecture NUMA ;
- API permettant aux applications Java d’accéder de manière sûre et efficiente à la mémoire externe ;
- le garbage collector CMS est éliminé ;
- les outils pour comprimer les JAR utilisant l’algorithme Pack200 sont également supprimés.
En conclusion, les changements apportés par la dernière version de Java vont dans la bonne direction et certains d’entre eux tels que Helpful Null Pointer Exceptions devraient aider énormément les développeurs pendant l’étape de test. Néanmoins, n’oubliez pas que la plupart de ces nouveautés sont en « preview » et qu’elles ne devraient pas être utilisées dans un environnement de production.