Oracle annonce Java 16

Oracle annonce Java 16

Colombes—16 mars 2021

Cette nouvelle version intègre 17 nouveautés : améliorations du langage, outils, gestion de la mémoire et fonctionnalités en statut incubation ou préversion.

Le filtrage par motif (Pattern Matching) et les enregistrements (Records) sont finalisés dans le JDK 16 après une année de retours de la communauté basés sur leur utilisation dans des applications opérationnelles.

Oracle ajoute GraalVM Enterprise à l’abonnement Java SE, sans surcoût.

Java logo

Oracle annonce la disponibilité de Java 16 (Oracle JDK 16) intégrant 17 nouveautés dans la plateforme pour améliorer encore plus la productivité des développeurs. La dernière version du JDK (Java Development Kit) intègre la finalisation du filtrage par motif (Pattern Matching) pour l’opérateur instanceof (JEP 394) et les enregistrements (JEP 395), ainsi que des améliorations du langage présentées en préversion (preview) dans Java 14. Les développeurs pourront également utiliser le nouvel outil de packaging (JEP 392) pour livrer des applications Java auto-contenues, mais aussi découvrir trois interfaces de programmation en incubation : API Vecteur (JEP 338), API d’édition de liens étrangers (JEP 389) et API d’accès à la mémoire étrangère (JEP 389), ainsi qu’une fonctionnalité en préversion : les Classes scellées (JEP 397).

Oracle publie tous les six mois des mises à jour de Java afin que les développeurs puissent s’appuyer sur un calendrier de sorties prévisible. Les innovations sortent ainsi à un rythme soutenu pour améliorer constamment la performance, la stabilité et la sécurité, et contribuer ainsi à la diffusion de Java dans toutes les entreprises de tous les secteurs d’activité, quelle que soit leur taille.

“Cette dernière version démontre toute la puissance de ce rythme semestriel,” explique Georges Saab, Vice President of Development, Java Platform Group, Oracle. “Le filtrage par motif et les enregistrements étaient apparus pour la première fois il y a un an avec le JDK 14, ils ont, depuis, intégré plusieurs cycles de commentaires de la communauté basés sur leur utilisation dans des applications opérationnelles. Ce processus a permis aux développeurs Java d’expérimenter ces fonctionnalités avant leur finalisation, mais il a aussi permis de tenir compte de ces retours essentiels pour aboutir à deux JEP solides comme le roc qui répondent vraiment aux besoins de la communauté.”

La version Java 16 est le fruit d’un développement collectif impliquant l’ensemble de l’industrie avec les revues ouvertes, les générations hebdomadaires et une intense collaboration entre les ingénieurs Oracle et les membres de la communauté mondiale des développeurs Java, via la Communauté OpenJDK et le Processus de la Communauté Java. Voici les nouveautés de cette version Java 16 :

Améliorations du langage présentées dans JDK 14 et finalisées dans JDK 16

  • JEP 394: Filtrage par motif (Pattern Matching) pour instanceof – Enrichit le langage de programmation Java avec le filtrage par motif pour l’instance de l’opérateur.
  • JEP 395: Enregistrements– Enrichit le langage de programmation Java avec des enregistrements (Records), à savoir des classes agissant comme des transporteurs transparents de données non modifiables. Les enregistrements peuvent être vus comme des tuples nominaux

Nouvel outil pour améliorer la productivité des développeurs

  • JEP 392: Outil de packaging – Fournit l’outil jpackage pour packager des applications Java auto-contenues.

Améliorations de la gestion de la mémoire pour augmenter encore les performances

  • JEP 387: Méta-espace élastique – Restitue plus rapidement au système d’exploitation la mémoire classe-métadonnées HotSpot inutilisée (c’est-à-dire le méta-espace, ou metaspace), diminue l’empreinte du méta-espace et simplifie le code du méta-espace pour réduire les coûts de maintenance.
  • JEP 376: ZGC : Traitement simultané de la pile de threads– Déplace le traitement de la pile de threads de ZGC des points de sécurité (safepoints) vers une phase concurrente. Ce travail supprime le dernier goulet d’étranglement significatif pour le traitement concurrent des piles.

Amélioration du réseau pour renforcer la souplesse et la productivité des développeurs

  • JEP 380: Canaux des sockets de domaine UNIX – Ajoute le support de toutes les fonctionnalités des sockets de domaine Unix (communes à Windows et aux plus grands plateformes Unix) aux API de canaux de socket et de canaux de socket serveur dans le package java.nio.channels. Les sockets de domaine Unix sont utilisées pour les communications inter-processus (IPC) sur le même hôte. Elles sont en de nombreux points comparables aux sockets TCP/IP, sauf qu’elles sont adressées par des noms de chemin du système de fichiers plutôt que par des adresses et des numéros de port Internet Protocol (IP).

Traitement du code incompatible avec les évolutions futures

  • JEP 396: Encapsulage fort des internes du JDK par défaut – Dans le JDK 9 nous avions encapsulé fortement les nouveaux éléments de l’API interne, afin d’en limiter l’accès. Cependant, pour faciliter la migration, JDK 9 avait délibérément choisi de ne pas encapsuler fortement à l’exécution le contenu des packages qui existaient dans JDK 8. JDK 16 restreint cette contrainte en encapsulant par défaut la plupart des éléments internes du JDK, sauf pour des API internes critiques telles que sun.misc.Unsafe. Les utilisateurs finaux peuvent toujours choisir l’encapsulation forte plus légère qui était le comportement par défaut depuis JDK 9. Cette solution encourage les développeurs à migrer de l’utilisation d’éléments internes à l’utilisation des API standards, afin qu’eux-mêmes et leurs utilisateurs puissent passer sans problème aux futures versions de Java.
  • JEP 390: Avertissements pour les classes basées sur des valeurs– Désigne les classes enveloppantes primitives comme étant basées sur des valeurs et déprécie leurs constructeurs pour encourager leur suppression, en générant de nouveaux avertissements de dépréciation. Génère des avertissements de tentatives inappropriées de synchronisation sur des instances de toute classe basée sur des valeurs dans la plateforme Java.

Fonctionnalités en statut d’incubation et de préversion (preview)

  • JEP 338: API Vecteur (incubation) – Fournit une itération initiale d’un module en incubation, jdk.incubator.vector, pour exprimer des calculs de vecteurs se compilant de façon fiable à l’exécution vers des instructions matérielles optimales de vecteurs sur les architectures CPU supportées.
  • JEP 389: API d’édition de liens étrangers (incubation) – Introduit Foreign Linker API, une API offrant un accès au code natif pur-Java typé statiquement.
  • JEP 393: API d’accès à la mémoire étrangère (troisième incubation) – Introduit une API permettant aux programmes Java d’accéder de façon sure et efficace à la mémoire étrangère à l’extérieur du heap Java.
  • JEP 397: Classes scellées (deuxième préversion)– Enrichit le langage de programmation Java avec des classes et interfaces scellées. Les classes et interfaces scellées restreignent les autres classes ou interfaces qui pourront les étendre ou les implémenter.

Améliorations pour les contributeurs d’OpenJDK

De nouveaux portages pour le support de Java sur encore plus de plateformes

  • JEP 386: Portage Alpine Linux – Porte le JDK sur Alpine Linux, et sur d’autres distributions Linux utilisant musl comme bibliothèque C primaire, sur les deux architectures x64 et AArch64.
  • JEP 388: Portage Windows/Aarch64 – Porte le JDK sur Windows/AArch64.

Améliorer Java, encore et toujours

Java reste l’une des plateformes de développement les plus performantes de tous les temps, grâce aux innovations qu’elle intègre en permanence pour répondre aux nouveaux besoins des développeurs d’applications modernes. Pour que l’abonnement Oracle Java SE soit encore plus intéressant pour les clients, Oracle y a ajouté l’accès à GraalVM Enterprise. GraalVM peut améliorer la performance et diminuer la consommation de ressources par les applications, en particulier dans les microservices et dans les architectures cloud natives. Les entreprises qui gèrent leurs actifs Java en s’appuyant sur l’abonnement Oracle Java SE non seulement bénéficient des toutes dernières évolutions et d’un accès direct aux experts Java d’Oracle, mais elles constatent également des économies significatives par rapport aux autres approches.

“Plutôt que de m’intéresser aux nouveautés de Java tous les trois ou quatre ans, cette cadence fait de moi un développeur, un enseignant et un formateur passionné et actif en permanence”, déclare José Paumard, professeur assistant de l’Université Sorbonne Paris Nord et co-organisateur du groupe parisien des utilisateurs de Java. “J’attendais avec impatience de pouvoir utiliser les Records pour améliorer la performance et la lisibilité de mon code de traitement des données, et après avoir eu la possibilité de les utiliser en préversion ils sont maintenant disponibles en production avec cette nouvelle version.”

https://www.oracle.com/fr/news/announcement/oracle-announces-java-16-2021-03-16.html

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.