Oracle a annoncé la disponibilité de Java 20, la dernière version du langage de programmation et de la plate-forme de développement numéro un dans le monde. Java 20 (Oracle JDK 20) offre des milliers d'améliorations en matière de performance, de stabilité et de sécurité, y compris des améliorations de la plateforme qui aideront les développeurs à améliorer leur productivité et à stimuler l'innovation et la croissance au sein de leur entreprise. Oracle présente les dernières fonctionnalités de Java 20 lors de la journée des développeurs Java qui aura lieu le 21 mars 2023 lors de l'événement Oracle DevLive Level Up, qui se déroule du 20 au 23 mars à Redwood Shores, CA et en ligne.

Le dernier kit de développement Java (JDK) propose des mises à jour et des améliorations avec sept propositions d'amélioration du JDK (JEP). La majorité des mises à jour sont des caractéristiques de suivi qui améliorent les fonctionnalités introduites dans les versions précédentes. Le JDK 20 apporte des améliorations linguistiques issues du projet OpenJDK Amber (Record Patterns et Pattern Matching for Switch) ; des améliorations issues du projet OpenJDK Panama pour interconnecter la machine virtuelle Java (JVM) et le code natif (Foreign Function & Memory API et Vector API) ; et des fonctionnalités liées au projet Loom (Scoped Values, Virtual Threads, and Structured Concurrency), qui rationaliseront considérablement le processus d'écriture, de maintenance et d'observation d'applications concurrentes à haut débit.

Oracle fournit de nouvelles fonctionnalités Java tous les six mois selon un calendrier prévisible. Cette cadence assure un flux régulier d'innovations, tout en apportant des améliorations continues aux performances, à la stabilité et à la sécurité de la plate-forme, ce qui contribue à accroître l'omniprésence de Java dans les entreprises et les secteurs d'activité de toutes tailles. Les mises à jour les plus importantes de Java 20 sont les suivantes : Mises à jour et améliorations du langage : JEP 432 : Record Patterns (Second Preview) : Améliore le langage Java en permettant aux utilisateurs d'imbriquer les modèles d'enregistrement et les modèles de type pour créer une forme puissante, déclarative et composable de navigation et de traitement des données.

Cela permet d'augmenter la productivité des développeurs en leur permettant d'étendre la correspondance des motifs pour permettre des requêtes de données plus sophistiquées et composables. JEP 433 : Pattern Matching for Switch (Quatrième aperçu) : En étendant la recherche de motifs à Switch, une expression peut être testée par rapport à un certain nombre de motifs u, chacun ayant une action spécifique u, de sorte que des requêtes complexes orientées données peuvent être exprimées de manière concise et sûre. L'extension de l'expressivité et de l'applicabilité des expressions et des déclarations switch permet d'accroître la productivité des développeurs.

Caractéristiques de l'avant-première/incubateur du projet Loom : JEP 429 : Scoped Values (Incubateur) : Permet le partage de données immuables à l'intérieur et entre les threads, ce qui est préférable aux variables locales, en particulier lors de l'utilisation d'un grand nombre de threads virtuels. Cela améliore la facilité d'utilisation, la compréhensibilité, la robustesse et les performances. JEP 436 : Threads virtuels (deuxième aperçu) : Simplifiez considérablement le processus d'écriture, de maintenance et d'observation des applications concurrentes à haut débit en introduisant des threads virtuels légers dans la plate-forme Java.

En permettant aux développeurs de dépanner, de déboguer et de profiler facilement les applications concurrentes avec les outils et techniques JDK existants, les threads virtuels contribuent à accélérer le développement d'applications. JEP 437 : Structured Concurrency (deuxième incubateur) : Simplifie la programmation multithread en traitant plusieurs tâches exécutées dans différents threads comme une seule unité de travail. Cela permet aux équipes de développement de rationaliser la gestion et l'annulation des erreurs, d'améliorer la fiabilité et d'accroître l'observabilité.

Caractéristiques de l'aperçu du projet Panama : JEP 434 : Foreign Function & Memory API (deuxième aperçu) : 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 machine virtuelle Java [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), cette fonctionnalité permet aux programmes Java d'appeler des bibliothèques natives et de traiter des données natives sans avoir recours à l'interface native Java. La facilité d'utilisation, les performances et la sécurité s'en trouvent accrues.

JEP 438 : API vectorielle (cinquième incubateur) : Exprime les calculs vectoriels qui se compilent de manière fiable au moment de l'exécution en instructions vectorielles sur les architectures de CPU prises en charge. Cela augmente les performances par rapport aux calculs scalaires équivalents. La version Java 20 est le résultat d'une collaboration étendue entre les ingénieurs d'Oracle et d'autres membres de la communauté mondiale des développeurs Java via OpenJDK et le Java Community Process (JCP).

En plus des nouvelles améliorations, Java 20 est pris en charge par Java Management Service, un service natif d'Oracle Cloud Infrastructure (OCI), qui offre une vue unique pour aider les organisations à gérer les runtimes et les applications Java sur site ou sur n'importe quel cloud.