Production Perig - Fotolia

Comme prévu, Oracle annonce la disponibilité générale de Java 16

Le 16 mars, Oracle a annoncé la disponibilité générale de Java 16, également connu sous le nom d’Oracle Java Development Kit (JDK) 16. Cette mouture de la plateforme apporte 17 améliorations destinées encore et toujours à accroître la productivité des développeurs.

Java 16 est la dernière étape avant qu’Oracle ne livre le JDK 17, qui sera une version supportée à long terme (LTS). La firme de Larry Ellison devra donc maintenir JDK 17 pendant au moins trois ans. Pour l’instant, Java 17 ne comporte que deux JEP (Java Ehancement Proposal) : le passage de l’API OpenGL à Apple Metal pour macOS et un générateur de nombres pseudo-aléatoires revu et corrigé.

 En attendant, Java 16 contient de nouvelles fonctionnalités telles que l’outil de packaging ou jpackage, qui permet de conditionner des applications Java autonomes pour Windows (.msi, .exe), macOS (dmg et pkg) et Linux (deb et rpm).

Citons les versions finalisées des améliorations du langage Pattern Matching for instanceof et Records introduites dans Java 14. Pattern Matching for instanceof confie à l’opérateur instanceof le filtrage de motifs.

Java Records doit améliorer Java grâce aux enregistrements, des classes qui agissent comme des supports transparents pour des données immuables. Ces fonctionnalités ont été complétées dans le JDK 16, après une année de feed-back de la part des membres de la communauté ayant travaillé sur des applications du monde réel.

En outre, Java 16 comporte trois nouvelles fonctionnalités en phase d’incubation : l’API Vector, l’API Foreign Linker et l’API Foreign-Memory Access, ainsi que les Sealed Classes accessibles en deuxième aperçu. Celles-ci améliorent Java avec des classes et des interfaces scellées qui permettent de contrôler la manière d’implémenter le code associé, d’apporter des restrictions d’usage d’une superclasse, explique Georges Saab, vice-président du développement du Java Platform Group chez Oracle.

Une cadence de développement accélérée

Pour rappel, Oracle fournit des mises à jour de Java tous les six mois afin d’offrir aux développeurs un calendrier de sortie prévisible.

« L’un des objectifs de cette cadence semestrielle était de permettre à l’écosystème de s’adapter plus rapidement aux nouvelles versions », déclare Georges Saab. « Et le fait d’avoir des builds en accès anticipé disponibles pendant le développement de chacune de ces versions aide ».

« Nous ne définissons plus les versions majeures par fonctionnalité, mais en fonction d’une limite chronologique. »
Georges SaabVice-président du développement du Java Platform Group, Oracle

Toutefois, le dirigeant considère qu’il ne s’agit pas d’imposer un rythme d’adoption aux programmeurs. « Nous ne définissons plus les versions majeures par fonctionnalité, mais en fonction d’une limite chronologique. Cela permet aux développeurs de suivre ou non le rythme des spécifications. Si je rate ce train, je peux toujours me rattraper au suivant », indique-t-il auprès du MagIT. Selon lui, cela permet aussi de partager les avancées sur les plus gros sujets qui animent la communauté sans pour autant presser leur adoption.

Georges Saab ajoute qu’Oracle a également amélioré la machine virtuelle Java en mettant en œuvre la fonction Elastic Metaspace ainsi que le traitement simultané de la pile de threads avec le Z Garbage Collector (ZGC).

Elastic Metaspace renvoie rapidement les métadonnées de classe HotSpot ou la mémoire métaespace inutilisée au système d’exploitation, réduit leur empreinte, simplifie le code métaespace, ce qui abaisse les coûts de maintenance. Le traitement simultané des piles de threads ZGC élimine les goulets d’étranglement pour permettre le traitement simultané des piles.

« Les bibliothèques s’améliorent également, tant en ce qui concerne les canaux de socket du domaine Unix que l’outil de packaging, qui sera en quelque sorte le moyen standard d’obtenir des applications Java distribuées à l’avenir », indique Georges Saab.

« Il s’agit vraiment de faire le ménage et d’aider les gens », ajoute-t-il. « Nous voulons nous assurer que leurs applications et leurs librairies sont résistantes au rythme accru de l’évolution du JDK. »

 L’API Vector représente une innovation clé dans Java 16, considère un observateur de longue date du marché Java.

« Oracle continue de proposer des innovations pour Java, même pour une version supportée à court terme comme Java 16", déclare Holger Mueller, analyste chez Constellation Research.

« Bien que l’API vectorielle soit la plus grande innovation, celle qui sera la plus remarquée sera la migration vers Git et GitHub. »
Holger MuellerAnalyste, Constellation Research

En ce qui concerne l’API Vector, Oracle fournit un module en incubation, jdk. incubator. vector, pour exprimer les calculs vectoriels qui sont compilés au moment de l’exécution en instructions matérielles vectorielles optimales sur les architectures CPU prises en charge.

« Bien que l’API vectorielle soit la plus grande innovation, celle qui sera la plus remarquée sera la migration vers Git et GitHub », rappelle Holger Mueller.

 « C’est une étape importante pour amener la communauté Java vers les dépôts de code modernes », « Les développeurs C++ seront ravis de voir leurs actifs de code devenir des citoyens de première classe dans Java. »

Mercurial et Git sont tous deux open source et ont été publiés pour la première fois en avril 2005.

« À l’époque, Mercurial avait un avantage, parce qu’il fonctionnait, qu’il était logique pour les personnes habituées aux systèmes traditionnels de gestion du code source et qu’il était plus stable », affirme Cameron Purdy, PDG de xqiz.it à Lexington (Massachusetts) et ancien vice-président senior du développement chez Oracle.

« Mais Git l’a rapidement dépassé, et il est aujourd’hui utilisé par des millions de développeurs. L’équipe Java ne voulait pas continuer à mener une bataille inutile sur son choix de SCM, alors que presque tous les développeurs maîtrisent et emploient déjà Git, et que seul un petit nombre connaît et recourt à Mercurial », déclare Cameron Purdy. « La prise en charge de Git au projet OpenJDK était donc une évidence ».

Le projet Skara d’Oracle visant à déplacer les dépôts de Mercurial vers Git s’est déroulé sans problème, vante Georges Saab.

« Nous avons certainement constaté que cela a rendu les choses plus accessibles, je dirais, à un nouveau public ou à un public plus large de développeurs qui étaient intéressés par ce qui se passait dans le développement d’OpenJDK », estime-t-il.

Lorsque le changement a été suggéré pour la première fois il y a quelques années, de nombreux développeurs appréhendaient les conséquences de ce changement, qu’il s’agisse des capacités dont ils disposaient ou de la nécessité de modifier la manière dont le développement d’OpenJDK était effectué. Mais la transition a été « simple », si l’on en croit Georges Saab. Ainsi, Oracle a migré les dépôts de code source de la communauté OpenJDK de Mercurial à Git et ils résideront sur GitHub.

GraalVM « gratuit » dans Java SE Subscription

En outre, avec Java 16, Oracle a ajouté son runtime haute performance GraalVM Enterprise pour Java SE Subscription sans coût supplémentaire, rappelle Manish Gupta, vice-président du marketing pour Java et GraalVM.

Dans le cas de GraalVM, Oracle s’oriente vers un compilateur d’exécution largement intégré et piloté par Java, commente Cameron Purdy. Pour l’instant, « la maturité n’est pas suffisante pour faire de cette technologie l’approche de base par défaut dans la plateforme Java, mais elle va mûrir et découpler la compilation adaptative du système d’exécution sous-jacent ».

« À terme […] les organisations – comme les fournisseurs de cloud – pourront sculpter le code que Java génère pour l’adapter à leurs environnements cloud native. »
Cameron PurdyPDG de xqiz.it, Lexington (Massachusetts) et ancien vice-président senior du développement, Oracle.

« À terme, cela signifie que les développeurs Java seront en mesure de jouer avec les optimisations au niveau matériel sans jamais quitter le confort de leur code Java, et les organisations – comme les fournisseurs de cloud – pourront sculpter le code que Java génère pour l’adapter à leurs environnements cloud native, à la fois du point de vue de l’utilisation des ressources et de la facilité de gestion », prévoit Cameron Purdy.

Java SE Subscription est une offre disponible depuis trois ans avec laquelle Oracle revendique des milliers de clients.

En fin de compte, personne ne paie pour un langage, et presque personne ne paiera pour un runtime. Mais les entreprises qui utilisent un langage et le moteur d’exécution associé peuvent éventuellement être prêtes à payer, pour obtenir un support et un accès aux correctifs de sécurité sur des versions non supportées depuis longtemps.

« Surtout si ces correctifs proviennent d’une organisation disposant d’une équipe commerciale bien établie, comme Oracle », renchérit Cameron Purdy. « Ainsi, continuer à étoffer l’offre autour de la plateforme Java rapportera des dividendes à long terme à Oracle. »

Pour approfondir sur API