JDK 9 : la nouvelle date de sortie est fixée au 27 juillet 2017
Après acceptation de la demande de report de Mark Reinhold

Le , par Michael Guilloux, Chroniqueur Actualités
Comme c’était prévisible, le JDK 9 ne sera pas prêt pour être livré le 23 mars 2017, comme c’était prévu. La sortie initiale de Java 9 avait été annoncée pour le 22 septembre 2016. Mais en décembre dernier, Mark Reinhold, architecte en chef du JDK chez Oracle, a demandé un délai supplémentaire de six mois pour la finalisation de Jigsaw, un projet dont l’objectif est de concevoir et mettre en œuvre un système de modules standards pour Java SE. Après validation de sa proposition, la date de sortie de Java 9 a donc été repoussée au 23 mars 2017, avec donc un décalage dans le reste du calendrier.

Dans la nouvelle feuille de route qui a été adoptée, le développement du JDK 9 devait franchir une nouvelle phase le 1er septembre 2016 : le Rampdown Phase 1. D’après Oracle, cette étape permet d’appliquer « des niveaux de contrôles croissants » aux changements entrant dans la nouvelle version du JDK afin de corriger les bogues de priorité P1-P3. Le 31 août, Mark Reinhold a donc envoyé un email à la liste de diffusion OpenJDK pour donner ses objectifs pour cette nouvelle étape qui devait commencer le lendemain. Il a ensuite donné un délai d’une semaine (jusqu’au 7 septembre, 15 heures UTC) aux « committers » de Java 9 pour donner leurs avis au sujet de sa proposition sur la manière dont doit se dérouler le Rampdown Phase 1, en précisant que s’il n’y avait aucune objection sérieuse, le processus serait adopté.

En réponse à la proposition, Stephen Colebourne, développeur open source et architecte Java, a fait remarquer que les fonctionnalités majeures du JDK 9 n’ont pas encore été toutes finalisées, alors que la dernière feuille de route suggérait qu’elles devraient l’être le 26 mai 2016, soit plus de trois mois de retard. Pour lui, il n’est donc pas réaliste de vouloir passer à la phase 1 du Rampdown alors que le projet Jigsaw est encore très débattu et loin d’être finalisé.

« Étant donné que la fonctionnalité majeure de JDK 9 (modules/jigsaw) a encore des problèmes majeurs non résolus en suspens et que le calendrier suggère encore que les fonctionnalités auraient dû être finalisées il y a plus de trois mois (26 mai 2016), le calendrier sur lequel cet email est basé est clairement profondément vicié », avait-il répondu, en faisant référence à l’email de Mark Reinhold. Et d’ajouter : « Je suis également très mal à l'aise avec l'idée que les modules - une fonctionnalité complexe, difficile et encore très débattue - sont encore loin d'être finalisés, et pourtant sur le point d'être précipités pour répondre à un calendrier artificiel. »

Après la réponse de Stephen Colebourne, Mark Reinhold a jugé bon de ne pas précipiter la sortie du JDK 9 alors qu’il reste encore beaucoup de boulot, quand bien même d’énormes progrès auraient été faits après que la date de sortie initiale a été reportée.

« Quatre-vingt cinq JEP sont ciblés sur JDK 9. La plupart sont faits, ou presque. Nous ne sommes pas, malheureusement, où nous devons être par rapport au calendrier actuel », a-t-il dit dans un nouvel email envoyé à la liste de diffusion OpenJDK. Pour rappel, un JEP (JDK Enhancement Proposal) est un processus élaboré par Oracle pour recueillir des propositions d'améliorations pour le JDK et OpenJDK.

« Nous avons fait beaucoup de progrès sur le projet Jigsaw, l’élément clé de cette version, au cours des huit derniers mois. [...] Malgré ces progrès, à ce stade, il est clair que Jigsaw a besoin de plus de temps. Nous avons récemment reçu des commentaires critiques qui ont motivé une refonte de la fonctionnalité package-export du système de module, sans laquelle nous ne pourrions pas atteindre l'un de nos principaux objectifs. Il existe, en plus de cela, de nombreux problèmes de conception non encore résolus, qui nécessitent du temps pour y travailler », explique Reinhold qui ajoute encore que le nombre de bogues ouverts qui sont nouveaux dans le JDK 9 est également plus important que celui dans le JDK 8.

Pour ces raisons, l’architecte en chef de la plateforme Java chez Oracle propose que le calendrier du JDK 9 soit prolongé de quatre mois, ce qui fera passer la date de disponibilité générale du 23 mars au mois de juillet 2017. Il compte faire une proposition plus détaillée avec la date de sortie exacte et les dates correspondant aux autres jalons au cours des semaines à venir. Mais pour l'instant, Mark Reinhold suggère de reporter le début du processus de Rampdown et de continuer avec la finalisation des fonctionnalités déjà adoptées. « Notre objectif principal devrait être d'utiliser ce temps supplémentaire pour stabiliser, polir, et affiner les fonctionnalités que nous avons déjà plutôt que d'en ajouter des nouvelles », a-t-il rappelé, en précisant que des améliorations mineures et des propositions fortement justifiées seront toutefois prises en considération, tant qu’il n’y a pas de risque pour l’ensemble du JDK 9.

Cette nouvelle proposition de changement de calendrier devrait être validée par les committers du JDK 9. Elle sera adoptée si aucune objection n’est faite jusqu’au 20 septembre, 16 heures UTC.

Mise à jour le 19 / 10 / 2016 - JDK 9 : la nouvelle date de sortie est fixée au 27 juillet 2017, après acceptation de la demande de report de Mark Reinhold

Aucune objection n’ayant été enregistrée, la proposition de report de Mark Reinhold vient d’être acceptée. La sortie de Java 9 est donc prévue pour le 27 juillet 2017. Ce qu’il faut décider à présent, ce sont les dates qui seront retenues pour les étapes intermédiaires. Mark Reinhold a donc proposé un nouveau calendrier, avec plus de détails, ce qu’il n’avait pas encore fait lors de sa dernière proposition. Le calendrier proposé est le suivant :

  • 26/05/2016 - Feature Complete : toutes les fonctionnalités ont été implémentées et intégrées dans le master forest (où réside le code source officiel), avec les tests unitaires ;

  • 22/12/2016 - Feature Extension Complete : date à laquelle les JEP et petites améliorations qui ont reçu un délai supplémentaire doivent être implémentées et intégrées dans le master forest ;

  • 05/01/2017 - Rampdown Start : les Rampdown sont des étapes qui permettent d’appliquer « des niveaux de contrôles croissants » aux changements entrant dans la nouvelle version du JDK. Cette première phase de Rampdown vise à corriger les bogues de priorité P1-P3 ;

  • 2017/02/09 - All Tests Run : tous les tests prévus ont été exécutés, au moins une fois, sur toutes les plateformes supportées ;

  • 16/02/2017 - Zero Bug Bounce : le carnet de bug est complètement pris en compte. Aucun des bugs qui doivent être encore corrigés avant la disponibilité générale de la version ne date de plus de 24 heures, les autres bugs sont reportés à une prochaine version ;

  • 16/03/2017 - Rampdown Phase 2 : à cette deuxième Rampdown, seuls les bugs bloquants peuvent être corrigés ;

  • 06/07/2017 - Final Release Candidate : la date à laquelle la dernière RC doit être proposée et soumise aux tests. Une ou plusieurs RC seront proposées après le Zero Bug Bounce ;

  • 27/07/2017 - General Availability : la version finale, prête pour l'utilisation en production.

Sources : OpenJDK mailing list (proposition de report de la date de sortie), OpenJDK mailing list (nouveau calendrier)

Et vous ?

Qu’en pensez-vous ?

Voir aussi :

Java : Oracle va marquer l'API Applet obsolète dans le JDK 9, mais n'a pas l'intention de la supprimer de sitôt
Sans surprise, Oracle va repousser la date de sortie de Java EE 8, mais envisage de livrer une édition de Java SE chaque année
La date de sortie de JDK 9 sera-t-elle reportée à 2017 ? Reinhold demande un délai supplémentaire de six mois pour finaliser Jigsaw.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Matthieu Vergne Matthieu Vergne - Expert confirmé https://www.developpez.com
le 14/09/2016 à 14:06
Qu'ils prennent le temps qu'il faut. Mieux vaut que ce soit bien fait plutôt que vite fait.
Avatar de Traroth2 Traroth2 - Membre chevronné https://www.developpez.com
le 14/09/2016 à 16:59
Je ne vois vraiment pas comment ça pourrait être "vite fait". C'était une fonctionnalité de Java 7, à la base. Version qui était elle-même déjà très en retard. Un truc qui n'a pas loin de 10 ans de retard n'est certainement pas "vite fait" !

De par mon expérience, des glissements successifs dans les délais, ça n'est pas bon signe. Je l'ai déjà dit, je suis inquiet du résultat.
Avatar de Matthieu Vergne Matthieu Vergne - Expert confirmé https://www.developpez.com
le 14/09/2016 à 18:04
Vu que je participe à un projet où on sait qu'il y a des changements de fonds à faire pour améliorer les choses mais qu'on a choisi d'autres priorités parce que pour l'instant on n'a pas de base solide pour le faire ni d'idée fiable de l'impact que ça aura sur le reste de l'architecture, je comprends tout à fait que certaines améliorations prennent des années à voir le jour.

Rien ne sert de courir, il faut partir à point, disait la chanson.
Avatar de Traroth2 Traroth2 - Membre chevronné https://www.developpez.com
le 05/10/2016 à 17:08
Je ne veux rien préjuger de ton projet, mais là, il s'agit de la plateforme la plus répandue du monde informatique. J'ose espérer que c'est une priorité pour Oracle. Dans le cas contraire, ça serait une mauvaise nouvelle, très clairement ! Et effectivement, il y a un certain nombre d'indicateurs qui semblent montrer qu'Oracle se détourne de Java, d'après un autre thread de discussion
Avatar de Matthieu Vergne Matthieu Vergne - Expert confirmé https://www.developpez.com
le 05/10/2016 à 18:17
Sauf que c'est à Oracle de décider de ses priorités. Pas à nous. Oracle n'est pas un service public français. S'il compte délaisser Java, qu'il le fasse, d'autres ont déjà un pied dedans, comme OpenJDK, donc je ne doute pas que même si Oracle décide de ne plus s'en occuper, d'autres poursuivront.
Avatar de Cyäegha Cyäegha - Membre régulier https://www.developpez.com
le 19/10/2016 à 9:55
Concernant le projet OpenJDK, ce n'est pas (en l'état) une alternative à Oracle : OpenJDK est simplement la partie open source du JDK Oracle, et la majorité des contributions au code proviennent d'employés d'Oracle. Et au delà du JDK, il y a aussi les processus de standardisation du langage Java (JCP...) qui dépendent largement d'Oracle.

Après, effectivement, il est possible de créer une alternative en forkant le code d'OpenJDK (et j’imagine que des boîtes comme IBM ou RedHat y penserait très sérieusement si Oracle venait à clairement s'en désintéresser), mais ça serait quand même une nouvelle organisation à mettre sur pied. Et si oracle ne lâchait pas la main sur les procédures et les marques commerciales, on se retrouverait avec deux plateformes divergentes (la plateforme Java "officielle" d'Oracle, et la nouvelle qui devrait se trouver un nouveau nom).
Avatar de Traroth2 Traroth2 - Membre chevronné https://www.developpez.com
le 19/10/2016 à 12:02
Citation Envoyé par Matthieu Vergne Voir le message
Sauf que c'est à Oracle de décider de ses priorités. Pas à nous. Oracle n'est pas un service public français.
Je ne vois pas où j'ai pu dire le contraire. Mais n'étant pas actionnaire d'Oracle, je continue à dire que ça serait une catastrophe.

Citation Envoyé par Matthieu Vergne Voir le message
S'il compte délaisser Java, qu'il le fasse, d'autres ont déjà un pied dedans, comme OpenJDK, donc je ne doute pas que même si Oracle décide de ne plus s'en occuper, d'autres poursuivront.
Impossible sans au moins l'autorisation d'Oracle, si ce n'est sa bienveillance. Les brevets sur la technologie, les marques déposées, les TCK propriétaires... OpenJDK n'est qu'une implémentation, c'est Oracle qui a la mainmise sur les spécifications, plus même que Sun en son temps (rappelons-nous la reprise en main musclée du JCP après le rachat). Si Oracle transmettait le bébé à une fondation, ça serait sans doute la meilleure chose qui pourrait arriver. Mais si Oracle arrêtait simplement la technologie, ou même seulement la délaissait pour faire autre chose, ça serait un désastre, parce que NON, personne ne pourrait reprendre le flambeau, contrairement à ce que tu dis. Il faut se souvenir de l'arrêt de toutes les implémentations open-source indépendantes après le rachat de Sun par Oracle, en commençant par Apache Harmony.
Avatar de gros_bidule gros_bidule - Membre du Club https://www.developpez.com
le 19/10/2016 à 18:31
L'arrêt d'Harmony vient d'un caca nerveux de certains décideurs de chez Apache. Pour faire court (et avec des approximations), il existe un kit de certification de la JVM, mais payant. Jusque là Apache en bénéficiait gratuitement. Monsieur Oracle a changé la donne, Apache n'a pas été d'accord et a mis un terme au projet Harmony.
C'est dommage, car Harmony aurait pu continuer d'exister, il lui aurait juste été interdit de prétendre au titre d'implémentation compatible de la JVM.
Des volontaires ont-ils pris le relais ? Non, c'est mort et enterré.

Le risque avec Java, c'est qu'il soit abandonné car non rentable pour Oracle, puis - soyons fous -, donné à la communauté (on va dire Apache, vu qu'Oracle lui a déjà refourgué NetBeans).
Vous pensez vraiment qu'une communauté de volontaires serait capable de faire vivre un tel projet ?
La plupart des grands projets OpenSource sont animés par des entreprises. Eclipse : ce sont des gars d'IBM qui font de gros du boulot. NetBeans : c'était des gars de chez Oracle. Tomcat : des gars de chez Spring (enfin.. Pivolat, je m'y perds avec les rachats, et ça a peut être changé depuis).
Les projets OpenSource maintenus par des barbus le soir sur leur temps libre, ça se compte que les doigts d'une main.

Si demain Java venait à vaciller, les alternatives jeunes, dynamiques et modernes pourraient finir de l'achever : NodeJS, Go (tous deux sont des merveilles pour dev des API), ...
Avatar de tchize_ tchize_ - Expert éminent sénior https://www.developpez.com
le 20/10/2016 à 0:12
Citation Envoyé par gros_bidule Voir le message
L'arrêt d'Harmony vient d'un caca nerveux de certains décideurs de chez Apache. Pour faire court (et avec des approximations), il existe un kit de certification de la JVM, mais payant. Jusque là Apache en bénéficiait gratuitement. Monsieur Oracle a changé la donne, Apache n'a pas été d'accord et a mis un terme au projet Harmony.
Non, le problème avec Harmony date de Sun et de l'impossibilité d'obtenir le kit de validation en étant compatible avec les licences de l'ASF. Oracle s'est contenté de confirmer que ça ne changerais pas. Pour faire simple: <<ok pour valider ta jvm et lui donne le logo "java compatible" mais alors, interdiction de la distribuer sur mobile sans royalties>>. Tout le fond du problème d'android d'ailleurs qui dérive d'Hamony mais qui lui n'a jamais mis le l'estampille "java certified", ce qui emmerde bien Oracle . Tout ça combiné avec le fait qu'IBM s'est retiré du projet pour supporter l'openJDK officiel, ça a fini d'enterrer le projet.
Avatar de steel-finger steel-finger - Membre habitué https://www.developpez.com
le 20/10/2016 à 15:18
Avec tout les problèmes qu'il y a eu avec Oracle nous avons décidé en interne de ne plus utilisé du Java dans les projets.
Nous avons migré pas mal de chose sous Go & Nodejs qui sont une bonne alternative, malgré que pour le coté mobile on développe des app hybrid mais personnellement j'aurai préféré gardé Java de ce coté la
Avatar de Mickael_Istria Mickael_Istria - Membre chevronné https://www.developpez.com
le 20/10/2016 à 15:19
Vous pensez vraiment qu'une communauté de volontaires serait capable de faire vivre un tel projet ?
OpenJDK marche bien, et pourrait certainement continuer sans Oracle.
Quant a Eclipse, certes IBM contribue beaucoup, mais ils sont loin d'etre majoritaires: https://eclipse.biterg.io . De la meme maniere, Eclipse arriverait a continuer sans IBM.

Si demain Java venait à vaciller, les alternatives jeunes, dynamiques et modernes pourraient finir de l'achever : NodeJS, Go (tous deux sont des merveilles pour dev des API), ...
Si tu parles d'API web, un JEE recent avec Jax-Rs et les annotations, c'est plus productif que NodeJS dans pas mal de cas. En plus, avec la mode des Wildfly Swarm et compagnie, il n'y a plus vraiment de concept de serveur donc tu te retrouves au meme grain que node.js.

J'ai l'impression que ta perception de l'ecosysteme est un peu lointaine de certaines realites (qui ont ete vraies il y a 5 ou 10 ans, mais le monde a evolue depuis).
Avatar de granpageek granpageek - Candidat au Club https://www.developpez.com
le 28/10/2016 à 9:41
Bonjour à tous,

Je pense qu'il y a une petite erreur dans l'article :

"pour être livré le 23 mars 2017, comme c’était prévu" .... qui est suivi par "la date de sortie de Java 9 a donc été repoussée au 23 mars 2017".

;-)
Avatar de Michael Guilloux Michael Guilloux - Chroniqueur Actualités https://www.developpez.com
le 28/10/2016 à 14:35
Le JDK 9 va supporter la compilation anticipée (AOT)
en commençant par les systèmes Linux 64-bit exécutant Java 64-bit

Java 9 sera livré avec le support de la compilation anticipée (ou compilation AOT). La compilation anticipée est une compilation qui traduit un langage évolué en langage machine avant l'exécution d'un programme. Elle s’oppose à la compilation à la volée (JIT) qui se fait lors de l'exécution du programme. La compilation AOT va donc permettre de compiler les classes Java en code natif avant de lancer la machine virtuelle.

Si les compilateurs à la volée (JIT) sont rapides, la compilation AOT vise à résoudre certains problèmes comme le fait que le temps de « warm up » du JIT peut être beaucoup plus long pour les grandes applications. « Il est également possible que des méthodes Java rarement utilisées ne soient jamais compilées du tout, ce qui peut potentiellement affecter les performances en raison d'invocations interprétées de façon répétée », a expliqué Vladimir Kozlov dans une proposition d’amélioration pour le JDK (JEP).

Cette proposition d’amélioration visant à apporter la compilation AOT a été acceptée dans le projet OpenJDK et sera implémentée dans la prochaine version du JDK, attendue en juillet 2017. Les objectifs sont d’améliorer le temps de démarrage à la fois des petites et grandes applications Java, avec au plus un impact limité sur les performances, tout en changeant le flux de travail de l'utilisateur final aussi peu que possible.

Dans le JEP 295, il est précisé que « pour la version initiale [de la compilation AOT], le seul module pris en charge est java.base. Ceci est fait pour limiter le périmètre de problèmes, puisque le code Java dans java.base est bien connu à l'avance et peut être soigneusement testé en interne. La compilation AOT de tout autre module JDK, ou du code utilisateur, est expérimentale. » La compilation AOT sera faite par un nouvel outil baptisé jaotc, un compilateur java statique qui produit du code natif pour les méthodes java compilées.

« Pour utiliser le module java.base AOT, l'utilisateur devra compiler le module et copier la bibliothèque AOT résultante dans le répertoire d'installation de JDK, ou le spécifier sur la ligne de commande java. L'utilisation du code AOT-compilé est par ailleurs totalement transparente pour les utilisateurs finaux », est-il également indiqué dans le JEP.

Étant donné qu’il s’agit d’un début d’implémentation, il faut aussi noter que la compilation AOT dans le JDK 9 aura certaines limitations à prendre en compte :

  • la version initiale de la compilation AOT dans le JDK 9 n'est prise en charge que sur des systèmes Linux 64 bits exécutant Java 64 bits ;
  • le système doit avoir installé libelf pour permettre la génération de bibliothèques AOT partagées (.so) à la suite de la compilation AOT ;
  • la compilation AOT doit être exécutée sur le même système ou sur un système avec la même configuration que celui sur lequel le code AOT sera utilisé par l'application Java ;
  • pour la version initiale dans le JDK 9, le seul module pris en charge pour la compilation AOT sera java.base ;
  • seuls G1 et Parallel GC sont pris en charge pour le moment ;
  • il peut ne pas être possible de compiler le code Java qui utilise des classes générées dynamiquement et du bytecode (expressions lambda, invoke dynamic) ;
  • la même configuration de runtime Java doit être utilisée lors de la compilation AOT et de l'exécution. Par exemple, l'outil jaotc doit être exécuté avec Parallel GC si une application va également utiliser Parallel GC avec le code AOT.

Ces différentes limitations seront progressivement traitées dans les versions suivantes du JDK.

Source : OpenJDK

Et vous ?

Que pensez-vous de la prise en charge de la compilation AOT dans le JDK ?

Voir aussi :

JDK 9 : la nouvelle date de sortie est fixée au 27 juillet 2017, après acceptation de la demande de report de Mark Reinhold
JavaOne 2016 : Oracle veut moderniser Java EE 8 pour le cloud et repousse sa sortie à fin 2017, Java EE 9 devrait être disponible un an plus tard
NetBeans en voie de devenir un projet de la fondation Apache, le projet vient d'être accepté dans Apache Incubator
Avatar de gros_bidule gros_bidule - Membre du Club https://www.developpez.com
le 28/10/2016 à 18:13
Je ne sais pas, au début de la news ça avait l'air sympa ; avant de lire les 36 conditions.
Ils feraient mieux d'inclure moins de features dans les futurs JDK, ça permettrait de raccourcir le cycle de sorties du JDK. Là, il faut attendre beaucoup trop longtemps avant d'avoir des features qu'on a depuis des lustres sur d'autres plateformes de dev. Et ne parlons pas de la lenteur à laquelle les entreprises migrent d'un JDK à un autre (le JDK7 c'est encore tout nouveau pour certaines). Des cycles plus courts leur forceraient peut être la main.
Avatar de derderder derderder - Membre averti https://www.developpez.com
le 28/10/2016 à 19:41
Plutôt que de tout refaire from scratch, il ferait mieux de réutiliser le code de ART ( Android Runtime, le précompilateur java d'Android) qui marche et est largement testé et utilisé, plutôt que de se lancer dans leur propre implémentation infaisable à faire dans les délais de sortie du JDK...
Avatar de Songbird_ Songbird_ - Rédacteur/Modérateur https://www.developpez.com
le 28/10/2016 à 22:11
la compilation AOT doit être exécutée sur le même système ou sur un système avec la même configuration que celui sur lequel le code AOT sera utilisé par l'application Java
Je ne vois plus tellement l'intérêt d'utiliser Java, dans ce cas.
Offres d'emploi IT
Ingénieur statisticien H/F
Safran - Ile de France - Moissy-Cramayel (77550)
Ingénieur conception électrique / électronique H/F
Safran - Ile de France - Villaroche
Responsable de lot vérification et qualification (IVVQ) H/F
Safran - Alsace - MASSY Hussenot

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil