Résumé des actualités OpenJDK : méthodes principales d’instance, corps de constructeur flexibles, déclarations d’importation de modules
Il y a eu une forte activité dans l’écosystème OpenJDK au cours de la semaine du 4 novembre 2024, mettant en évidence : cinq JEP, ayant terminé avec succès leurs évaluations respectives, sont désormais Ciblé pour JDK 24 ; cinq nouveaux JEP ont été Proposé pour cibler pour JDK 24 et sera en cours de révision au cours de la semaine du 11 novembre 2024 ; et deux projets de JEP qui ont été promus au rang Candidat statut.
Ciblé
JEP 493, Lier des images d’exécution sans JMODa été promu depuis Proposé pour cibler à Ciblé pour le JDK 24. Cette JEP propose de « réduisez la taille du JDK d’environ 25 % en activant le jlink
outil pour créer des images d’exécution personnalisées sans utiliser le JDK JMOD fichiers. » Cette fonctionnalité doit être explicitement activée lors de la création du JDK. Les développeurs sont désormais autorisés à lier une image d’exécution à partir de leurs modules locaux, quel que soit l’endroit où ces modules existent.
JEP 491, Synchronisez les threads virtuels sans épinglera été promu depuis Proposé pour cibler à Ciblé pour le JDK 24. Cette JEP propose de « améliorer l’évolutivité du code Java qui utilise des méthodes et des instructions synchronisées en faisant en sorte que les threads virtuels qui bloquent de telles constructions libèrent leurs threads de plate-forme sous-jacents pour qu’ils soient utilisés par d’autres threads virtuels. » L’intention est d’éliminer « presque tous les cas où les threads virtuels sont épinglés aux threads de la plate-forme, ce qui restreint considérablement le nombre de threads virtuels disponibles pour gérer la charge de travail d’une application.«
JEP 488, Types primitifs dans les modèles, instanceof et switch (deuxième aperçu)a été promu depuis Proposé pour cibler à Ciblé pour JDK 24. Cette JEP, sous les auspices de Projet Ambrepropose un deuxième tour d’avant-première, sans changement, pour acquérir de l’expérience et des retours supplémentaires du tour ou avant-première précédent, à savoir : JEP 455, Types primitifs dans les modèles, instanceof et switch (aperçu)livré dans JDK 23. Cette fonctionnalité améliore la correspondance de modèles en autorisant les modèles de types primitifs dans tous les contextes de modèles et en étendant instanceof
et switch
travailler avec tous les types primitifs. Plus de détails peuvent être trouvés dans ce projet de spécification par Aggelos Biboudismembre principal du personnel technique chez Oracle.
JEP 486, Désactiver définitivement le gestionnaire de sécuritéa été promu depuis Proposé pour cibler à Ciblé pour JDK 24. Cette JEP propose de désactiver définitivement le SecurityManager
classe puisqu’elle est obsolète avec JEP 411, Déprécier le gestionnaire de sécurité pour la suppressionlivré dans JDK 17. Même s’il était possible pour les développeurs d’activer toujours le SecurityManager
alors qu’elle est obsolète, cette fonctionnalité sera supprimée lors de la prochaine étape de la suppression définitive.
JEP 450, En-têtes d’objet compacts (expérimental)a été promu depuis Proposé pour cibler à Ciblé pour JDK 24. Cette JEP, inspirée de Projet Lilliputpropose de « réduisez la taille des en-têtes d’objet dans la JVM HotSpot de 96 à 128 bits jusqu’à 64 bits sur les architectures 64 bits. » Cette fonctionnalité est désactivée par défaut car elle est considérée comme expérimentale et peut entraîner des conséquences inattendues si elle est activée par un développeur.
Proposé pour cibler
JEP 495, Fichiers sources simples et méthodes principales d’instance (quatrième aperçu)a été promu depuis Candidat à Proposé pour cibler pour JDK 24. Cette JEP propose une quatrième préversion sans changement (à l’exception d’un deuxième changement de nom), après trois tours de prévisualisation précédents, à savoir : JEP 477, Classes implicitement déclarées et méthodes principales d’instance (troisième aperçu)livré dans JDK 23 ; JEP 463, Classes implicitement déclarées et méthodes principales d’instance (deuxième aperçu)livré dans JDK 22 ; et JEP 445, Classes sans nom et méthodes principales d’instance (préversion)livré dans le JDK 21. Cette fonctionnalité vise à « faire évoluer le langage Java afin que les étudiants puissent écrire leurs premiers programmes sans avoir besoin de comprendre les fonctionnalités du langage conçues pour les grands programmes ». Ce JEP avance le billet de blog de septembre 2022, Paver la rampe d’accèspar Brian Goetzarchitecte du langage Java chez Oracle. Gavin Biermanmembre consultant du personnel technique d’Oracle, a publié la première ébauche du document de spécification pour examen par la communauté Java. Plus de détails sur le JEP 445 peuvent être trouvés dans cette actualité InfoQ. L’examen devrait se terminer le 13 novembre 2024..
JEP 494, Déclarations d’importation de module (deuxième aperçu)a été promu depuis Candidat à Proposé pour cibler pour JDK 24. Cette JEP propose une deuxième préversion après le premier tour de prévisualisation, à savoir : JEP 476, Déclarations d’importation de module (préversion)livré dans JDK 23. Cette fonctionnalité améliorera le langage de programmation Java avec la possibilité d’importer succinctement tous les packages exportés par un module dans le but de simplifier la réutilisation des bibliothèques modulaires sans nécessiter d’importer du code pour être dans un module lui-même. Les changements par rapport au premier aperçu incluent : supprimer la restriction selon laquelle un module n’est pas autorisé à déclarer des dépendances transitives sur le java.base
module; réviser la déclaration du java.se
module pour exiger transitivement le java.base
module; et autorisez les déclarations d’importation de type à la demande à masquer les déclarations d’importation de modules. Ces changements signifient que l’importation du java.se
Le module importera l’intégralité de l’API Java SE à la demande. L’examen devrait se terminer le 13 novembre 2024..
JEP 492, Corps de constructeur flexibles (troisième aperçu)a été promu depuis Candidat à Proposé pour cibler pour JDK 24. Cette JEP propose un troisième tour de prévisualisation, avec un minimum de changements pour acquérir une expérience supplémentaire et des retours des deux tours précédents, à savoir : 482, Corps de constructeur flexibles (deuxième aperçu)livré dans JDK 23 ; et JEP 447, Déclarations avant super(…) (Aperçu)livré dans JDK 22. Cette fonctionnalité permet aux instructions qui ne font pas référence à une instance en cours de création d’apparaître avant le this()
ou super()
appelle un constructeur ; et préserver les garanties de sécurité et d’initialisation existantes pour les constructeurs. Les changements dans ce JEP incluent : un traitement des classes locales ; et un assouplissement de la restriction selon laquelle les champs ne sont pas accessibles avant un appel explicite du constructeur à une exigence selon laquelle les champs ne peuvent pas être lus avant un appel explicite du constructeur. Gavin Biermanmembre consultant du personnel technique d’Oracle, a fourni une spécification initiale de ce JEP pour que la communauté Java puisse l’examiner et fournir des commentaires. L’examen devrait se terminer le 14 novembre 2024..
JEP 483, Chargement et liaison des cours à l’avancea été promu depuis Candidat à Proposé pour cibler pour le JDK 24. Cette JEP propose de « améliorez le temps de démarrage en rendant les classes d’une application instantanément disponibles, dans un état chargé et lié, au démarrage de la machine virtuelle Java HotSpot. » Ceci peut être réalisé en surveillant l’application pendant une exécution et en stockant les formulaires chargés et liés de toutes les classes dans un cache pour une utilisation lors des exécutions ultérieures. Cette fonctionnalité jettera les bases d’améliorations futures du temps de démarrage et de préchauffage. L’examen devrait se terminer le 14 novembre 2024..
JEP 479, Supprimez le port Windows 32 bits x86a été promu depuis Candidat à Proposé pour cibler pour JDK 24. Cette JEP propose de supprimer complètement le port Windows 32 bits x86 suite à sa dépréciation comme décrit dans la JEP 449, Déprécier le port x86 Windows 32 bits pour la suppressionlivré dans JDK 21. Les objectifs sont de : supprimer tous les chemins de code dans la base de code qui s’appliquent uniquement à Windows 32 bits ; cesser tous les efforts de test et de développement ciblant la plate-forme Windows 32 bits ; et simplifier l’infrastructure de construction et de test d’OpenJDK, en s’alignant sur les normes informatiques actuelles. L’examen devrait se terminer le 12 novembre 2024..
Nouveaux candidats au PEC
JEP 497, Algorithme de signature numérique basé sur un réseau de modules résistant aux quantiquesa été promu de son Projet JEP 8339010 à Candidat statut. Cette JEP propose de «améliorer la sécurité des applications Java en fournissant une implémentation du système résistant aux quantiques Algorithme de signature numérique basé sur un réseau de modules (ML-DSA) » tel que normalisé par FIPS204. Ceci sera accompli en implémentant Java KeyPairGenerator
, Signature
et KeyFactory
cours.
JEP 496, Mécanisme d’encapsulation de clé basé sur un réseau de modules résistant aux quantiquesa été promu de son Projet JEP 8339009 à Candidat statut. Cette JEP propose de «améliorer la sécurité des applications Java en fournissant une implémentation du système résistant aux quantiques Mécanisme d’encapsulation de clé basé sur un réseau de modules (ML-KEM)« tel que normalisé par FIPS203. Ceci sera accompli en implémentant Java KeyPairGenerator
, KEM
et KeyFactory
cours.
Ensemble de fonctionnalités du JDK 24 (jusqu’à présent) et calendrier de sortie
Le calendrier de sortie du JDK 24, ainsi que approuvé par Marc Reinholdarchitecte en chef du groupe Java Platform chez Oracle, est le suivant :
- Rampdown Phase One (embranchement de la ligne principale) : 5 décembre 2024
- Deuxième phase de réduction : 16 janvier 2025
- Version candidate initiale : 6 février 2025
- Version finale candidate : 20 février 2025
- Disponibilité générale : 18 mars 2025
À un peu plus d’un mois de la première phase de Rampdown prévue, au cours de laquelle les fonctionnalités définies pour le JDK 24 seront gelées, voici les 19 JEP (y compris celles qui sont Proposé pour cibler) inclus dans l’ensemble des fonctionnalités jusqu’à présent :
Il est intéressant de noter que le nombre de fonctionnalités du JDK 24 a déjà dépassé le maximum de 17 fonctionnalités livrées dans le JDK 16 et le JDK 11. JDK24les développeurs sont encouragés à signaler les bogues via le Base de données de bogues Java.