La JEP donne plusieurs raisons à cette proposition de suppression. La plupart de ces raisons se basent principalement sur des commentaires reçus qui ressortent quelques limites de cette fonctionnalité. « 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) », écrit dans un mail, Brian Goetz, architecte de langage Java chez Oracle.
Dans le mail adressé à la communauté, il expose quelques-uns de ces commentaires qui « sont sont incomplets et sans ordre particulier » :
- la séquence à deux guillemets ‘’ peut être confondue pour une chaîne vide mais en fait c’est un délimiteur ;
- bien que ce soit cool que nous puissions intégrer une série de dix-sept devis dans une chaîne de caractères entre dix-huit guillemets, ces chaînes peuvent également être difficiles à lire ;
- il n’y pas de voie directe pour démarrer ou de terminer un littéral de chaîne brute avec un backquote ;
- les littéraux de chaîne brute peuvent être multilignes mais les chaînes traditionnelles de littéraux ne peuvent pas l'être. Alternativement, les littéraux multilignes doivent aussi être brut, ce qui ne correspond pas toujours à ce que l’utilisateur veut. C’est un inutile asymétrie, étant donné que ces propriétés sont logiquement indépendantes, et ces asymétries augmentent généralement la charge cognitive de l'utilisateur ;
- le caractère backquote est un peu léger ; il est facile à manquer et peut donc semer la confusion lorsque la chaîne se termine et le code le contenant reprend ;
- la règle "nombre illimité de guillemets" peut contraindre les IDE sur le point de savoir si une séquence de guillemets est open-contents-close, ou un grand séparateur d'ouverture, limiter leur capacité à aider en remplissant les délimiteurs de fermeture et placer le curseur au bon endroit. Nous voulons que Java reste conviviales.
A ce dernier commentaire, un internaute répond suivant ces lignes « honnêtement, cela me semble être un argument insensé. Les littéraux de chaîne bruts fonctionnent déjà assez bien dans IntelliJ, avec la surbrillance et tout. Visual Studio Code pourrait être facilement modifié pour prendre cela en charge, en prenant en compte des schémas similaires d'autres langages de programmation déjà pris en charge, en particulier Markdown. Les surligneurs basés sur des expressions régulières pourraient très facilement prendre en charge cette syntaxe en utilisant des références arrière. Et quand tout le reste échoue, les expressions comme hardcoding `, ``, ```, ```` ne semble pas être la plus mauvaise façon de le faire en Java ».
Un autre, estime qu’il ne voit pas pourquoi l’on se pose beaucoup de questions sur une chose qui paraît assez simple. Il propose, pour palier au problème des littéraux, de copier purement et simplement l’implémentation d’un autre langage pour clore le débat. Brian Goetz, toujours dans son mail, pense que laisser la chose dans l’état actuel ne va pas dans l’avantage au langage et qu’il faudra attendre peut-être un plus pour intégrer cette fonctionnalité de façon permanente. Il finit son mail en déclarant que « nous pensons pouvoir faire mieux sur certains ou plusieurs de ces fronts. L'un des avantages de la nouvelle cadence plus rapide est que le coût de rater un train (même celui auquel vous êtes déjà monté, mais qui n'a pas encore quitté la gare) est beaucoup plus bas. Et, en supposant qu'il soit peu probable que nous quittions Preview sans modification, retirer maintenant ne modifie pas la date probable à laquelle cette fonctionnalité deviendra permanente, car nous voudrions probablement reprévisualiser une version modifiée de toute façon ».
Doit-on s’attendre à voir cette fonctionnalité à la date de sortie définitive ou sera-t-elle retiré pour cette version du langage ? Pour l’instant rien n’est encore décidé et les tests pour rendre la version stable se poursuivent.
Source : Brian Goetz
Et vous ?
Qu'en pensez-vous ?
Selon vous, les littéraux devrait-ils être supprimés de JDK 12 ? Pourquoi ?
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
Andrew Haley de Red Hat donne son avis sur l'avenir d'OpenJDK, l'implémentation libre de Java SE, après la sortie de JDK 11 sous licence commerciale
JDK 11 : trois nouveautés sont prévues ainsi que la suppression de JAVA EE, JavaFX et CORBA, dans le cadre des mises à jour semestrielles
JDK 10 : les fonctionnalités de la prochaine version de Java sont désormais gelées, la sortie est attendue pour le 20 mars 2018
Java 8 ne va plus recevoir de mises à jour et correctifs de sécurité à partir de septembre à moins de passer à un support commercial