IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Oracle publie Java 27 : cette nouvelle version du langage de programmation apporte neuf améliorations au JDK visant à stimuler la productivité
Et à améliorer les performances des applications

Le , par Jade Emy

169PARTAGES

6  0 
Oracle a récemment annoncé la mise à disposition générale du JDK 27 pour les développeurs, les entreprises et les utilisateurs finaux. Le JDK 27 apporte neuf améliorations suffisamment importantes pour faire l’objet de propositions d’amélioration du JDK (JEP), dont quatre fonctionnalités en avant-première et une fonctionnalité en phase d’incubation. Ces fonctionnalités couvrent des innovations apportées au langage Java, des avancées en matière de sécurité, de performances et d’exécution, ainsi que des améliorations des bibliothèques.

Java est un langage de programmation de haut niveau, polyvalent, à sécurité mémoire et orienté objet. Il est conçu pour permettre aux programmeurs d’écrire une seule fois et d’exécuter partout (WORA), ce qui signifie que le code Java compilé peut s’exécuter sur toutes les plateformes prenant en charge Java sans qu’il soit nécessaire de le recompiler. Les applications Java sont généralement compilées en bytecode pouvant s'exécuter sur n'importe quelle machine virtuelle Java (JVM), quelle que soit l'architecture informatique sous-jacente. La syntaxe de Java est similaire à celle du C et du C++, mais dispose de moins de fonctionnalités de bas niveau que ces deux langages. Le runtime Java offre des capacités dynamiques (telles que la programmation réflexive (réflexion) et la modification de code à l'exécution) généralement indisponibles dans les langages compilés traditionnels.

Le Java Development Kit (JDK) est un kit de développement logiciel destiné à la création d'applications pour la plate-forme Java. Le JDK est principalement conçu pour communiquer avec l'environnement d'exécution Java (JRE), mais il peut être remplacé par d'autres langages basés sur le JDK capables de communiquer avec le JRE et la JVM. De plus, le bytecode Java peut être compilé de manière statique directement en code natif à l'aide d'une JVM uniquement, sans qu'il soit nécessaire que l'environnement d'exécution Java s'exécute de manière dynamique.

Oracle a récemment annoncé la mise à disposition générale du JDK 27 pour les développeurs, les entreprises et les utilisateurs finaux. Le JDK 27 apporte neuf améliorations suffisamment importantes pour faire l’objet de propositions d’amélioration du JDK (JEP), dont quatre fonctionnalités en avant-première et une fonctionnalité en phase d’incubation. Ces fonctionnalités couvrent des innovations apportées au langage Java, des avancées en matière de sécurité, de performances et d’exécution, ainsi que des améliorations des bibliothèques.


Voici les principales améliorations de cette version :

Sécurité

Échange de clés hybride post-quantique pour TLS 1.3

Renforcez la sécurité des applications Java nécessitant des communications réseau sécurisées en implémentant des algorithmes d’échange de clés hybrides pour TLS 1.3. Ces algorithmes protègent contre les futures attaques par informatique quantique en combinant un algorithme résistant à l’informatique quantique avec un algorithme traditionnel. Les applications utilisant les API javax.net.ssl bénéficieront par défaut de ces algorithmes améliorés, sans modification du code existant.

Encodages PEM d’objets cryptographiques (troisième preview)

Permet aux développeurs d’améliorer leur productivité et de renforcer la sécurité des applications Java pour les formats de sécurité largement utilisés grâce à une nouvelle API d’encodage. L’API encode les objets représentant des clés cryptographiques, des certificats et des listes de révocation de certificats au format PSTN (Privacy-Enhanced Mail Transport), largement utilisé, puis les décode à nouveau en objets. Cela réduit le risque d’erreurs, simplifie la mise en conformité et améliore la portabilité et l’interopérabilité des applications Java sécurisées en rationalisant la configuration et l’intégration de la cryptographie pour répondre aux besoins des entreprises, du cloud et des réglementations.

Innovation du langage

Types primitifs dans les motifs, instanceof et switch (cinquième preview)

Permet aux développeurs d’augmenter leur productivité et de rationaliser le développement d’applications intégrant l’inférence IA en rendant Java plus uniforme et plus expressif. Elle élimine plusieurs restrictions relatives aux types primitifs qui constituent un frein lors de l’utilisation de la correspondance de motifs, de l’opérateur instanceof et de la structure switch. Afin d’aider les développeurs à améliorer encore leur productivité, elle renforce également la définition de l’exactitude inconditionnelle et applique des contrôles de dominance plus stricts dans les constructions switch, permettant ainsi au compilateur d’identifier et de réduire un plus large éventail d’erreurs de codage.

Améliorations des performances

Faire de G1 le ramasse-miettes par défaut dans tous les environnements

Faire du ramasse-miettes Garbage-First (G1) le ramasse-miettes par défaut dans tous les environnements, et non plus uniquement dans les environnements serveur. Lorsqu’aucun ramasse-miettes n’est spécifié sur la ligne de commande :

- La JVM HotSpot sélectionnera toujours G1.
- Dans les scénarios où la JVM sélectionnait auparavant le ramasse-miettes Serial, les indicateurs de performance (débit, latence, empreinte mémoire et temps de démarrage) ne devraient pas se dégrader de manière significative.

En-têtes d’objets compacts par défaut

Faire des en-têtes d’objets compacts la structure d’en-tête d’objet par défaut dans la JVM HotSpot. Les en-têtes d’objets compacts réduisent la taille des en-têtes d’objets de 96 bits à 64 bits sur les architectures 64 bits, ce qui réduit la taille du tas, améliore la densité de déploiement et augmente la localité des données.


Améliorations des bibliothèques

Constantes paresseuses (troisième preview)

Permet aux développeurs d’accroître leur productivité et l’efficacité de l’utilisation des ressources en leur offrant une plus grande flexibilité quant au moment de leur initialisation, ce qui est particulièrement utile pour les applications d’IA et celles basées sur les données. Grâce à une nouvelle API pour les constantes paresseuses, qui sont des objets contenant des données non modifiables, la JVM traite ces constantes comme de véritables constantes afin d’offrir les mêmes performances que la déclaration d’un champ final. De plus, en permettant aux applications Java et à leurs services cloud natifs et basés sur l’IA de démarrer plus rapidement et d’utiliser les ressources de calcul plus efficacement, cela aide les développeurs à réaliser des déploiements agiles et évolutifs pouvant se traduire par des économies et une meilleure expérience pour les utilisateurs finaux.

Concurrence structurée (septième preview)

Aide les développeurs à améliorer la maintenabilité, la fiabilité et l’observabilité du code multithread, ce qui est particulièrement bénéfique pour améliorer l’évolutivité et la résilience des charges de travail liées à l’IA et au cloud natif. Elle simplifie la programmation concurrente via une API de concurrence structurée, qui traite les groupes de tâches liées s’exécutant dans différents threads comme une seule unité de travail et contribue à réduire les risques courants liés à l’annulation et à l’arrêt, tels que les fuites de threads et les retards d’annulation.

API vectorielle (12e version Incubator)

Aide les développeurs à améliorer les performances et la rentabilité de leurs applications Java en leur permettant d’offrir davantage d’informations et de valeur ajoutée avec moins de matériel. L’API vectorielle exprime des calculs vectoriels qui se compilent de manière fiable lors de l’exécution en instructions vectorielles optimales sur les architectures de processeurs prises en charge, ce qui se traduit par un traitement plus rapide pour l’analyse de données, l’inférence d’IA et les charges de travail de calcul scientifique. Cela permet aux développeurs d’atteindre des performances supérieures à celles des calculs scalaires équivalents souvent utilisés dans les scénarios d’inférence IA et de calcul.

Outils

Masquage des données en cours de traitement dans JFR

Améliore le JDK Flight Recorder (JFR) afin de masquer les arguments de ligne de commande ainsi que les valeurs initiales des variables d’environnement et des propriétés système dans les enregistrements. Ces données sont masquées avant de quitter le processus, ce qui contribue à empêcher la fuite d’informations sensibles via les données de diagnostic.

Rappel sur les fonctionnalités « Preview », « Experimental » et « Incubator »

Les fonctionnalités « Preview » sont des fonctionnalités de langage ou de machine virtuelle (VM) de la plate-forme Java SE entièrement spécifiées et implémentées, mais qui ne sont pas encore définitives. Elles sont mises à disposition dans les versions « Feature Release » du JDK afin de recueillir les retours des développeurs sur la base d’utilisations en conditions réelles, avant de devenir définitives dans une future version. Cela permet également aux éditeurs d’outils de travailler à la prise en charge de ces fonctionnalités avant qu’elles ne soient finalisées dans la norme Java SE. Les fonctionnalités expérimentales sont des fonctionnalités à un stade précoce, principalement au niveau de la machine virtuelle (VM), qui sont encore en cours de développement et de test et qui servent à recueillir des retours d’expérience précoces sur des améliorations potentiellement significatives de la machine virtuelle HotSpot. Les API des modules « Incubator » mettent à la disposition des développeurs et des utilisateurs des API et des outils non définitifs afin de recueillir des retours d’expérience qui permettront, à terme, d’améliorer la qualité de la plate-forme Java.

Améliorations du JDK hors JEP

Outre les neuf JEP, Java 27 propose des dizaines d’améliorations qui aident les organisations à renforcer la sécurité, la fiabilité et les performances de leurs applications. Ces mises à jour permettent une adaptation aux mises à jour et aux normes des systèmes d’exploitation et des micrologiciels sous-jacents. Les utilisateurs et les développeurs d’applications bénéficient généralement de ces changements sans s’en rendre compte ; consultez les notes de version du JDK 27 pour découvrir l’ensemble complet des améliorations hors JEP.

Parmi les améliorations du JDK 27 qui méritent d’être mentionnées, citons le renforcement des fondements de la cryptographie post-quantique de Java grâce à la mise à jour des encodages de clés privées ML-KEM et ML-DSA ; des gains de performances significatifs pour les algorithmes ML-KEM, ML-DSA, X25519 et Ed25519 ; ainsi qu’une nouvelle visibilité en exécution sur les propriétés de sécurité actives via la commande jcmd VM.security_properties. D’autres mises à jour en matière de sécurité et de cryptographie améliorent l’efficacité du protocole TLS, la visibilité en exécution ainsi que la gestion des certificats et des clés, aidant ainsi les organisations à exploiter leurs applications Java avec davantage de sécurité et de confiance. Ensemble, ces mises à jour contribuent à faire progresser encore davantage la sécurité, l’agilité cryptographique et la préparation opérationnelle de Java, alors que les organisations se préparent aux futures exigences de sécurité.

Les performances et l’efficacité des applications sont améliorées grâce à un large ensemble de mises à jour portant sur la JVM, le compilateur, le ramasse-miettes et les E/S. Parmi les améliorations, on peut citer les mises à jour du dimensionnement du tas G1, les travaux d’optimisation de C2 et de l’API Vector, des opérations d’E/S de fichiers et natives plus efficaces, ainsi que des améliorations des algorithmes vectoriels, telles qu’une nouvelle implémentation du produit scalaire utilisant des opérations de multiplication-addition fusionnées. Ces mises à jour permettent aux applications Java de s’exécuter plus efficacement dans le cloud, les microservices, l’analyse de données et les charges de travail basées sur l’IA, contribuant ainsi à un meilleur débit, une meilleure évolutivité et une meilleure efficacité de l’infrastructure.

Les développeurs et les administrateurs bénéficient également d’améliorations qui facilitent le diagnostic, la gestion et la maintenance des applications Java en production. Les vidages de thread au format JSON émettent désormais les identifiants de clés et les comptes sous forme de nombres JSON, ce qui améliore la lisibilité par les machines pour les outils de surveillance et de réponse aux incidents. Les diagnostics de la machine virtuelle (VM) signalent désormais les descripteurs de fichiers ouverts, aidant ainsi les équipes à identifier plus rapidement les problèmes de ressources, tandis que la saisie semi-automatique Bash pour jcmd contribue à améliorer la productivité des administrateurs. D’autres améliorations apportées au routage HttpServer, au comportement de JavaDoc, au formatage ISO-8601, aux données de locale CLDR, à la validation du code source et au comportement de ServiceLoader contribuent à réduire les difficultés rencontrées par les développeurs, à améliorer la fiabilité et à renforcer le cycle de vie global des applications Java.


Portefeuille Java Verified : versions et mises à jour

Helidon 27 fait progresser les microservices Java natifs du cloud

Helidon 27 s’aligne sur la version JDK 27 et le rythme de publication d’OpenJDK, renforçant ainsi son rôle au sein du portefeuille Oracle Java Verified (JVP) en tant que framework soutenu par Oracle pour la création de microservices Java natifs du cloud et d’applications basées sur l’IA. Helidon continue de s’appuyer sur les capacités Java modernes telles que les threads virtuels, aidant les développeurs à créer des services hautement concurrents avec un code plus simple et une meilleure efficacité des ressources.

Helidon 27 améliore la productivité des développeurs et l’intégration en entreprise grâce à des API déclaratives, à Helidon Data JDBC, à Helidon Messaging, à une télémétrie améliorée, à la conformité avec MicroProfile et à des mises à jour en matière d’intégration des données. Ces fonctionnalités aident les développeurs Java à créer des microservices prêts pour la production et des services d’applications d’entreprise en utilisant la plateforme Java qu’ils connaissent déjà. Téléchargez la dernière version d’Helidon sur helidon.io.

JavaFX 27 continue de briller pour les applications client Java riches

JavaFX 27 s'aligne sur le cycle de publication du JDK 27 et continue d'offrir un framework moderne d'applications client Java permettant de créer des expériences utilisateur riches et interactives. Parmi les points...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !