Retour vers les blogs
Blog Img

Les meilleures fonctionnalités de Java 17 pour les développeurs

En septembre 2021, Oracle a publié la version 17 de Java. Pour les fans de chiffres : il y a eu 6 nouvelles versions en moins de 3 ans. Aussi, la question se pose de savoir si ces mises à jour successives apportent de réelles nouveautés. Nous pouvons venir éclairer votre lanterne : Java Development Kit 17 possède bien de nouvelles options intéressantes. Vous pouvez aussi anticiper l’évolution future. Vous souhaitez connaître les fonctionnalités de JDK 17 ? Nous vous les dévoilons.

Développement accéléré des kits de développement de Java

Le choix d’une rétrospective des 6 versions n’est pas sans raison. Lancée en 1995, la version bêta de JDK a été mise à jour régulièrement. Pour accélérer ce développement, Oracle publie une nouvelle version tous les 6 mois depuis 2018. L’idée est de publier une version LTS (Long Term Support) tous les deux ans. Tout ne se déroule pas comme prévu. Le précédent LTS était Java 11 en 2018 (c'est pourquoi nous remontons à 6 versions. La version précédente était la version 8 (2014). Java 17 devrait être remplacé par Java 21 en tant que version LTS en 2023.

Nouvelles et anciennes fonctionnalités

Voilà pour les versions. Qu'est-ce qui va changer pour les développeurs ? Plusieurs choses. Avec un calendrier accéléré des mises à jour, Oracle a la liberté de tester de nouvelles fonctionnalités et de laisser les développeurs travailler avec ces fonctions avant de les intégrer à la version officielle. Vous pouvez travailler avec des aperçus de ces fonctionnalités pendant une ou deux versions. Par exemple, JEP 359 Records était un aperçu dans JDK 14 et 15, avant d'être activé par défaut dans JDK 16. Vous pouvez activer les fonctionnalités d'aperçu en ajoutant enable-preview comme argument au compilateur.

Top 3 des fonctionnalités de JDK 17

Java 17 est une mise à jour LTS. Il est donc probable que la majorité des entreprises passeront à cette version. La version LTS devient plus intéressante que les mises à jour intermédiaires. Trois fonctionnalités de cette version attirent l’attention. Ce sont :

  1. Inférence de type variable locale ;

  2. Amélioration du switch ;

  3. La correspondance de modèles avec instanceof. 

L’inférence de type variable locale

L’utilisation du code Java peut rapidement générer une confusion de langages. L'inférence de type de variable locale aide à minimiser ce problème. Dans les anciennes versions de Java, vous deviez déclarer deux fois le type d'une variable. En supposant que vous utilisez <> (ajouté dans la version 7), vous avez besoin d'un ensemble de paramètres (s'ils sont identiques des deux côtés de la comparaison). Après cela, vous devez répéter la même variable dans le HashMap. Dans la version 17, vous définissez un mot-clé en tant que variable, puis vous laissez le compilateur faire sa tâche. Vous gagnez ainsi quelques lignes de code.

Deux détails importants lors de la déclaration d’une variable

Cela semble simple, mais vous devez garder deux choses à l'esprit lorsque vous déclarez une variable. Pour commencer, vous ne pouvez pas modifier dynamiquement le type de variable. Une chaîne reste une chaîne. Vous ne pouvez pas transformer cela spontanément en un int ou un float. Ensuite, une fois que vous appelez la variable, vous devez lui attribuer un type. Le compilateur ne parcourt pas votre code pour déterminer ce que la variable finira par faire.

Amélioration du switch

Dans les versions précédentes de JDK, nous avons tous recherché le break manquant dans une instruction switch. Même un simple switch fournit de nombreuses lignes de code et chaque instruction doit également se terminer par une instruction break. Si vous oubliez le break, le compilateur exécute le code sur la ligne suivante comme s'il appartenait à la précédente (et vous passez la nuit à déboguer). JDK 17 résout ce problème en élargissant notre arsenal avec des expressions switch.

Expression Switch

Dans une expression switch, le break n'est pas nécessaire pour indiquer que la ligne à exécuter se termine. Au lieu de cela, vous utilisez -> pour créer des lignes. A gauche de la flèche vous définissez le case, à droite l'action à effectuer. Le nombre de lignes de code est alors moins élevé et vous vous épargnez des résultats inattendus (si vous oubliez un break). De plus, dans l'expression switch, vous pouvez choisir entre return ou yield comme opérateur. Return renvoie la valeur associée à la variable. Avec yield, vous pouvez d'abord effectuer une opération sur cette valeur.

Correspondance de modèles avec instanceof

La correspondance de modèles était une fonctionnalité d'aperçu dans Java 14 et Java 15. Elle a été officiellement ajoutée dans Java 16. Étant donné que Java 17 est la version LTS, davantage de développeurs ont désormais accès à cette mise à jour. Nous utilisons instanceof depuis un certain temps pour vérifier si une variable est d'un certain type. Dans les versions précédentes, vous pouviez alors définir d'autres actions basées sur true ou false. La correspondance de modèles permet d'agir directement sur la découverte de l'action opérateur instanceof. Vous gagnez ainsi un certain nombre de lignes de code.

Déterminer le type et effectuer une action sur une seule ligne

Dans l'ancienne application d'instanceof, vous déclariez d'abord que vous alliez déterminer le type d'une certaine variable. Ensuite, en fonction du résultat, vous pouvez récupérer le contenu de cette variable et en faire quelque chose. Dans la nouvelle version d'instanceof, vous pouvez indiquer sur une ligne que vous souhaitez déterminer le type et, dans cette même ligne, indiquer immédiatement ce que vous souhaitez faire de ce contenu en cas de résultat spécifique. Si la variable est de type string, et si le contenu est « chien », vous pouvez demander directement l’affichage de « ouah » à l'écran. Dans les anciennes versions, vous aviez besoin de plusieurs lignes de code.

Correspondance de modèle pour switch

Une fonctionnalité de prévisualisation dans Java 17 est la correspondance de modèles pour l'opérateur switch. Cela vous permet de rechercher un certain type de variable dans une instruction switch avec instanceof et d'agir en fonction de celle-ci. Par exemple, vous pouvez faire une recherche dans un arbre binaire avec switch et renvoyer le contenu d'un nœud spécifique avec l'opérateur return. Vous pouvez déjà expérimenter cette fonctionnalité dans Java 17 en ajoutant l’aperçu -enable- comme argument dans le compilateur.

Vous souhaitez vous lancer comme développeur Java ?

Java 17 contient toutes sortes d'innovations. Ce ne sont que quelques exemples. Êtes-vous un développeur Java et souhaitez-vous démarrer avec la dernière et meilleure version de JDK ? Nous recherchons des professionnels qui peuvent tirer le meilleur parti de ce logiciel.

PLUS D'INFORMATIONS SUR LE DÉVELOPPEMENT DE LA JAVA