Java 9 : ce que l'on sait
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
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 :
- Comment arrondir un nombre à n décimales en Java ?
- Générer un nombre aléatoire en Java compris entre deux chiffres ?
- Quand et pourquoi utiliser l'annotation @Override en Java ?
- Comment concaténer deux tableaux de chaînes de caractères en Java ?
- Comment éviter l'erreur NullPointerException sans utiliser != null en Java ?
- Comment trier une Map par valeurs en Java ?
- Comment convertir un objet InputStream en une chaîne ?
- Que veut dire le message d'erreur Could not find or load main class ?
- Java Swing : comment ajouter une image JPEG ou PNG à un JPanel ?
- Quelles sont les différences entre HashMap et Hashtable en Java ?