Java est un langage de programmation très populaire. Il est l'un des langages de programmation les plus utilisés dans le monde professionnel et universitaire. A cause de sa machine virtuelle JVM (Java Virtual Machine), Java peut s'exécuter sur différents systèmes d'exploitation sans modification du code source initial. Il implémente le paradigme write once, run everywhere. La plateforme Java a la particularité de proposer trois versions:
- Java SE (Java Platform, Standard Edition): qui contient les APIs de base du langage, et permet de développer des applications desktop et de faire plein de petites choses.
- Java EE (Java Platform, Enterprise Edition): qui étend Java SE pour permettre de créer des applications web et des services pour les entreprises.
- Java ME (Java Platform, Micro Edition): qui contient des APIs pour développer des applications pour les systèmes embarqués et les mobiles.
Avec ces trois versions, la plateforme Java peut résoudre presque tous les problèmes d'automatisation et de transformation numérique. Sa robustesse, son indépendance par rapport au système d'exploitation de la machine et son large éventail de librairies déjà disponibles dans la communauté font qu'il est très prisé dans le monde professionnel avec des offres d'emploi à foison et des salaires intéressants et compétitifs. Malheureusement, la prise en main du langage et son concept de base de POO (Programmation Orienté Objet) peuvent rapidement refroidir les ardeurs des nouveaux apprenants.
C'est évident que le langage est mature, solide, robuste et connaît plusieurs améliorations mineures et majeures depuis sa création dans les années 1995 par James Gosling et ses collègues au sein de la société Sun Microsystems (racheté en 2009 par Oracle).
De nos jours, la communauté Java est toujours en ébullition. Le langage évolue rapidement en incorporant de nouvelles fonctionnalités et en supprimant d'autres dépréciées. Le langage fait de plus en plus la part belle à la PF (Programmation Fonctionnelle) qui a le vent en poupe. Historiquement connu pour être un langage purement orienté objet, Java devient de plus en plus fonctionnel. Va t-il un jour délaissé complètement la POO pour la PF ? Personnellement, je ne le pense pas. C'est toujours intéressant d'avoir plusieurs paradigmes de résolution de problèmes. Bien que Java se tourne vers le fonctionnel pour sa concision et sa productivité, nombreux sont les développeurs qui continueront à utiliser l'orienté objet en dur sans faire appel à la puissance du fonctionnel pour plusieurs raisons. Au nombre desquelles, il y a la difficulté de changer sa manière de programmer (surtout lorsqu'on y est habituée depuis plus d'une dizaine d'années). Il y aussi le problème de maintenance de plusieurs applications legacy qui sont certes refactorisables en fonctionnel, mais à quel prix ? Le client a t-il envie de débourser de l'argent pour un nouveau paradigme sans un retour sur investissement tangible ? Par ailleurs, la POO n'est pas totalement en opposition à la PF. Les deux peuvent bien évidemment se côtoyer en Java. C'est même sur cet axe que Java sillonne actuellement.
Avec l'ébullition de la communauté Java, Oracle a annoncé une nouvelle cadence de la livraison des versions de Java. Il y a une nouvelle version de Java chaque 6 mois. La cadence est inspirée d'autres communautés open source dont la plus connue est Ubuntu. Pourquoi cette nouvelle cadence pour Java ? L'ancienne cadence des versions de Java était d'environ 2 ans. Malheureusement le passage de Java 7 à Java 8 a été un vrai défi et Java 8 a été livré avec 8 mois de retard environ pour régler des problèmes de sécurité. De même Java 9 a connu environ 18 mois de retard à cause de l'intégration du projet Jigswa (Java Platform Module System). Pour éviter donc ces nombreux retards répétitifs et éviter d'avoir toutes les nouveautés majeures avant la livraison d'une version, Oracle a décidé de la cadence de 6 mois: si une nouveauté est prête, elle est intégrée à la version sinon elle apparaît dans une version future. Donc chaque année, au mois de Mars et au mois de Septembre il y a aura une nouvelle version du langage. Cette nouvelle cadence n'est pas sans répercussions sur les utilisateurs de Java et sur les projets informatiques qui l'utilise.
Il y a quelques jours (le jeudi 17 Mars 2022), j'ai assisté à une rencontre de la cellule d'expertise JAVA de mon actuel employeur. Le thème de la rencontre était: JAVA 8 à JAVA 17: Nouveautés et améliorations. A la date de cette formation, Java 18 n'était pas encore disponible. Le General Availability du JDK 18 a été fait le 22 Mars passé. Les trois collègues qui ont animé cette rencontre ont présenté les modifications majeures de chaque version de Java depuis la version 8 à la version 17. Même avec environ 75 min, ils n'ont pas pu parler des nouveautés majeures parce qu'elles sont nombreuses et il faut une bonne expérience pour comprendre l'utilité de certaines. De cette rencontre, j'ai juste retenir que la communauté Java est vraiment en ébullition et pour rester actif et marketable il faut se mettre à jour.
Il y a des versions majeures LTS (Long Term Support) qui sont maintenues par Oracle au minimum pendant 3 ans. Cette maintenance peut être étendue à plusieurs autres années en fonction des besoins de la communauté. La version LTS exclue l'ajout de nouvelles fonctionnalités mais inclue le support de la stabilité, l'amélioration des performances et la fourniture des patchs de sécurité. Java 8, 11, 17 sont des versions LTS. Les nouveautés apportées par Java peuvent rapidement freiner les ardeurs des nouveaux venus dans la communauté. Même les utilisateurs expérimentés ont parfois du mal à comprendre l'utilité réelle et/ou les cas d'utilisation précis de certaines fonctionnalités. Pas sûr que toutes les nouveautés soient utilisées réellement dans des projets à déployer. Mais connaitre au minimum leur existence peut bien servir dans certains cas et alimenter des discussions entre javaistes.
La nouvelle cadence apporte une autre difficulté pour les javaistes qui veulent passer la certification. A la fin de la rencontre de la cellule d'expertise JAVA, un des présentateurs m'a confié son embarras quand au choix de la version de Java pour la certification. Voilà qu'il pense à passer la certification Java 11 que déjà Java 17 est là et à un LTS plus élevé que la version 11. Cet embarras est légitime et plusieurs javaistes sont dans le cas. Quand j'y ai pensé plus sérieusement, j'en suis venu à la conclusion que peu importe qu'on ait la certification pour la version 8, 11 ou 17 c'est presque la même chose. L'utilité d'une certification est de juger de la maîtrise du langage. Les nouveautés, il y en a et il y en aura plein dans l'avenir. Une fois qu'on a la certification pour une version LTS, il faudra juste se mettre à jour sur une version LTS supérieure pour être marketable.
En conclusion, Java est un langage qui a encore de beaux jours devant lui. Il subit une concurrence dure de la part d'autres langages qui s'exécutent sur la JVM - Scala, Kotlin, etc.- mais il continue d'être chaque année l'un des langages de programmation les plus utilisés au monde. Il est très présent surtout dans certains secteurs comme la banque et la recherche scientifique et est très prisé pour des projets volumineux en données ou complexes qui nécessitent une bonne dose d'abstraction. Sa robustesse, sa maturité, ses nombreuses librairies et sa communauté très réactive lui donne aussi une force et un bon avantage.
Aucun commentaire:
Enregistrer un commentaire