Java 24 : récap des JEP

Oracle a distribué Java 24 le 19 mars dernier. Cette version propose de nombreuses JEP en version finale ou en préversion / incubation. L'éditeur a fait un récap des nouveautés :Fonctionnalités du langage ●     JEP 488 : Types primitifs dans les patterns, instanceof et switch (second aperçu) : aide les développeurs à augmenter leur productivité en rendant le langage Java plus uniforme et plus expressif. Cette fonctionnalité aide les développeurs à améliorer la correspondance de modèles en supprimant les restrictions relatives aux types primitifs que les développeurs rencontrent lors de l’utilisation du pattern matching, d’instanceof et de switch. Il autorise également les modèles de type primitif dans tous les contextes de modèle et étend instanceof et switch pour fonctionner avec tous les types primitifs. Les développeurs d’applications qui intègrent l’inférence d’IA bénéficieront notamment de la prise en charge des types primitifs.●   JEP 492 : Corps de constructeurs flexibles (troisième aperçu) : aide les développeurs à améliorer la fiabilité du code grâce à l’introduction de deux phases distinctes de prologue et d’épilogue dans un corps de constructeur. Cela permet aux développeurs de placer plus naturellement la logique qu’ils doivent actuellement prendre en compte dans des méthodes statiques auxiliaires, des constructeurs intermédiaires auxiliaires ou des arguments de constructeur. De plus, cette approche préserve la sauvegarde existante selon laquelle le code dans un constructeur de sous-classe ne peut pas interférer avec l’instanciation de superclasse, ce qui rend une classe plus fiable en cas de remplacement des méthodes.●  JEP 494 : Déclarations d’importation de modules (deuxième aperçu) : permet aux développeurs d’améliorer leur productivité en leur permettant d’importer rapidement et facilement tous les packages exportés par un module, sans que le code d’importation ne doive se trouver dans un module lui-même. Cela simplifie la réutilisation des bibliothèques modulaires pour tous les développeurs et aide les débutants à utiliser plus facilement des bibliothèques tierces et des classes Java fondamentales sans la nécessité de savoir où elles se trouvent dans une hiérarchie de packages. Cette fonctionnalité bénéficie également aux développeurs qui souhaitent intégrer rapidement la logique métier avec des appels d’inférence d’IA native, à une bibliothèque ou à des services.●     JEP 495 : Fichiers sources simples et méthodes principales d’instance (quatrième aperçu) :aide les apprenants à écrire leurs premiers programmes sans avoir à comprendre les fonctionnalités de langage conçues pour les grands programmes en offrant une migration fluide vers la programmation Java. En conséquence, les enseignants et les instructeurs peuvent introduire des concepts progressivement et les apprenants peuvent écrire des déclarations rationalisées pour les programmes de classe unique et étendre leurs programmes de manière transparente avec des fonctionnalités plus avancées au fur et à mesure que leurs compétences se développent. En outre, les développeurs Java expérimentés peuvent écrire de petits programmes succinctement et efficacement sans avoir besoin d’utiliser des outils conçus pour des projets plus importants.Bibliothèques●    JEP 485 : Collecteurs de flux : aide les développeurs à devenir plus efficaces dans la lecture, l’écriture et la maintenance du code Java en améliorant l’API de flux pour prendre en charge les opérations intermédiaires personnalisées, ce qui permet 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. ●  JEP 484 : API de fichier de classe : 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 et le suivi du format de fichier de classe défini par la spécification Java Virtual Machine. ●     JEP 487 : Valeurs ciblées (quatrième aperçu) : améliore l’ergonomie, la compréhensibilité, 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. ●  JEP 489 : API de vecteur (neuvième incubation) : aide les développeurs à améliorer la productivité en introduisant une API pour communiquer les calculs de vecteurs 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 obtenir des performances supérieures aux calculs scalaires équivalents, qui sont souvent utilisés dans les scénarios d’inférence et de calcul de l’IA.●    JEP 499 : Accès simultané structuré (quatrième aperçu) : aide les développeurs à améliorer la maintenabilité, la fiabilité et l’observabilité du code multithread en simplifiant la programmation simultanée via une nouvelle API pour les accès simultanés structurés. En traitant les groupes

Mar 21, 2025 - 16:21
 0
Java 24 : récap des JEP

Oracle a distribué Java 24 le 19 mars dernier. Cette version propose de nombreuses JEP en version finale ou en préversion / incubation. L'éditeur a fait un récap des nouveautés :

Fonctionnalités du langage 

●     JEP 488 : Types primitifs dans les patterns, instanceof et switch (second aperçu) : aide les développeurs à augmenter leur productivité en rendant le langage Java plus uniforme et plus expressif. Cette fonctionnalité aide les développeurs à améliorer la correspondance de modèles en supprimant les restrictions relatives aux types primitifs que les développeurs rencontrent lors de l’utilisation du pattern matching, d’instanceof et de switch. Il autorise également les modèles de type primitif dans tous les contextes de modèle et étend instanceof et switch pour fonctionner avec tous les types primitifs. Les développeurs d’applications qui intègrent l’inférence d’IA bénéficieront notamment de la prise en charge des types primitifs.

●   JEP 492 : Corps de constructeurs flexibles (troisième aperçu) : aide les développeurs à améliorer la fiabilité du code grâce à l’introduction de deux phases distinctes de prologue et d’épilogue dans un corps de constructeur. Cela permet aux développeurs de placer plus naturellement la logique qu’ils doivent actuellement prendre en compte dans des méthodes statiques auxiliaires, des constructeurs intermédiaires auxiliaires ou des arguments de constructeur. De plus, cette approche préserve la sauvegarde existante selon laquelle le code dans un constructeur de sous-classe ne peut pas interférer avec l’instanciation de superclasse, ce qui rend une classe plus fiable en cas de remplacement des méthodes.

●  JEP 494 : Déclarations d’importation de modules (deuxième aperçu) : permet aux développeurs d’améliorer leur productivité en leur permettant d’importer rapidement et facilement tous les packages exportés par un module, sans que le code d’importation ne doive se trouver dans un module lui-même. Cela simplifie la réutilisation des bibliothèques modulaires pour tous les développeurs et aide les débutants à utiliser plus facilement des bibliothèques tierces et des classes Java fondamentales sans la nécessité de savoir où elles se trouvent dans une hiérarchie de packages. Cette fonctionnalité bénéficie également aux développeurs qui souhaitent intégrer rapidement la logique métier avec des appels d’inférence d’IA native, à une bibliothèque ou à des services.

●     JEP 495 : Fichiers sources simples et méthodes principales d’instance (quatrième aperçu) :aide les apprenants à écrire leurs premiers programmes sans avoir à comprendre les fonctionnalités de langage conçues pour les grands programmes en offrant une migration fluide vers la programmation Java. En conséquence, les enseignants et les instructeurs peuvent introduire des concepts progressivement et les apprenants peuvent écrire des déclarations rationalisées pour les programmes de classe unique et étendre leurs programmes de manière transparente avec des fonctionnalités plus avancées au fur et à mesure que leurs compétences se développent. En outre, les développeurs Java expérimentés peuvent écrire de petits programmes succinctement et efficacement sans avoir besoin d’utiliser des outils conçus pour des projets plus importants.

Bibliothèques

●    JEP 485 : Collecteurs de flux : aide les développeurs à devenir plus efficaces dans la lecture, l’écriture et la maintenance du code Java en améliorant l’API de flux pour prendre en charge les opérations intermédiaires personnalisées, ce qui permet 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. 

●  JEP 484 : API de fichier de classe : 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 et le suivi du format de fichier de classe défini par la spécification Java Virtual Machine. 

●     JEP 487 : Valeurs ciblées (quatrième aperçu) : améliore l’ergonomie, la compréhensibilité, 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. 

●  JEP 489 : API de vecteur (neuvième incubation) : aide les développeurs à améliorer la productivité en introduisant une API pour communiquer les calculs de vecteurs 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 obtenir des performances supérieures aux calculs scalaires équivalents, qui sont souvent utilisés dans les scénarios d’inférence et de calcul de l’IA.

●    JEP 499 : Accès simultané structuré (quatrième aperçu) : aide les développeurs à améliorer la maintenabilité, la fiabilité et l’observabilité du code multithread en simplifiant la programmation simultanée via une nouvelle API pour les accès simultanés structurés. En traitant les groupes de tâches connexes exécutées dans différents threads comme une seule unité de travail, la simultanéité structurée peut aider à réduire les risques courants découlant de l’annulation et de l’arrêt, tels que les fuites de threads et les retards d’annulation.

Bibliothèques de sécurité

●   JEP 478 : API de fonction de dérivation de clé (aperçu) : permet aux développeurs de se préparer aux environnements de calcul quantique émergents en offrant une sécurité cryptographique pour les données en transit. Cela améliore la confidentialité et l’intégrité de la communication.

●    JEP 496 : Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism : permet d’augmenter la sécurité des applications Java en fournissant une implémentation du mécanisme « Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism » (ML-KEM). Cette fonctionnalité est une étape importante vers la préparation post-quantique et la fourniture éventuelle de la prise en charge de la cryptographie post-quantique (PQC, « Post Quantum Crypto ») pour la plateforme Java, car les mécanismes d’encapsulation de clé sont utilisés pour sécuriser les clés symétriques sur les canaux de communication non sécurisés à l’aide de la cryptographie à clé publique. 

●   JEP 497 : Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm : permet d’augmenter la sécurité des applications Java en fournissant une implémentation de l’algorithme « Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm » (ML-DSA). Comme avec JEP 496, cette fonctionnalité est une étape importante vers la préparation post-quantique et la fourniture éventuelle de la prise en charge PQC pour la plateforme Java, car les signatures numériques sont utilisées pour détecter les modifications non autorisées des données et pour authentifier l’identité des signataires. ML-DSA est conçu pour se protéger contre les futures attaques de calcul quantique, et il a été normalisé par le National Institute of Standards and Technology (NIST) des États-Unis dans la norme FIPS 204.

Outils

●    JEP 493 : Liaison d’images d’exécution sans JMOD : permet aux développeurs d’accroître leur efficacité en permettant à l’outil jlink de créer des images d’exécution personnalisées sans utiliser les fichiers JMOD du JDK, ce qui peut réduire la taille du JDK d’environ 25 %. Les développeurs peuvent ainsi lier une image d’exécution à partir de modules, que ces modules soient des fichiers JMOD autonomes, des fichiers JAR modulaires ou une partie d’une image d’exécution précédemment liée. Cette fonctionnalité doit être activée lors de la création du JDK ; elle ne sera pas activée par défaut et certains fournisseurs de JDK peuvent choisir de ne pas l’activer.

Mises à jour de performances et de temps d’exécution

●    JEP 450 : En-têtes d’objet compacts (expérimental) : permet aux développeurs d’augmenter leur productivité en réduisant la taille des en-têtes d’objet dans la JVM HotSpot de 96 et 128 bits à 64 bits sur les architectures 64 bits. Cela permet de réduire la taille de la portion de mémoire, d’améliorer la densité de déploiement et d’augmenter la localisation des données.

●     JEP 475 : Extension de barrière tardive pour G1 : permet aux développeurs d’augmenter leur efficacité en déplaçant l’extension des barrières du processus de nettoyage de la mémoire G1 du début du pipeline de compilation de C2 JIT vers une version ultérieure, ce qui peut réduire la surcharge si elle se produit après des optimisations indépendantes de la plateforme et l’allocation de registre. En simplifiant l’implémentation des barrières du nettoyage de la mémoire G1, cette fonctionnalité permet d’augmenter l’efficacité, la lisibilité, la résilience et la qualité du code généré par C2. 

●     JEP 483 : Chargement et liaison de classes en avance : permet aux développeurs d’augmenter la productivité et d’améliorer le temps de démarrage en rendant instantanément les classes d’une application disponibles dans un état chargé et lié au démarrage de la machine virtuelle Java Virtual Machine HotSpot. Cette fonctionnalité ne nécessite pas l’utilisation des outils jlink ou jpackage, et ne nécessite aucune modification de la façon dont les applications sont démarrées à partir de la ligne de commande ou toute modification du code des applications, bibliothèques ou frameworks. Elle contribue ainsi à jeter les bases d’améliorations continues du temps de démarrage et d’échauffement.

●     JEP 490 : ZGC : suppression du mode non générationnel : permet aux développeurs de réduire le coût de maintenance de la prise en charge de deux modes différents en supprimant le mode non générationnel du Z Garbage Collector (ZGC).

●    JEP 491 : Synchroniser les threads virtuels sans association : permet aux développeurs d’augmenter la productivité en étendant l’évolutivité du code Java et des bibliothèques qui utilisent des méthodes et des instructions synchronisées. En permettant aux threads virtuels de libérer les threads de plateforme sous-jacents, cette fonctionnalité permet aux développeurs d’accéder à davantage de threads virtuels pour gérer les workloads de leurs applications. 

Divers

●      JEP 404 : Generational Shenandoah (expérimental) : aide les développeurs à augmenter la productivité grâce à l’amélioration du collecteur de déchets Shenandoah avec des fonctionnalités de collecte générationnelle expérimentales qui améliorent le débit durable, la résilience de pic de charge et l’utilisation de la mémoire.

●      JEP 479  : Suppression du port x86 Windows 32 bits : aide les développeurs à augmenter leur efficacité en supprimant le code source et la prise en charge du port x86 Windows 32 bits, ce qui simplifie l’infrastructure de création et de test du JDK.

●      JEP 501  : Dépréciation du port x86 32 bits en vue de sa suppression : aide les développeurs à augmenter leur productivité en dépréciant le port x86 32 bits en vue de le supprimer dans une prochaine version. Cela permet aux développeurs d’accéder à de nouvelles fonctionnalités qui nécessitent une prise en charge propre à la plateforme sans avoir à implémenter des solutions pour les plateformes x86 32 bits.

Catégorie actualité: 
Image actualité AMP: