Oracle a publié Java 22
mer, 20/03/2024 - 11:37
Oracle annonce la publication de Java 22. Selon l'éditeur, Java 22 (Oracle JDK 22) offre des milliers d’améliorations en matière de performances, de stabilité et de sécurité pour aider les développeurs à augmenter leur productivité, à stimuler l’innovation et à accélérer leur croissance dans l’ensemble de leur entreprise. Cette nouvelle version apporte notamment des améliorations au langage Java, à ses API et à ses performances, ainsi qu’aux outils inclus dans le Kit de Développement Java (JDK).
« Les améliorations apportées à Java 22 permettent aux développeurs de créer et de fournir rapidement et facilement des applications riches en fonctionnalités, évolutives et sécurisées pour aider les entreprises du monde entier à développer leurs activités », se félicite Georges Saab, Senior Vice President de la plateforme Oracle Java et Président du conseil d’administration d’OpenJDK. « En apportant des améliorations qui rationalisent le développement d’applications et étendent la portée de Java pour la rendre accessible aux développeurs de tous les niveaux, Java 22 facilitera la création d’un large éventail de nouvelles applications et de nouveaux services pour les entreprises et les développeurs. »
La nouvelle version du JDK contient des mises à jour et des améliorations et propose 12 JDK Enhancement Proposals (JEP). JDK 22 apporte des améliorations au langage d’OpenJDK Project Amber (déclarations avant super[…], variables et modèles sans nom, modèles de chaîne, classes et méthodes principales d’instance déclarées implicitement) ; il fournit aussi des améliorations du Project Panama (API de fonction et de mémoire étrangères et API vectorielle), des fonctionnalités liées au Project Loom (concomitance structurée et valeurs ciblées), des fonctionnalités des bibliothèques et outils de base (API Class-File, lancement de programmes de code source multi-fichiers, et collecteurs de flux) et des mises à jour des performances (épinglage de région pour G1).
« Après près de trois décennies, la capacité de Java à prendre en charge des tâches de développement complexes couvrant un large éventail de cas d’utilisation rend la plateforme plus pertinente qu’elle ne l’a jamais été », souligne Arnal Dayaratna, Vice-Président de la recherche pour le développement logiciel chez IDC. « La polyvalence et l’ensemble complet d’outils de Java permettent de prendre en charge le développement d’applications critiques de qualité production à grande échelle, ce qui le positionne comme une technologie clé pour des cas d’utilisation innovants tels que l’IA générative. »
Mises à jour importantes fournies dans Java 22 :
Fonctionnalités du Project Amber
- JEP 447 : Déclarations avant super(…) : donne aux développeurs la liberté d’exprimer le comportement des constructeurs. En autorisant les instructions qui ne font pas référence à l’instance créée à apparaître avant un appel de constructeur explicite, cette fonctionnalité permet de placer plus naturellement la logique qui doit être prise en compte dans les méthodes statiques auxiliaires, les constructeurs intermédiaires auxiliaires ou les arguments de constructeur. Elle préserve également l’assurance existante que les constructeurs soient exécutés dans l’ordre descendant lors de l’instanciation de classe, ce qui aide à s’assurer que le code d’un constructeur de sous-classe ne puisse pas interférer avec l’instanciation de la super classe. En outre, cette fonctionnalité ne nécessite aucune modification de la Java Virtual Machine (JVM) et repose uniquement sur la capacité actuelle de la JVM à vérifier et à exécuter le code qui apparaît avant les appels de constructeur explicites dans les constructeurs.
- JEP 456 : Variables et modèles sans nom : aide à accroître la productivité des développeurs en améliorant le langage Java avec des variables et des modèles sans nom, qui peuvent être utilisés lorsque des déclarations de variables ou des modèles imbriqués sont requis mais ne sont jamais utilisés. Cela réduit les risques d’erreur, améliore la lisibilité des modèles et augmente la maintenabilité de tout le code.
- JEP 459 : Modèles de chaîne de caractères (deuxième 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.
- JEP 463 : Classes déclarées implicitement et méthodes principales d’instance (deuxième aperçu) : aide à accélérer l’apprentissage en proposant une programmation Java fluide pour permettre aux novices d’écrire leurs premiers programmes sans avoir à comprendre les fonctionnalités de langage conçues pour les programmes de grande envergure. Grâce à cette fonctionnalité, les enseignants peuvent introduire des concepts de manière progressive et les étudiants peuvent rédiger des déclarations rationalisées pour les programmes en classe unique et étendre de manière transparente leurs programmes pour utiliser des fonctionnalités plus avancées à mesure que leurs compétences se développent.
Fonctionnalités du Project Loom
- JEP 462 : Simultanéité structurée (deuxième aperçu) : aide les développeurs à rationaliser la gestion des erreurs et l’annulation tout en améliorant l’observabilité grâce à une nouvelle API pour la simultanéité structurée. Elle promeut un style de programmation simultanée qui peut éliminer les risques communs découlant de l’annulation et de l’arrêt, tels que les fuites dans les threads et les retards d’annulation, et améliore l’observabilité du code simultané.
- JEP 464 : Valeurs ciblées (deuxième aperçu) : améliore l’ergonomie, l’intelligibilité, les performances et la robustesse des projets des développeurs en permettant le partage de données immuables au sein des threads et entre eux.
Fonctionnalités du Project Panama
- JEP 454 : API de mémoire et de fonction étrangère : améliore l’ergonomie, la flexibilité, la sécurité et les performances pour les développeurs en introduisant une API permettant aux programmes Java d’interagir avec du code et des données en dehors de l’environnement d’exécution Java. En appelant efficacement des fonctions étrangères, par exemple, du code en dehors de la Java Virtual Machine 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 avoir à recourir à Java Native Interface.
- JEP 460 : API de vecteur (septième incubateur) : permet aux développeurs d’obtenir des performances supérieures aux calculs scalaires équivalents en introduisant une API pour exprimer des calculs vectoriels qui compilent de manière fiable lors de l’exécution afin de vectoriser les instructions sur les architectures de processeurs (CPU) prises en charge.
Fonctionnalités des bibliothèques principales et des outils
- JEP 457 : API Class-File (aperçu) : aide les développeurs à améliorer leur productivité en fournissant une API standard pour l’analyse, la génération et la transformation des fichiers de classe Java.
- JEP 458 : Lancement de programmes de code source multi-fichiers : permet aux développeurs de choisir s’il est intéressant de configurer un outil de compilation en améliorant le lanceur d’application Java pour lui permettre d’exécuter un programme fourni sous la forme de plusieurs fichiers de code source Java.
- JEP 461 : Collecteurs de flux (aperçu) : aide les développeurs à accroître leur productivité en améliorant l’API de flux pour prendre en charge les opérations intermédiaires personnalisées, ce qui va permettre aux pipelines de flux de transformer les données d’une manière difficilement réalisable avec les opérations intermédiaires intégrées existantes. En rendant les pipelines de flux plus flexibles et plus expressifs et en permettant aux opérations intermédiaires personnalisées de manipuler des flux de taille infinie, cette fonctionnalité permet aux développeurs de devenir plus efficaces dans la lecture, l’écriture et la maintenance du code Java.
Mises à jour des performances
- JEP 423 : Épinglage de région pour G1 : permet de réduire la latence en autorisant le nettoyage de la mémoire lors de certains appels de bibliothèque native qui auraient dû mettre le collecteur en pause. Pour ce faire, il suffit de suivre les objets qui doivent être bloqués lors de ces appels de bibliothèque native et d’« épingler » uniquement les régions qui contiennent ces objets. Grâce à cette approche, le nettoyage de la mémoire peut se poursuivre normalement dans des régions non épinglées, même pendant ce qui aurait été autrement un appel de bibliothèque native bloquant.
La release Java 22 est le fruit de la collaboration continue entre les ingénieurs d’Oracle et le reste de la communauté de développeurs Java dans le monde entier via OpenJDK et le Java Community Process (JCP). En plus des améliorations et des nouvelles fonctionnalités, Java 22 est pris en charge par Java Management Service (JMS), un service natif d’Oracle Cloud Infrastructure (OCI), qui fournit une console et un tableau de bord unifiés pour aider les entreprises à gérer leurs exécutions et leurs applications Java on-premises ou dans le cloud de leur choix. Pour plus de détails sur les fonctionnalités de Java 22, lisez cet article de blog technique.
Prise en charge de tout l’écosystème Java et innovation dans le cloud
Java offre des performances, une efficacité, une innovation et des économies accrues lorsqu’il est déployé dans le cloud sur OCI, un des premiers clouds hyperscale à prendre en charge Java 22. Oracle Java SE, Oracle GraalVM et le pack Java SE Subscription Enterprise Performance Pack sont disponibles gratuitement sur OCI. Ainsi, les développeurs peuvent créer et déployer des applications qui s’exécutent plus rapidement et avec un rapport coût-performance optimal.
L’abonnement Oracle Java Universal SE Subscription est une offre de paiement à l’usage qui fournit aux clients une assistance de premier ordre. Il inclut la prise en charge du triage de l’ensemble du portefeuille Java, le droit à GraalVM, Java SE Subscription Enterprise Performance Pack, l’accès aux fonctionnalités avancées de Java Management Service et la flexibilité nécessaire pour les mettre à niveau au rythme de l’entreprise. Cela permet ainsi aux services informatiques de gérer la complexité, de limiter les coûts et d’atténuer les risques de sécurité.
JavaOne revient en 2025
L'événement phare de la communauté Java mondiale, JavaOne, reviendra dans la région de la baie de San Francisco en 2025. JavaOne 2025 se déroulera du 17 au 20 mars 2025 à Redwood Shores, en Californie, et donnera aux participants l'occasion de prendre connaissance des derniers développements Java et d'interagir avec les experts Java d'Oracle et les sommités de l'industrie. Pour en savoir plus, consultez l'article de blog sur Inside Java.