Java 9 : ce que l'on sait

Java 9 0814 Oracle travaille sur la prochaine version majeure de Java. Au programme : un environnement modulaire, plus performant, et le support de HTTP 2.0...

Le coup d'envoi des travaux autour de Java SE 9 Platform a été lancé par Oracle dès 2014. Depuis, le groupe a bien progressé. Une feuille de route précise a été dévoilée (elle est disponible sur le site du projet JDK 9), avec l'objectif d'aboutir à une version finale en 2017 (voir le tableau ci-dessous). Alors que Java 8 est disponible depuis avril 2014, Oracle entend ainsi se caler sur un rythme de lancement d'une version majeure du langage tous les deux à trois ans. Le responsable du projet chez Oracle a néanmoins indiqué que cette échéance pourrait se révéler difficile à tenir. Raison invoquée : des travaux de développement plus complexes que prévu, notamment autour de Jigsaw (voir le détail de l'apport de Jigsaw ci-dessous). Un report de quatre mois a été proposé, et accepté par les contributeurs du projet.

Les nouveautés : APIs, JShell, HTTP 2.0...

Une partie des évolutions apportées par Java 9 concerne les API. Sur ce terrain, deux interfaces toutes neuves font notamment leur apparition, l'une assurant le support de HTTP 2.0 et des web sockets (HTTP 2 Client API), la seconde une meilleure intégration des processus non-Java (Process API Updates). L'API de contrôle des processus du système a également été améliorée.

Jigsaw au programme pour plus de modularité

Mais beaucoup d'autres évolutions sont au programme de Java 9. C'est le cas d'un interpréteur boucle lecture, évaluation, impression (REPL pour Read Evaluate Print Loop), via le projet JShell (ex-Kulla). Mais aussi de Valhalla qui vise à améliorer les types Java.

Jigsaw : une infrastructure plus modulaire

Initialement prévu pour Java 8, le projet Jigsaw est aussi partie prenante de Java 9. Il introduit une infrastructure plus modulaire au cœur du langage. Associé à l'introduction d'un nouveau packageur en ligne de commande (Java Packager), il doit simplifier la création des paquetages, ainsi que le déploiement des applications et leur réutilisation, et in fine optimiser l'usage de la mémoire. Pour répondre à ce défi, Jigsaw inaugure le concept de JAR modulaire.

Java 9 est livré avec un JDK lui-même modulaire (et conçu de telle sorte qu'il évite les dépendances circulaires entre ses différents modules). Une démarche de conception assez logique dans la mesure où un logiciel Java n'a pas forcément besoin de tous les éléments du JDK pour fonctionner. Dans cette logique, Java 9 permet, aussi, de créer des JVM sur-mesure. Grâce à un nouvel outil baptisé Jlink, il permet de définir les modules du JDK nécessaires à une application. De quoi optimiser le poids de l'environnement d'exécution.

Amélioration des performances

Autre chantier d'optimisation en ligne de mire pour cette nouvelle version : l'amélioration de la gestion du cache par le compilateur JIT via la division du cache en segments (avec pour chacun un certain type de code compilé). Enfin, Java 9 va renforcer les contrôles tout en réglant les problèmes d'alertes lint et doclinten lors des compilations, améliorer le dispositif de build, prendre en charge les sorties HTML5 pour Javadoc ou encore renforcer la sécurité (avec l'implémentation de Datagram Transport Layer Security notamment).

La roadmap

Feuille de route de Java 9
26 mai 2016 Finalisation des fonctionnalités
Source : Openjdk.java.net
11 août 2016 Fin des tests
1er septembre 2016 1ère phase de pré lancement
20 octobre 2016 Finalisation du débogage
1er décembre 2016 2e phase de pré lancement
26 janvier 2017 Bêta finale
23 mars 2017 Sortie de la version finale (mais un report de 4 mois a été annoncé)

 Source sur le site du projet OpenJDK

Où en est JEE ?

Oracle a pu être critiqué sur sa manière d'orchestrer le projet open source JEE. La communauté des développeurs travaillant avec lui sur le projet a notamment pu pointer du doigt "une faible" communication de l'éditeur sur la feuille de route, voire même un désengagement d'Oracle" (dixit Ars Technica). En 2015 et jusqu'à début 2016, le groupe américain aurait cherché à créer un équivalent propriétaire de JEE. Confrontée à une levée de boucliers des partenaires, au premier rang desquels IBM et Red Hat (qui implémentent JEE dans leur serveur d'applications), la société de Larry Ellison aurait décidé de faire machine arrière.

Après un semestre de silence, Oracle affirme désormais vouloir continuer à développer JEE. La sortie de la prochaine version du framework devrait sortir fin 2017. "Oracle s'est engagé sur la technologie Java, et a une proposition précise pour la prochaine version de la spécification Java EE, Java EE 8. Elle répondra aux problématiques de création de nouvelles applications à base de microservices et d'architecture massivement distribuée et d'environnement de container en mode cloud", explique Mike Moeller, porte-parole d'Oracle. Au-delà du support des containers et le pilotage de leur orchestration, de nombreux ajouts (Rest, Json, O-Auth, Open ID Connect, Config, etc.) ont également été évoqués par l'éditeur à l'occasion de la conférence JavaOne cette semaine.  

Java en pratique : 

Oracle / Intégration