
La publication de la version bêta du JDK 12 remonte à décembre dernier. À ce moment, plusieurs fonctionnalités sont apparues dans le kit de développement et plusieurs autres ont été annoncées pour la suite de sa mise au point. Cette version bêta alignait neuf nouveautés principales et quelques fonctionnalités telles que la prise en charge d'Unicode 11, un nouveau format de clé privée codée x25519 et x448 compatible avec la norme RFC 8410. Les neuf caractéristiques qui ont été présentées sont les suivantes :
- Shenandoah : c’est un ramasse-miettes à faible temps de pause en effectuant le travail d’évacuation simultanée entre les threads java en cours d’exécution. Les temps de pause sont indépendants de la taille du tas ;
- suite Microbenchmark : c’est un outil pour aider les développeurs à utiliser les microcritères existant déjà dans le code source du JDK ou en créer de nouveaux ;
- expression de commutation : apporte quelques modifications à l’instruction switch pour la rendre plus flexible ;
- littéraux de chaînes bruts : permettent aux développeurs de pouvoir utiliser des chaînes littérales brutes sans échappement ;
- API de constantes JVM : permet d’ajouter une API pour les descriptions nominales des principaux artéfacts de classes et de fichiers de classe, en particulier les constantes pouvant être chargées à partir du pool de constantes ;
- un apport AArch64, pas deux : sert à supprimer toutes les sources liées aux arm64port pour permettre à tous les contributeurs de concentrer leurs efforts sur une implémentation ARM 64 bits unique et d’éliminer le travail en double requis par la maintenance de deux ports ;
- archives CDS par défaut : sert à améliorer le processus de génération JDK afin de générer une archive CDS (Class Data Sharing) à l’aide de la liste de classe par défaut sur des plateformes 64 bits ;
- collections mélangées abandonnées pour G1 : permet d’annuler les collections d’éléments lorsqu’elles peuvent dépasser la cible de pause ;
- retournez rapidement la mémoire validée non utilisée de G1 : améliore le récupérateur G1 pour qu’il puisse renvoyer automatiquement la mémoire heap de Java au système d’exploitation lorsqu’il est inactif.
Seulement quelques jours après cette publication, la JEP annonçait qu’une des fonctionnalités mises en avant dans la version bêta ne sera probablement plus prise en charge ou ne sera plus intégrée dans le JDK 12. Il s’agissait des littéraux de chaînes bruts pour lesquels la JEP a indiqué n’avoir pas encore trouvé le bon moyen d’implémenter cette fonctionnalité au sein du JDK 12.
« En examinant les commentaires que nous avons reçus, je ne suis plus convaincue que nous ayons encore trouvé le bon compromis entre complexité et expressivité, ou que nous en avons suffisamment exploré l’espace de conception pour être sûr que la conception actuelle est la meilleure que nous puissions faire. En le retirant, nous pouvons continuer à affiner la conception, explorer plus d'options et viser un aperçu répondant réellement aux exigences du processus de fonction de prévisualisation (JEP 12) », avait écrit dans un mail, Brian Goetz, architecte du langage Java chez Oracle.
La JEP a mis en exécution cette annonce plus tard, vers la fin du mois de décembre, en supprimant définitivement cette fonctionnalité de la préversion du JDK 12. Pour se justifier, la JEP avait listé plusieurs raisons à cette suppression. On pourrait citer par exemple le fait que les littéraux de chaîne peuvent s’étendre sur plusieurs lignes et n'interprète pas les séquences d'échappement telles que les \n correspondant aux échappements Unicode de la forme \uXXXX ou le fait que les littéraux de chaînes bruts en général ne prennent pas directement en charge l'interpolation de chaîne. De nombreux autres problèmes (par exemple les délimiteurs) liés aux littéraux de chaînes bruts avaient été cités par la JEP sur le site du OpenJDK.
Par comparaison à ses pairs, la JEP indiquait que les langages de programmation tels que C++, Groovy, JavaScript, Python pour ne citer que ceux-là utilisent des littéraux de chaîne bruts et donc, qu'elle étudie ces langages pour les délimiteurs qu’ils utilisent ou pour rechercher des représentations de chaînes. Un groupe d’internautes avaient conseillé à la JEP de regarder dans Python 3.7 pour en tricher l’implémentation des littéraux de chaînes bruts qu’ils jugent être une réussite. « En fait, je craignais que Java ne soit trop influencé par C# en ce qui concerne les chaînes. Les développeurs Java devraient regarder dans Python 3.7 et non pas C# pour de belles syntaxes de chaînes », avait-il écrit en commentaire.
D’autres par contre, étaient un peu catégoriques sur le sujet. Un parmi eux avait écrit ceci : « En termes simples, je ne vois que très peu de cas d’utilisation où les chaînes brutes pourraient être utiles, qui permettent ou encouragent de nombreuses mauvaises pratiques. Dans mon esprit, les chaînes multilignes sont encore moins utiles et ajoutent une complexité inutile (voir la section sur la gestion des marges). Je ne pense pas que ça vaille le coup ».
De nombreux tests étant faits depuis décembre passé, la RC1 vient donc d’être publiée. Elle est publiée avec les 8 fonctionnalités majeures restantes depuis la suppression des littéraux de chaînes bruts. Ce sont : Shenandoah (le ramasse-miettes à temps de pause réduit), l’API de constantes JVM, la suite Microbenchmark, l’annulation des collections mixtes pour G1, le retour rapide de la mémoire non utilisée de G1, les archives CDS par défaut, un apport AArch64 et les expressions de commutation. Toutes les fonctionnalités sont donc au rendez-vous à part bien sûr les littéraux de chaînes bruts. Vous pouvez accéder au site de l’OpenJDK pour en apprendre davantage sur cette release candidate du JDK 12 et en savoir plus sur les fonctionnalités précitées.
En septembre 2017, Oracle avait annoncé qu’il y aura à l’avenir deux versions du JDK par an du fait que Java soit en concurrence directe avec d’autres plateformes qui sont mises à jour plus souvent. Après la sortie du JDK 12 le 19 mars prochain, il y aura donc très probablement une autre version du JDK courant cette année. Ceci étant dit, il semble qu’aucune fonctionnalité n’est en vue d’être ajoutée à cette version du JDK. Beaucoup d’internautes sur Reddit se disent impatients de pouvoir tester cette version du JDK et sont curieux de savoir ce que les prochaines versions de ce dernier réservent à la communauté.
Source : OpenJDK
Et vous ?



Voir aussi



Vous avez lu gratuitement 320 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.