Le JDK 22 apporte 12 am�liorations : am�liorations du langage Java, de ses API, de ses performances et des outils inclus dans le JDK.
Oracle annonce la disponibilit� g�n�rale du JDK 22 pour les d�veloppeurs, les entreprises et les utilisateurs finaux. Le JDK 22 apporte 12 am�liorations importantes.
Le JDK 22 apporte 12 am�liorations suffisamment importantes pour justifier leur propre proposition d'am�lioration du JDK (JEP), dont sept fonctionnalit�s de pr�visualisation et une fonctionnalit� d'incubation. Ces am�liorations concernent le langage Java, ses API, ses performances et les outils inclus dans le JDK.
1. Am�liorations du langage
Variables sans nom et mod�les - JEP 456
Am�liore la lisibilit� lorsque des d�clarations de variables ou des motifs imbriqu�s sont n�cessaires mais non utilis�s. Les deux sont d�sign�s par le caract�re de soulignement.
Valeur :
- Capture l'intention du d�veloppeur selon laquelle un param�tre lambda ou de liaison donn� est inutilis�, et applique cette propri�t� pour clarifier les programmes et r�duire les possibilit�s d'erreur.
- Am�liore la maintenabilit� de l'ensemble du code en identifiant les variables qui doivent �tre d�clar�es (par exemple, dans les clauses catch) mais qui ne sont pas utilis�es.
- Permet � plusieurs mod�les d'appara�tre dans une seule �tiquette de cas, si aucun d'entre eux ne d�clare de variables de mod�le.
- Am�liore la lisibilit� des mod�les d'enregistrement en �liminant les mod�les de type imbriqu�s inutiles.
Aper�us du langage
D�clarations avant super (...) [Aper�u] - JEP 447 :
Dans les constructeurs, permettre aux d�clarations qui ne font pas r�f�rence � l'instance cr��e d'appara�tre avant l'invocation explicite du constructeur.
Valeur :
- Donne aux d�veloppeurs une plus grande libert� pour exprimer le comportement des constructeurs, permettant le placement plus naturel de la logique qui doit actuellement �tre prise en compte dans les m�thodes statiques auxiliaires, les constructeurs interm�diaires auxiliaires ou les arguments des constructeurs.
- Pr�serve la garantie existante que les constructeurs s'ex�cutent dans l'ordre descendant lors de l'instanciation de la classe, garantissant que le code dans un constructeur de sous-classe ne peut pas interf�rer avec l'instanciation de la superclasse.
- Ne n�cessite aucune modification de la machine virtuelle Java. Cette fonctionnalit� du langage Java repose uniquement sur la capacit� actuelle de la JVM � v�rifier et � ex�cuter le code qui appara�t avant les invocations explicites de constructeurs � l'int�rieur des constructeurs.
Mod�les de cha�nes de caract�res (deuxi�me aper�u) - JEP 459 :
Les mod�les de cha�nes de caract�res compl�tent les cha�nes litt�rales et les blocs de texte existants de Java en couplant le texte litt�ral avec des expressions int�gr�es et des processeurs de mod�les pour produire des r�sultats sp�cialis�s.
Valeur :
- Simplifie l'�criture des programmes Java en facilitant l'expression des cha�nes de caract�res qui incluent des valeurs calcul�es au moment de l'ex�cution.
- Am�liore la lisibilit� des expressions qui m�langent texte et expressions, que le texte tienne sur une seule ligne de source (comme avec les cha�nes litt�rales) ou qu'il s'�tende sur plusieurs lignes de source (comme avec les blocs de texte).
- Am�liore la s�curit� des programmes Java qui composent des cha�nes � partir de valeurs fournies par l'utilisateur et les transmettent � d'autres syst�mes (par exemple, en construisant des requ�tes pour des bases de donn�es) en prenant en charge la validation et la transformation � la fois du mod�le et des valeurs de ses expressions int�gr�es.
- Conserve la flexibilit� en permettant aux biblioth�ques Java de d�finir la syntaxe de formatage utilis�e dans les mod�les de cha�nes de caract�res.
- Simplifie l'utilisation des API qui acceptent les cha�nes �crites dans des langages autres que Java (par exemple, SQL, XML et JSON).
- Permet la cr�ation de valeurs autres que des cha�nes, calcul�es � partir de texte litt�ral et d'expressions int�gr�es, sans avoir � passer par une repr�sentation interm�diaire sous forme de cha�ne.
Classes d�clar�es implicitement et m�thodes principales d'instance (deuxi�me aper�u) - JEP 463 :
Les �tudiants peuvent �crire leurs premiers programmes Java sans avoir besoin de comprendre les caract�ristiques du langage con�ues pour les programmes de grande taille. Au lieu d'utiliser un dialecte distinct du langage, les �tudiants peuvent �crire des d�clarations simplifi�es pour des programmes � classe unique, puis �tendre leurs programmes de mani�re transparente pour utiliser des fonctionnalit�s plus avanc�es au fur et � mesure que leurs comp�tences augmentent.
Valeur : Acc�l�rer l'apprentissage de Java -
- Offre une rampe d'acc�s en douceur � la programmation Java afin que les formateurs puissent introduire les concepts de mani�re graduelle.
- Aide les �tudiants � �crire des programmes de base de mani�re concise et � faire �voluer leur code au fur et � mesure que leurs comp�tences s'accroissent.
- R�duit la c�r�monie d'�criture de programmes simples tels que les scripts et les utilitaires de ligne de commande.
- N'introduit pas de dialecte s�par� du langage Java pour les d�butants.
- N'introduit pas de cha�ne d'outils distincte pour les d�butants ; les programmes des �tudiants devraient �tre compil�s et ex�cut�s avec les m�mes outils que ceux qui compilent et ex�cutent n'importe quel programme Java.
2. Biblioth�ques
Fonction �trang�re et API de m�moire - JEP 454 :
Permet aux programmes Java d'interagir avec le code et les donn�es en dehors du temps d'ex�cution Java. En invoquant efficacement des fonctions �trang�res (c'est-�-dire du code ext�rieur � la JVM) et en acc�dant en toute s�curit� � la m�moire �trang�re (c'est-�-dire la m�moire non g�r�e par la JVM), l'API permet aux programmes Java d'appeler des biblioth�ques natives et de traiter des donn�es natives sans la fragilit� et le danger de la JNI.
Valeur :
- Productivit� - Remplacer la machinerie fragile des m�thodes natives et de l'interface Java Native (JNI) par une API concise, lisible et purement Java.
- Performance - Fournir un acc�s aux fonctions �trang�res et � la m�moire avec un surco�t comparable, voire sup�rieur, � celui de JNI et de sun.misc.Unsafe.
- Prise en charge d'un grand nombre de plateformes - Permettre la d�couverte et l'invocation de biblioth�ques natives sur toutes les plateformes sur lesquelles la JVM s'ex�cute.
- Uniformit� - Fournir des moyens d'op�rer sur des donn�es structur�es et non structur�es, de taille illimit�e, dans plusieurs types de m�moire (par exemple, la m�moire native, la m�moire persistante et la m�moire de tas g�r�e).
- S�ret� - Garantir l'absence de bogues "use-after-free", m�me lorsque la m�moire est allou�e et d�sallou�e par plusieurs threads.
- Int�grit� - Permettre aux programmes d'effectuer des op�rations dangereuses avec du code et des donn�es natifs, mais avertir les utilisateurs de ces op�rations par d�faut.
Aper�u des biblioth�ques et incubateur
API de fichier de classe (aper�u) - JEP 457 :
Fournit une API standard pour l'analyse, la g�n�ration et la transformation des fichiers de classe Java.
Valeur :
- L'API permet aux cadres et aux programmes qui en d�pendent de prendre automatiquement en charge les derniers fichiers de classe du dernier JDK, de sorte que les nouvelles fonctionnalit�s du langage et de la VM repr�sent�es dans les fichiers de classe puissent �tre adopt�es rapidement et facilement.
Collecteurs de flux (aper�u) - JEP 461 :
Am�liore l'API Stream pour prendre en charge les op�rations interm�diaires personnalis�es. Cela permettra aux pipelines de flux de transformer les donn�es d'une mani�re qui n'est pas facilement r�alisable avec les op�rations interm�diaires int�gr�es existantes.
Valeur :
- Am�liore la productivit� des d�veloppeurs et la lisibilit� du code en rendant les op�rations personnalis�es courantes dans les flux plus souples et plus expressives. Dans la mesure du possible, permet aux op�rations interm�diaires de manipuler des flux de taille infinie.
Concurrence structur�e (2e aper�u) - JEP 462 :
Simplifie la programmation concurrente. La concurrence structur�e traite les groupes de t�ches connexes ex�cut�es dans diff�rents threads comme une seule unit� de travail, ce qui permet de rationaliser la gestion et l'annulation des erreurs, d'am�liorer la fiabilit� et d'accro�tre l'observabilit�.
Valeur :
- Simplifie le d�veloppement de code concurrent en promouvant un style de programmation qui peut �liminer les risques courants li�s � l'annulation et � l'arr�t, tels que les fuites de threads et les retards d'annulation, et am�liore l'observabilit� du code concurrent.
Valeurs cadr�es (2e aper�u) - JEP 464 :
Permet un partage efficace des donn�es immuables � l'int�rieur et entre les threads.
Valeur :
- Facilit� d'utilisation - Fournit un mod�le de programmation pour partager des donn�es � l'int�rieur d'un thread et avec les threads enfants, afin de simplifier le raisonnement sur le flux de donn�es.
- Compr�hensibilit� - Rend la dur�e de vie des donn�es partag�es visible � partir de la structure syntaxique du code.
- Robustesse - garantit que les donn�es partag�es par un appelant ne peuvent �tre r�cup�r�es que par les appelants l�gitimes.
- Performance - Traite les donn�es partag�es comme immuables pour permettre leur partage par un grand nombre de threads et pour permettre des optimisations en cours d'ex�cution.
API vectorielle (7e incubateur) - JEP 460 :
Une API pour exprimer des calculs vectoriels qui se compilent de mani�re fiable lors de l'ex�cution en instructions vectorielles optimales sur les architectures d'unit�s centrales prises en charge, ce qui permet d'obtenir des performances sup�rieures � celles des calculs scalaires �quivalents.
Ce JEP propose de r�incuber l'API dans le JDK 22, avec des am�liorations mineures de l'API par rapport au JDK 21. La mise en �uvre comprend des corrections de bogues et des am�liorations de performance. Oracle inclue les changements notables suivants :
- Prise en charge de l'acc�s vectoriel avec les segments de m�moire du tas qui sont soutenus par un tableau de n'importe quel type d'�l�ment primitif. Auparavant, l'acc�s �tait limit� aux segments de m�moire du tas soutenus par un tableau d'octets.
Valeur :
- Offre une API claire et concise capable d'exprimer de mani�re claire et concise une large gamme de calculs vectoriels consistant en des s�quences d'op�rations vectorielles compos�es au sein de boucles, et �ventuellement avec un flux de contr�le.
- L'API est con�ue pour �tre ind�pendante de l'architecture du processeur, ce qui permet des impl�mentations sur de multiples architectures supportant les instructions vectorielles.
- Offre une compilation et des performances d'ex�cution fiables sur les architectures x64 et AArch64.
- S'aligne sur le projet Valhalla.
3. Performance
Brochage r�gional pour G1 - JEP 423 :
R�duit la latence en mettant en �uvre le pinning r�gional dans G1, de sorte que le garbage collection n'a pas besoin d'�tre d�sactiv� pendant les r�gions critiques de l'interface Java Native (JNI).
Valeur :
- Am�liore la productivit� des d�veloppeurs en �liminant la n�cessit� pour les threads Java d'attendre la fin de l'op�ration G1 GC lors de l'utilisation de JNI.
4. Outils
Lancement de programmes � code source multi-fichiers - JEP 458 :
Permet aux utilisateurs d'ex�cuter un programme fourni sous la forme de plusieurs fichiers de code source Java sans avoir � le compiler au pr�alable.
Valeur :
- Am�liore la productivit� des d�veloppeurs en rendant plus graduelle la transition entre les petits programmes et les programmes plus importants, ce qui permet aux d�veloppeurs de choisir si et quand ils doivent se donner la peine de configurer un outil de construction.
Il convient de noter que les fonctionnalit�s de pr�visualisation sont des fonctionnalit�s de langage ou de VM de la plate-forme Java SE enti�rement sp�cifi�es et enti�rement mises en �uvre, mais qu'elles sont impermanentes. Elles sont mises � disposition dans les versions de fonctionnalit�s du JDK pour permettre aux d�veloppeurs de faire part de leurs commentaires sur la base d'utilisations r�elles, avant qu'elles ne deviennent permanentes dans une prochaine version. Cela permet �galement aux fournisseurs d'outils de travailler � la prise en charge des fonctionnalit�s avant qu'elles ne soient finalis�es dans la norme Java SE.
Les API des modules incubateur mettent des API et des outils non d�finitifs entre les mains des d�veloppeurs et des utilisateurs afin de recueillir des commentaires qui, en fin de compte, am�lioreront la qualit� de la plate-forme Java.
Outre les changements d�crits dans les JEP, les notes de mise � jour contiennent de nombreuses petites mises � jour qui int�resseront de nombreux d�veloppeurs d'applications et administrateurs de syst�mes. Il s'agit notamment de la d�pr�ciation d'API obsol�tes et de la suppression d'API pr�c�demment d�pr�ci�es.
Voici quelques-unes des principales mises � jour figurant dans les notes de mise � jour de Java 22 :
- Ajout d'algorithmes suppl�mentaires � keytool et jarsigner.
- Am�lioration du d�bit du ramasse-miettes, notamment en ce qui concerne les d�chets "jeunes".
- Meilleur rapport de version pour les descripteurs de modules syst�me.
- Am�lioration des options de gestion de l'attente pour le code natif.
- Le r�f�rentiel Unicode Common Locale Data Repository a �t� mis � jour � la version 44.
- Prise en charge des annotations de type pour les types charg�s � partir du bytecode.
- ForkJoinPool et ForJoinTasks peuvent maintenant mieux g�rer les t�ches ininterrompues.
- Flexibilit� suppl�mentaire pour la configuration des propri�t�s de connexion TLS du client par rapport au serveur.
- Am�lioration du suivi de la m�moire native, y compris la possibilit� de signaler les pics d'utilisation.
Enfin, comme toutes les publications de fonctionnalit�s, le JDK 22 comprend des centaines de mises � jour de performance, de stabilit� et de s�curit�, y compris l'adaptation aux mises � jour et aux normes des syst�mes d'exploitation et des microprogrammes sous-jacents. Les utilisateurs et les d�veloppeurs d'applications b�n�ficient g�n�ralement de ces changements sans les remarquer.
La caract�ristique constante de toutes les versions du JDK : La pr�visibilit�
Le JDK 22 est la 13e version de fonctionnalit�s livr�e dans les d�lais pr�vus par la cadence de publication semestrielle. Ce niveau de pr�visibilit� permet aux d�veloppeurs de g�rer facilement leur adoption de l'innovation gr�ce � un flux r�gulier d'am�liorations attendues.
La capacit� de Java � am�liorer les performances, la stabilit� et la s�curit� continue � en faire le langage de programmation le plus populaire au monde.
Oracle n'offrira pas de support � long terme pour le JDK 22 ; ils fourniront des mises � jour jusqu'en septembre 2024, date � laquelle il sera remplac� par l'Oracle JDK 23.
Java 22, ensemble
Comme pour les versions pr�c�dentes, Java 22 c�l�bre les contributions de nombreux individus et organisations de la communaut� OpenJDK - "nous construisons tous Java, ensemble !"
Ratio de correction du JDK 22
Le taux d'�volution dans le temps des versions du JDK est rest� largement constant pendant des ann�es, mais avec la cadence semestrielle, le rythme auquel les fonctionnalit�s et les am�liorations pr�tes pour la production sont livr�es a fortement augment�.
Au lieu d'apporter des dizaines de milliers de correctifs et de fournir pr�s d'une centaine de JEP (JDK Enhancement Proposals) tous les deux ans, comme Oracle le faisait avec les versions majeures pr�c�dentes, les am�liorations sont fournies dans des versions all�g�es (Feature Releases) selon un calendrier semestriel plus facile � g�rer et � pr�voir. Les changements vont de nouvelles fonctionnalit�s importantes � de petites am�liorations, en passant par la maintenance de routine, la correction de bogues et l'am�lioration de la documentation. Chaque changement est repr�sent� par un seul commit pour un seul probl�me dans le syst�me de bogues du JDK.
Sur les 26 447 probl�mes JIRA marqu�s comme corrig�s dans Java 11 � Java 22 au moment de leur disponibilit� g�n�rale, 18 842 ont �t� compl�t�s par des employ�s d'Oracle tandis que 7 605 ont �t� apport�s par des d�veloppeurs individuels et des d�veloppeurs travaillant pour d'autres organisations. En examinant les questions et en rassemblant les donn�es sur les organisations fournies par les assign�s, on obtient le tableau suivant des organisations qui parrainent le d�veloppement des contributions en Java :
Dans Java 22, sur les 2 251 probl�mes JIRA marqu�s comme corrig�s, 1 554 ont �t� compl�t�s par Oracle, tandis que 697 ont �t� apport�s par d'autres membres de la communaut� Java.
Oracle souhaite remercier les d�veloppeurs travaillant pour des organisations telles que Amazon, ARM, Google, Huawei, IBM, Intel, ISCAS, Microsoft, Red Hat, Rivos, SAP et Tencent pour leurs contributions notables. Ils sont �galement reconnaissants des contributions de plus petites organisations telles que Bellsoft Data Dog et Loongson, ainsi que des d�veloppeurs ind�pendants qui ont collectivement contribu� � 7% des correctifs de Java 22.
Source : Oracle
Et vous ?
Quel est votre avis sur cette nouvelle version de Java ?
Voir aussi :
�volution de Java en 2024 : Oracle vise � enrichir le langage avec les projets OpenJDK comme Leyden, Panama et Valhalla, pour am�liorer la productivit�, le temps de d�marrage des applications, etc.
� Java n'est pas pr�s de dispara�tre � : le langage de programmation est toujours sur la liste des priorit�s des entreprises en 2024, selon le rapport Java Developer Productivity de Perforce
"Java 21 me fait � nouveau aimer Java", il pr�sente quelques points forts, notamment la prise en charge des motifs d'enregistrement, par Raghav Shankar
Partager