Oracle sort Java 21
jeu, 21/09/2023 - 19:03
Durant l'événement CloudWorld d'Oracle, Java 21 a été annoncé. "Oracle annonce aujourd'hui la publication de Java 21, la nouvelle version du langage de programmation et de la plateforme de développement numéro un dans le monde. Java 21 (Oracle JDK 21) fournit des milliers d'améliorations en matière de performances, de stabilité et de sécurité, notamment à la plateforme, qui aideront les développeurs à gagner en productivité et stimuleront l'innovation ainsi que la croissance des entreprises." explique l'éditeur.
La nouvelle version du Java Development Kit (JDK) contient des mises à jour et des améliorations ainsi que 15 JDK Enhancement Proposals (JEP). JDK 21 apporte des améliorations de langage au projet OpenJDK Amber (modèles de chaînes de caractères, modèles d'enregistrement, correspondance des modèles pour switch, modèles et variables sans nom, méthodes principales d'instances et de classes sans noms) ; améliorations apportées au projet Panama (API de fonction et de mémoire étrangère et API vectorielle) ; fonctionnalités liées au Project Loom (fils d'exécution virtuels, valeurs délimitées et simultanéité d'accès structurée), mises à jour des performances (Generational ZGC) et fonctions de maintenance et d'abandon (abandon du port x86 32 bits pour la suppression et préparation pour interdire le chargement dynamique des agents).
Les nouveautés et améliorations :
JEP 444 : Fils d'exécution virtuels : Simplifie de manière significative le processus d'écriture, de maintenance et d'observation des applications simultanées à haut débit en introduisant des fils d'exécution virtuels légers sur la plateforme Java. Grâce aux fils virtuels, les développeurs peuvent facilement dépanner, déboguer et profiler les applications simultanées et les mettre à l'échelle avec des techniques et des outils JDK existants, accélérant ainsi le développement des applications.
JEP 446 : Valeurs délimitées (aperçu) : Permet le partage de données immuables dans et entre les fils d'exécution. Cela favorise la convivialité, la lisibilité, la robustesse et les performances des projets des développeurs.
JEP 453 : Simultanéité d'accès structurée (aperçu) : Simplifie la programmation simultanée en introduisant une API pour la simultanéité d'accès structurée aux données, ce qui aide à promouvoir un style de programmation simultanée capable d'éliminer les risques courants liés à l'annulation et à l'arrêt, tels que les fuites de fils d'exécution et les retards d'annulation, et améliore l'observabilité du code simultané. Les développeurs peuvent ainsi mieux rationaliser la gestion et l'annulation des erreurs, améliorer la fiabilité et renforcer l'observabilité.
- JEP 439 : Generational ZGC : Améliore les performances des applications en étendant le Z Garbage Collector (ZGC) pour maintenir des générations distinctes pour les objets récents et anciens. Generational ZGC permet d'améliorer la productivité des développeurs en réduisant la surcharge liée à la portion de mémoire requise et à la récupération d'espace pour les applications, ainsi qu'en réduisant les risques de blocage de l'allocation.
- JEP 430 : Modèles de chaîne de caractères (aperçu) : Simplifie le développement des programmes Java en facilitant l'expression de chaînes qui incluent des valeurs calculées lors de l'exécution, et renforce la sécurité des programmes qui composent les chaînes à partir de valeurs fournies par l'utilisateur et les transmettent à d'autres systèmes. En outre, la lisibilité des expressions qui mélangent du texte et des expressions est améliorée, et les valeurs autres que des chaînes de caractères calculées à partir de texte littéral et d'expressions imbriquées peuvent être créées sans avoir à passer par une représentation de chaîne de caractères intermédiaire. Cela permet d'améliorer la productivité des développeurs en rendant le langage Java plus accessible en termes de lecture et d'écriture, et plus facile à maintenir.
JEP 440 : Modèles d'enregistrement (troisième aperçu) : Améliore le langage Java en étendant la correspondance de modèles aux instances de déstructuration des classes d'enregistrement, ainsi qu'en permettant l'ajout de modèles imbriqués. Les développeurs peuvent ainsi étendre la correspondance de modèles aux requêtes de données plus complexes et composables, ce qui permet d'augmenter leur productivité.
JEP 441 : Correspondance de modèle pour switch : Augmente l'expressivité et l'applicabilité des expressions et des instructions switch en autorisant les modèles dans les libellés de case. En outre, la sécurité des instructions switch augmente en exigeant que les instructions switch de modèle couvrent toutes les valeurs d'entrée possibles, et toutes les expressions et instructions switch existantes peuvent continuer à être compilées sans modification et à être exécutées avec une sémantique identique. Les développeurs peuvent ainsi rationaliser et améliorer la fiabilité de leurs projets en rendant le langage Java plus sémantique afin que des requêtes complexes orientées données puissent être exprimées de manière concise et sécurisée.
JEP 443 : Modèles et variables sans nom (aperçu) : Améliore le langage Java en permettant aux modèles sans nom de mettre en correspondance un composant d'enregistrement sans indiquer le nom ou le type du composant, ainsi que les variables sans nom pouvant être initialisées mais non utilisées. Cela permet de simplifier le processus de développement en améliorant la lisibilité des modèles d'enregistrement et la facilité de maintenance de l'ensemble du code.
JEP 445 : Méthodes principales des instances et classes sans noms (aperçu) : Simplifie et améliore l'accessibilité du langage Java afin que les enseignants puissent introduire progressivement les concepts de programmation. En évitant l'introduction d'un dialecte de Java distinct pour les débutants et d'une chaîne d'outils séparée pour les débutants, les programmes des élèves peuvent être compilés et exécutés avec les mêmes outils que ceux qui compilent et exécutent n'importe quel programme Java. Les élèves peuvent ainsi écrire des programmes de base avec concision et développer leur code au fur et à mesure que leurs compétences augmentent. Cela favorise la productivité des apprentis développeurs en leur permettant d'écrire leurs premiers programmes sans avoir à comprendre les fonctionnalités linguistiques conçues pour les grands programmes.
- JEP 434 : API de mémoire et de fonctions étrangères (troisième aperçu) : Introduit une API pour permettre aux programmes Java d'interagir avec du code et des données en dehors de l'exécution Java. En appelant efficacement des fonctions étrangères (du code en dehors de la Java Virtual Machine [JVM]) et en accédant en toute sécurité à la mémoire étrangère (la mémoire non gérée par la JVM), cette nouvelle API permet aux programmes Java d'appeler des bibliothèques natives et de traiter des données natives sans nécessiter la Java Native Interface. Les développeurs bénéficient ainsi d'une plus grande convivialité, flexibilité, sécurité et de plus grandes performances.
- JEP 448 : API de vecteur (sixième incubation) : Introduit une API pour communiquer les calculs de vecteur qui effectuent une compilation fiable lors de l'exécution pour vectoriser les instructions sur les architectures de processeurs prises en charge. Les développeurs peuvent ainsi améliorer les performances de leurs projets en leur donnant accès à une API capable d'exprimer clairement et concrètement un large éventail de calculs vectoriels.