La modernisation de Java : un écosystème à la manœuvre
Introduction
En 2018, Mark Reinhold, responsable du développement de la plateforme Java chez Oracle s’exprimait sur l’avenir du célèbre langage de programmation. « [Java] a été déclaré mort à de multiples occasions, accusé d’être en mode de maintenance ou même d’être le Cobol du 21eme siècle. […] Mais peu importe, elle est toujours l’une des plateformes de développement les plus populaires au monde », déclarait-il alors.
Trois ans plus tard, l’affirmation tient toujours si l’on se réfère aux différentes études de popularité consacrées à cet aspect. Mark Reinhold expliquait également que lui et les autres stewards en charge des projets liés à Java et JDK misaient sur des ajouts incrémentaux « quand cela est nécessaire », mais sans compromettre « la clarté et la simplicité du langage ».
Pour autant, Java semble bien perdre en vitesse, et – contrairement aux déclarations du responsable – a la réputation d’apporter son lot de complexités. En 25 ans, bientôt 26, le langage de programmation a évolué, mais il doit désormais s’adapter pleinement aux architectures de microservices. Non pas qu’il n’en soit pas capable, bien au contraire.
En revanche, cela réclame plus que de petits ajustements ou plutôt une quantité importante de ces modifications mineures. La preuve en est, Oracle et la communauté ont décidé d’accélérer le rythme de publication des releases. En à peine trois ans, sept versions du langage ont vu le jour. Le premier objectif des développeurs est de simplifier Java, comme en témoigne Java 14.
Les versions 15 et 16 (officiellement disponible en mars 2021) du JDK suivent une approche similaire. Cela va bien au-delà de la dépréciation de fonctionnalités désormais désuètes ou de la simplification des classes. Le langage de programmation repose sur ces propres API, ses propres machines virtuelles, aussi. Oracle n’est plus forcément le maître à bord et doit prendre en compte les évolutions de Jakarta EE sous l’égide de la fondation Eclipse.
Et si les stewards engagés par la firme de Larry Ellison sont bien souvent à la manœuvre, ils doivent désormais guider les propositions dans un écosystème toujours plus vaste. Par exemple, la machine virtuelle Java (JVM) dessert de nombreux langages (R, Ruby, JavaScript, Kotlin, etc.) et, à l’ère de Kubernetes, les développeurs eux-mêmes doivent bien souvent composer avec plusieurs niveaux de complexité.
Les frameworks comme Spring, MicroProfile, Helidon ou encore Micronaut gagnent en importance pour simplifier ce chemin vers le cloud, mais c’est bien la manière dont les contributeurs de ces projets interprètent les capacités comme GraalVM, à la fois un compilateur et une VM polyglotte, que Java conservera sa pertinence auprès des entreprises. Dans un même temps, le changement de licence du JDK à partir de la version 11 et les questions de marques déposées pourraient freiner l’innovation.
C’est l’ensemble de ces points que nous abordons à travers les différents articles de ce guide essentiel. Enfin, nous proposons quelques conseils afin de mieux gérer les spécificités de Java en production.
1Contexte-
Schisme, désamour et diversification
La Fondation Eclipse en passe de devenir européenne
La fondation open source Eclipse souhaite poursuivre sa croissance internationale en basculant son statut juridique à Bruxelles. Lire la suite
Java : Oracle migre OpenJDK vers Git et GitHub
Alors que Git et GitHub gagnent du terrain auprès d’une majorité de développeurs, Oracle a déplacé le dépôt OpenJDK vers le système de gestion de code source Git et la plateforme d’hébergement GitHub. Lire la suite
Jakarta EE 9 : des classes renommées pour satisfaire Oracle
Introduite en décembre 2020, la version 9 de Jakarta EE est une release forcée par des impératifs légaux : Oracle conserve la marque Java. Lire la suite
Poussé vers la sortie par certains, Java n’a pas dit son dernier mot
Java semble perdre en popularité, dépassé par des langages réputés pour leur simplicité et leur efficacité. Cependant, l’écosystème créé par Sun et propulsé par Oracle évolue pour dépasser son cadre de départ. Lire la suite
2Microservices et VM-
Des transformations technologiques en cours…
GraalVM, ou l’espoir de faire passer Java à l’ère du serverless
Un an après son passage en production, GraalVM continue de faire des émules dans la communauté Java. En raison de ses capacités de compilation et d’interopérabilité, le projet est perçu comme le candidat idéal pour la modernisation de l’écosystème Java, à l’ère des microservices et du FaaS. Lire la suite
Microservices : Oracle intègre GraalVM Enterprise à Java SE Subscription
Le compilateur GraalVM Enterprise est désormais disponible dans la distribution commerciale Java SE. Il s’agit toujours et encore de proposer une solution afin d’accélérer le lancement des microservices. Lire la suite
Oracle couple un format JSON natif et JavaScript dans sa base de données
Oracle a (re) présenté les nouveautés d’Oracle 21c. Outre une fonctionnalité qui s’approche d’une blockchain, le fournisseur cloud amoncelle les capacités censées faire de son SGBD multimodèle un produit « tout-terrain ». Il faut principalement retenir l’apport d’un format JSON natif et le support de JavaScript. Lire la suite
3Écosystème(s)-
… pas seulement guidées par Oracle
Quarkus : Red Hat veut faciliter le passage des développeurs Java à l'ère du cloud natif
En mars dernier, Red Hat présentait Quarkus, un framework open source pour le développement en Java de microservices containerisés sur Kubernetes et OpenShift. Il vise à accélérer leur déploiement en exploitant les capacités de GraalVM et Hotspot, les outils de machine virtuelle de l’OpenJDK. Il est disponible en version 1.0 depuis le mois de novembre. Lire la suite
Red Hat optimise JBoss EAP pour la containerisation
L’éditeur renforce la sécurité, la containerisation et l’observabilité de JBoss EAP. Il se prépare également à adapter les nouveautés de Jakarta EE 9. Lire la suite
Java sur Azure : VMware et Microsoft lancent Azure Spring Cloud
Dans le cadre de la conférence virtuelle SpringOne, Microsoft et Pivotal/VMware ont annoncé la disponibilité générale d’Azure Spring Cloud, un service à la demande entièrement managé pour déployer, opérer et passer à l’échelle des microservices Java développés avec le framework Spring. Lire la suite
TypeScript 4.0 : des améliorations pour les développements à large échelle
Microsoft a annoncé la disponibilité générale de TypeScript 4. Le géant du cloud veut prouver que son sur-ensemble de JavaScript est taillé pour les entreprises. Lire la suite
Node.js 14, une réponse aux attentes des développeurs en entreprise
Node.js 14 est maintenant disponible avec de nouvelles fonctionnalités, visant à répondre aux demandes des développeurs qui adoptent de plus en plus l’environnement d’exécution côté serveur, pour JavaScript. Lire la suite
4Développer-
Maîtriser les spécificités de Java
Bien débuter : comment paramétrer JAVA_HOME dans Windows
Configurez JAVA_HOME et vérifiez les résultats avec les astuces suivantes. Découvrez comment une installation propre de la variable de système PATH peut bénéficier à vos environnements locaux. Lire la suite
JBoss vs Tomcat : lequel de ces deux serveurs d'applications Java choisir ?
Après plus de vingt ans d’existence, Apache Tomcat et JBoss Enterprise Application Platform (EAP) de Red Hat sont deux des serveurs d'applications les plus utilisés. Ils prennent tout deux en charge le développement et la production, mais comment choisir celui qui vous convient le mieux ? Lire la suite
Apache Camel, Mule ESB, Spring : bien choisir son framework d’intégration
Un bon framework d’intégration devrait sous-tendre toute stratégie d’application. Apache Camel, Spring Integration et Mule ESB peuvent simplifier l’intégration à l’échelle. Nous les présentons dans cet article. Lire la suite
Régler la JVM ou optimiser le code Java : quelles différences ?
Le réglage de la JVM et l’optimisation de Java semblent similaires, et tous deux visent à améliorer les performances des applications. Mais ils adoptent des approches fondamentalement différentes pour atteindre leurs objectifs. Lire la suite
Java : comment éviter la surconsommation de ressources CPU
Déterminer pourquoi une application Java s’accapare trop de ressources CPU n’est pas toujours simple. Passons en revue quelques erreurs courantes et examinons ce qui provoque ces défauts sous le capot. Lire la suite