Java : Oracle publie la première release candidate du JDK 12
Avec toutes les fonctionnalités majeures annoncées sauf les littéraux de chaînes bruts

Le , par Bill Fassinou

139PARTAGES

13  2 
L’annonce a été faite le 15 février par Oracle que la première version Release Candidate du JDK 12 est disponible en téléchargement pour les plateformes Linux, Mac OS et Windows. Cette version RC1 a été lancée, dit la JEP (proposition d’amélioration du JDK), dans le but de recenser les bogues qu’il pourrait y avoir ainsi que les différentes suggestions de la communauté avant sa date de disponibilité générale prévue pour le 19 mars prochain. Passons en revue sa feuille de route depuis l’annonce de sa version bêta en décembre à ce jour.

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 ?

Que pensez-vous de la RC1 de JDK 12 ?
Cette version admissible comble-t-elle vos attentes ? Pourquoi ?
Quelles autres fonctionnalités souhaiteriez-vous avoir dans le JDK 12 ?

Voir aussi

Java : le JDK 12 est disponible en version bêta, il prend en charge Unicode 11 et dispose d'un nouveau format de clé privée codé x25519 et x448

Java 12 ne prendra probablement pas en charge les littéraux de chaîne bruts, la proposition d'amélioration JDK (JEP) suggère qu'on les supprime

Les littéraux de chaîne bruts ont été supprimés de Java 12 comme l'a suggéré la proposition d'amélioration JDK (JEP)

Une erreur dans cette actualité ? Signalez-le nous !


 
Contacter le responsable de la rubrique Accueil

Partenaire : Hébergement Web