Java a survécu pendant plus de deux décennies et continue d'être l'un des principaux langages de programmation utilisés aujourd'hui. Qu'est-ce qui explique le succès de ce language et comment a-t-elle évolué pour s'adapter aux technologies plus modernes?
La montée en puissance de Java
Java est apparu en 1995, à partir d'une innovation de 1991 appelée "Oak". C'était apparemment le bon moment pour les ingénieurs qui cherchaient à développer des systèmes distribués. À l'époque, certains des langages les plus populaires - le C, le C ++ et même le Cobol pour certains efforts - impliquaient des courbes d'apprentissage abruptes. Le multi-threading de Java, permettant l'exécution simultanée de deux ou plusieurs parties d'un programme, a mis fin à la lutte pour que le multitâche fonctionne.
Java est rapidement devenu le langage de facto pour les systèmes critiques. Depuis ce temps, de nouveaux langages sont apparus et disparus, mais Java est resté enraciné et difficile à remplacer. En fait, Java est pratiquement l’un des deux premiers langages informatiques depuis son apparition initiale.
C'est James Gosling de Sun Microsystems, considéré comme le "père" de Java, qui a eu l'idée du langage. Il a travaillé chez Sun jusqu'à l'acquisition de Sun par Oracle en 2010. Dans le cadre du transfert de pouvoir, Java est devenu un produit Oracle, mais il n'est pas resté statique. L'innovation continue lui a permis de rester le langage de programmation le plus populaire. De plus, la communauté Java a eu le temps d’établir des outils puissants pour l’écriture de code, la maintenance et le débogage de code.
L'attrait du bytecode et de la portabilité
Les implémentations Java utilisent généralement un processus de compilation en deux étapes. En d'autres termes, le compilateur Java transforme le code source en bytecode. Le bytecode est ensuite exécuté par la machine virtuelle Java (JVM). Les machines virtuelles utilisent aujourd'hui une technique appelée compilation JIT (Just-in-Time) pour générer des instructions natives que le processeur du système peut exécuter. Cela favorise l'approche «WORA» (écrire une seule fois, exécuter n'importe où) que Sun a adoptée lors des débuts de Java.
Pourquoi la compilation est importante
La flexibilité du bytecode offre un réel avantage pour la portabilité. Au lieu de compiler des applications pour chaque plate-forme, le même code est distribué à chaque système et la JVM en résidence le gère. Le problème survient lorsque les dispositifs de faible encombrement ne gèrent pas bien les frais d’interprétation nécessaires.
En outre, la machine Java a considérablement évolué et est beaucoup trop monolithique pour les applications à faible encombrement nécessitant une réaction rapide. En conséquence, nous voyons des sous-systèmes qui impliquent beaucoup moins de temps système, tels qu'Avian (une machine virtuelle légère avec un sous-ensemble de fonctionnalités Java) et Excelsior JET (une implémentation complète de la machine virtuelle Java améliorée avec un compilateur anticipé) qui fournit des exécutables natifs optimisés qui sacrifient la portabilité pour la performance. Les applications cloud et Internet des objets (IoT) en bénéficient.
Changement de direction
GraalVM et SubstrateVM sont d’autres innovations dans le monde Java.
GraalVM est un nouveau compilateur juste à temps pour la machine virtuelle Java et fonctionne avec d'autres langages, ainsi qu'avec Java (par exemple, JavaScript, Python et Ruby). GraalVM peut être exécuté dans le contexte d'OpenJDK pour rendre les applications Java encore plus rapides avec une nouvelle technologie de compilation juste à temps. Il inclut un nouveau compilateur Java hautes performances appelé Graal pouvant être utilisé avec HotSpot VM ou pour une configuration avancée avec SubstrateVM.
SubstrateVM améliore considérablement le temps de démarrage et permet aux applications de courte durée de fonctionner plus rapidement. C'est un framework qui permet la compilation à l'avance (AOT) d'applications Java en images exécutables ou en objets partagés (ELF-64 ou Mach-O 64 bits).
Le rôles de Red Hat
Quand Oracle a annoncé qu'il ne fournirait plus de téléchargements binaires gratuits pour les versions de JDK ni n'écrirait de correctifs de bogues pour OpenJDK après une période de six mois, les utilisateurs de Java étaient initialement concernés. Mais la transition de soutien a bien fonctionné. Red Hat prend le relais lorsque Oracle recule. Le passage du témoin semble être lisse et fiable. Lorsque Oracle cesse de fournir une assistance, Red Hat prend le relais.
Open vs propriétaire
Oracle a annoncé l'année dernière que les différences techniques entre JDK et OpenJDK disparaîtraient. Les différences entre les deux aujourd'hui sont en grande partie cosmétiques.
Java est encore libre. Des rumeurs sur sa mort imminente sont apparues il y a quelques années, mais OpenJDK n'a pas perdu son élan.