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

Le , par Victor Vincent

235PARTAGES

8  0 
Dans le cadre de la nouvelle cadence de lancement de chaque six mois, adoptée pour l’édition standard de Java, Oracle est en train de peaufiner les dernières fonctionnalités de prochaine la version du JDK, la version 11, dont la sortie est prévue en septembre 2018. Cette version contrairement à JDK 10, est une version LTS pour « Long Term Support » ou version avec un support à long terme. Elle devrait avoir un support Oracle de premier niveau jusqu’en septembre 2023 et un support étendu incluant des correctifs et des alertes de sécurité jusqu’en 2026.

Succédant au JDK 10 lancé le 20 mars, seules trois nouvelles fonctionnalités sont annoncées à ce jour bien que d’autres puissent s’y greffer avant la date de sortie prévue.

  • Le format de fichier de classe Java qui sera étendu pour prendre en charge une nouvelle forme de pool de constante, CONSTANT_Dynamic.
  • Le mot clé « var » sera désormais utilisable lors de la déclaration des paramètres formels d'une expression lambda typée implicitement. En d’autres termes, une syntaxe à variable locale pour les paramètres lambda doit suivre la syntaxe d'une déclaration de paramètre formelle dans une expression implicitement typée avec la syntaxe d'une déclaration de variable locale.
  • Le « garbage collector » ou ramasse-miette Epsilon, annoncé en tant que collecteur "no-op", gérera l'allocation de mémoire sans implémenter de mécanismes de récupération de mémoire. Les cas d'utilisation d'Epsilon comprennent les tests de performance, la pression de la mémoire et l'interface de la machine virtuelle. Il pourrait également être utilisé pour des utilisations de courtes durées.



Parallèlement à ces ajouts, certaines fonctionnalités ne seront plus présentes. En effet dans la version Java 11, Java FX ainsi que les modules CORBA et Java JEE seront supprimés. La suppression de JavaFX étant en cours se prolongera dans cette version puisque n’étant pas liée au programme de mise à jour semestrielle de Java JDK. Déprécié depuis Java SE9, le retrait des modules Java EE et CORBA était une mesure prévue et sera effectif avec JDK11.
La suppression de CORBA peut être justifiée par deux facteurs. Premièrement, elle date des années 1990 et ne recèle plus aucun intérêt pour le développement d’applications Java modernes d’après Oracle. Enfin, les coûts de maintenance sont élevés comparés aux bénéfices rapportés. Cependant, cette suppression risque d’entrainer des dysfonctionnements sur des implémentations existantes. En effet, ces dernières risquent de ne pas fonctionner si elles n’incluent qu’une partie de l’API CORBA. Elles s’attendront à ce que le JDK leur fournisse le reste. De plus, il n’existe pas de versions tierces pour CORBA et il est peu probable qu’un tiers se décide à en prendre la charge.

Pour ce qui est de la plateforme JAVA EE, la suppression est due à des difficultés de maintenance qu’elle a entrainées dans JAVA SE au fil de ses évolutions. Sortie en décembre 2011, JAVA SE 6 était accompagnée d’une large panoplie des services web utiles au développeur. Parmi ceux-ci, on peut en citer quatre qui étaient dédiés à JAVA JEE : JAX-WS (Java API for XML-based Web Services,**JAXB (Java Architecture for XML Binding), JAF (JavaBeans Activation Framework) et Common Annotations for Java. Ces ajouts de fonctionnalités pour JAVA EE ont entrainé des complications pour JAVA SE notamment parce qu’ils incluaient des fonctionnalités sans rapport avec cette dernière. Ainsi Oracle affirme qu’avec des versions « standalone » disponibles sur des sites tiers, il n’est plus nécessaire de l’inclure dans JAVA SE ou dans le JDK. Cependant, certaines applications pourraient ne pas compiler si elles s’appuient sur un support prêt à l’emploi du JDK pour les API et outils Java EE. Des incompatibilités binaires et de source se produiraient lors de la migration de JDK 6,7 et 8 vers une version ultérieure. Oracle recommande aux développeurs concernés par ces risques de déployer sur des versions alternatives des technologies Java EE à la place.

Source : Mail List Open JDK, Open JDK

Et vous ?

Que pensez-vous de la suppression annoncée des trois modules cités plus haut de JDK 11 ?

Voir aussi

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

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

Avatar de Pill_S
Membre expert https://www.developpez.com
Le 28/03/2018 à 9:38
Suppression de... JavaFX? J'ai bien lu? C'est une blague??!

N'ayant jamais vraiment utilisé, je ne vais pas trop m'en plaindre, mais par contre ça me semblait un framework moderne pour développer du standalone... le successeur de swing... mis en avant par Oracle (au moins durant un temps...) comme LA solution à tous nos problèmes

ça devient un package séparé? ou c'est vraiment end of life?
2  0 
Avatar de GLDavid
Membre expert https://www.developpez.com
Le 28/09/2018 à 16:41
Bonjour

Enfin, Haley termine son propos en reconnaissant que l’absence du soutien des ingénieurs d’Oracle constituera un défi pour la communauté Java. Mais pour lui, ce défi devrait permettre à la communauté de prouver qu’elle peut toujours tenir sans cette entreprise. Un appel est donc lancé aux contributeurs pour assurer la pérennité d’OpenJDK.
J'appelle cela une liberation. Pour être franc et avoir été pendant longtemps un codeur Java, la nouvelle de l'acquisition de Java par Oracle m'a été désagréable et les évènements consequents ne m'ont pas rassurés. On savait qu'Oracle essaierait de tirer le maximum de bénéfices.
Là, je vois une prise de conscience et un appel à ce que Java soit clairement du domaine libre. En gros, OpenJDK serait la base et norme, Oracle peut faire ce qu'il veut autour de cette base.

@++
2  0 
Avatar de adiGuba
Expert éminent sénior https://www.developpez.com
Le 29/09/2018 à 20:27
C'est toutefois un cas un peu particulier, car il utilise une librairie de Java EE, et donc qui ne fait pas partie de l'API standard de Java SE...

La vrai solution serait de fournir une implémentation avec le programme.

Pour la grande majorité des programmes le fonctionnement reste identique qu'en Java 8 ou inférieur tant qu'on n'utilise pas les modules.
2  0 
Avatar de BugFactory
Membre expérimenté https://www.developpez.com
Le 28/03/2018 à 11:40
D'après
https://blogs.oracle.com/java-platfo...oadmap-updates
JavaFx sera disponible comme module séparé.

J'ai un projet JavaFx en production et ça ne me plait pas. JavaFx a besoin de davantage d'engagement de la part d'Oracle, pas moins.
1  0 
Avatar de adiGuba
Expert éminent sénior https://www.developpez.com
Le 29/03/2018 à 13:26
Personnellement je vois plutôt d'un très bon œil le fait que certains modules puissent être détaché du JRE.
Le JRE devrait vraiment se concentrer sur l'essentiel.

Et ce n'est pas forcément une mise à mort.
Au contraire le fait de séparer ces modules apporte même des avantages :
  • Ils pourront évoluer indépendamment de Java et avoir des cycles de release différent sans avoir à attendre la prochaine version de Java.
    Et ce même si avec le passage aux releases tous les 6 mois le problème est moins flagrant qu'avant...
  • Ils auront la possibilité de proposer des évolutions "incompatibles", ce qui est quasi-impossible dans le standard sans tout casser.
    Avec des modules distincts on peut tout à fait envisager cela sans trop de problème.


Reste juste les problèmes de déploiements soulevé par professeur shadoko... mais je ne saurais en dire plus vu que je n'ai pas encore touché à Java 9 !
1  0 
Avatar de Pill_S
Membre expert https://www.developpez.com
Le 29/03/2018 à 14:02
Tout dépend toujours du point de vue sous lequel on observe un événement...

Personnellement, je vois ça plutôt comme quelque chose de mauvais, quand tu dis:


Ils pourront évoluer indépendamment de Java et avoir des cycles de release différent sans avoir à attendre la prochaine version de Java.
... moi je retiens plutôt:

Et ce même si avec le passage aux releases tous les 6 mois le problème est moins flagrant qu'avant...
donc avantage limité, mais surtout:

Ils auront la possibilité de proposer des évolutions "incompatibles"
... et ça ça peut être plutôt méchant. Bien que n'ayant pas trop codé en C/C++, j'ai entendu tellement de fois les légendaires citations du genre "ouaaaaais quand tu prends la version 1.2 du compilateur avec la version 3.4 de telle librairie, ça fait que la version 5.6 de la dépendance truc a un bug alors faut upgrader machintruc en version 7.8 mais si tu fais ça tu pourras plus utiliser la syntaxe bidule-machin"...

On était plutôt épargné avec Java, étant donné que tout beaucoup était géré par Sun/Oracle, on utilisait un runtime cohérent. J'ai peur que cela soit en train de disparaitre et que tout devienne très bordelique avec un JRE explosé en de multiples dépendences, plus vraiment sous contrôle...

PS: souvenez-vous de Flex. ça lui a pas trop réussi d'être désolidarisé d'Adobe...
1  0 
Avatar de grunt2000
Membre confirmé https://www.developpez.com
Le 11/09/2018 à 15:43
Sincèrement, je n'en peux plus.

J'ai passé un week-end à essayer de migrer une application Java 8 en Java 10 et à la mettre en modules.
Arrivé à un sous-projet utilisant Apache Spark, j'avais du mal : un module spark.core_2.11 m'était proposé, mais le placer dans module-info.java le faisait râler : il n'aime pas les chiffres ; j'étais étonné qu'un module puisse avoir ce nom-là, s'il ne convenait pas.
J'ai cherché trop longtemps : il ne fallait pas. Spark 2.3.1, la dernière version, ne soutient pas Java 10. Pas la 9 non plus. Seulement la 8. J'étais grognon.

C'en est ainsi de quasiment tout.
Java 9+ ça peut être le 10 ou le 11, ça reste un fiasco. Un an après la sortie de Java 9, je n'ai pas vu d'entreprises et je ne aucun projet autour de moi qui ait migré dessus.
Et surtout : aucune qui en ait l'intention. Et elles ont raison : il faudrait déjà que les projets open source, qui sont partie de nos logiciels, fonctionnent eux-mêmes avec du Java 9+ : c'est loin d'être le cas.

En Janvier prochain, nous serons tous sur une version obsolète : Java 8. On aura jamais vu ça. Personne n'est capable de migrer.
Qu'Oracle continue donc avec du Java 11, 12, 13 ! Ça ne sert à rien. Il fait du forcing à coup d'injonctions, mais nous sommes tous bloqués, tous coincés derrière.

Comme il dit mon maître à penser : "J'voudrais trouver les mots, mais y a pas de mots."
1  2 
Avatar de adiGuba
Expert éminent sénior https://www.developpez.com
Le 11/09/2018 à 18:16
Citation Envoyé par grunt2000 Voir le message
Personne n'est capable de migrer.
Il y a pourtant une solution simple : ne pas utiliser le système de module !

Tant que les modules ne seront pas largement adoptés par les librairies tierces, ce sera inutilisable (ou difficilement).

C'est pas vraiment anormal, on avait eu un peu les mêmes problèmes avec les Generics...
1  0 
Avatar de adiGuba
Expert éminent sénior https://www.developpez.com
Le 27/09/2018 à 20:46
L'OpenJDK c'est la version de référence (depuis je ne sais plus quelle version).
La version d'Oracle n'est juste qu'une des implémentations parmi d'autre (comme IBM).

Rien n'a vraiment changé de ce côté là. C'était déjà comme cela avant.

Ce qui a changé c'est que desormais le JDK d'Oracle est soumis à un accord commercial.
En clair il n'est plus gratuit... Contrairement à l'OpenJDK.

Bref pour continuer à l'utiliser gratuitement c'est par ici :
https://jdk.java.net/11/
1  0 
Avatar de grunt2000
Membre confirmé https://www.developpez.com
Le 28/09/2018 à 12:47
Juste pour que je comprenne bien, parce que ça ne m'est pas clair : pareil mais implémentation différente ?

Est-ce que la situation est celle-ci :

Oracle OpenJDK
Classes Mêmes CRC que OpenJDK Mêmes CRC que Oracle
Exécutables java.exe et javac.exe même taille et CRC/SHA-1/MD5... que OpenJDK java.exe et javac.exe même taille et CRC/SHA-1/MD5... que Oracle

Ou bien :
Les classes distribuées et les exécutables distribués peuvent différer binairement
et alors : comment précisément ?
1  1 
Contacter le responsable de la rubrique Accueil

Partenaire : Hébergement Web