Oracle a publié la version 16 du langage de programmation Java et de la machine virtuelle.
InfoQ a initialement informé sur cette version en novembre 2020 et aucune modification substantielle n'a été apportée à la sortie depuis lors.
La liste finale des fonctionnalités contient :
- JEP 338 : Vector API (Incubator)
- JEP 347 : Enable C++14 Language Features
- JEP 357 : Migrate from Mercurial to Git
- JEP 369 : Migrate to GitHub
- JEP 376 : ZGC: Concurrent Thread-Stack Processing
- JEP 380 : Unix-Domain Socket Channels
- JEP 386 : Alpine Linux Port
- JEP 387 : Elastic Metaspace
- JEP 388 : Windows/AArch64 Port
- JEP 389 : Foreign Linker API (Incubator)
- JEP 390 : Warnings for Value-Based Classes
- JEP 392 : Packaging Tool
- JEP 393 : Foreign-Memory Access API (Third Incubator)
- JEP 394 : Pattern Matching for instanceof
- JEP 395 : Records
- JEP 396 : Strongly Encapsulate JDK Internals by Default
- JEP 397 : Sealed Classes (Second Preview)
La cadence des fonctionnalités reste similaire aux versions précédentes avec 17 fonctionnalités fournies dans Java 16, contre 14 fonctionnalités pour Java 15 et 16 fonctionnalités livrées dans Java 14.
Oracle était responsable d'un peu plus des 2/3 des problèmes résolus dans Java 16, Red Hat, SAP, Tencent et ARM étant les plus gros contributeurs non-Oracle.
Une mise en garde importante est que le populaire outil de construction Gradle n'est pas encore compatible avec Java 16, en raison d'une dépendance à la bibliothèque de manipulation de bytecode ASM. Ce problème sera résolu dans les semaines à venir, et provient de l'absence d'un framework de manipulation de bytecode accessible à l'utilisateur dans le JDK lui-même. Dans l'état actuel des choses, les utilisateurs de Gradle ne peuvent pas mettre à niveau vers Java 16 et il n'existe aucune solution de contournement.
Java 16 n'est pas une version de support à long terme et sera obsolète à la prochaine version, Java 17 (qui est une version LTS) en septembre 2021.
Actuellement, seuls deux JEP ciblent Java 17 :
- JEP 356 : Enhanced Pseudo-Random Number Generators
- JEP 382 : New macOS Rendering Pipeline
avec deux autres JEPs comme proposées pour cible :
- JEP 391 : macOS/AArch64 Port
- JEP 398 : Deprecate the Applet API for Removal
Il est également fort probable que certaines des fonctionnalités actuelles en Preview et Incubator atteindront la production dans le cadre de Java 17. En particulier, ces deux JEP Java 16 pourront avoir une version finale la prochaine fois :
- Foreign-Memory Access API
- Sealed Classes
Cependant, cela n'a pas encore été confirmé par Oracle.
En outre, au cours des dernières semaines, plusieurs brouillons de JEPs relatifs aux mécanismes de base du projet Valhalla ont été déposés ou mis à jour, mais ces JEPs ne devraient pas être livrées dans leur état final sans au moins un (et plus probablement plusieurs) cycles d'incubation en premier.
Aucune date de sortie pour Java 17 n'a encore été annoncée, mais il devrait être livré à la mi-septembre, avec un gel des fonctionnalités à la mi-juin 2021.
Java 16 peut être téléchargé à partir d'Oracle avec des binaires d'autres fournisseurs qui devraient être disponibles dans les prochains jours.