Java est l’un des rares langages dont l’histoire traverse plusieurs grandes transformations de l’informatique : l’électronique grand public, l’essor du Web, les applications d’entreprise, l’open source, les smartphones puis le cloud.
Lorsqu’il est présenté au public en 1995, sa promesse tient dans un slogan devenu célèbre : « Write Once, Run Anywhere », écrire une fois, exécuter partout. Java donne une forme concrète à cette ambition grâce à une combinaison durable : un langage relativement accessible, du bytecode, une machine virtuelle Java (JVM), une gestion automatique de la mémoire et une bibliothèque commune.
Pourtant, Java n’a pas été conçu pour le Web. Son histoire commence quelques années plus tôt dans un projet consacré aux futurs appareils électroniques.
1991 : le projet Green
Au début des années 1990, Sun Microsystems est surtout connu pour ses stations de travail Unix et l’informatique en réseau. Certains de ses ingénieurs pensent cependant que la prochaine vague concernera aussi des appareils intelligents : téléviseurs interactifs, décodeurs et équipements domestiques.
En 1991, Sun lance le Green Project. Parmi ses membres figure James Gosling, qui jouera un rôle central dans la conception du nouveau langage.
Le problème est clair : ces appareils peuvent utiliser des processeurs et environnements très différents. Maintenir une version du logiciel pour chaque architecture serait coûteux et fragile. La portabilité devient donc une contrainte de conception dès l’origine.
Oak : Java avant Java
Gosling expérimente d’abord avec C et C++. C++ offre de puissantes abstractions et un contrôle précis des ressources, mais l’équipe cherche un environnement plus simple à déployer sur du matériel hétérogène.
Gosling conçoit alors Oak, nommé d’après un chêne visible depuis son bureau. Le langage conserve une syntaxe familière aux programmeurs C et C++, tout en écartant plusieurs mécanismes difficiles à maîtriser. La mémoire est récupérée automatiquement par un garbage collector et l’arithmétique explicite sur les pointeurs disparaît.
L’objectif n’est donc pas seulement d’exécuter le même logiciel ailleurs : il s’agit aussi de rendre les programmes complexes plus sûrs et plus prévisibles.
Bytecode et JVM : déplacer le problème de la portabilité
La décision architecturale essentielle de Java concerne son modèle d’exécution. Le code source n’est généralement pas compilé directement pour un processeur précis. Le compilateur produit un format intermédiaire, le bytecode Java, ensuite exécuté par une Java Virtual Machine.
Si une plateforme dispose d’une JVM compatible, elle peut en principe exécuter le même bytecode. Au lieu d’adapter chaque application à chaque machine, on adapte la JVM aux différentes plateformes.
C’est le fondement du Write Once, Run Anywhere. La portabilité parfaite dépend toujours des bibliothèques, de l’intégration au système et des implémentations, mais cette architecture réduit fortement le travail spécifique à chaque plateforme.
Du projet Green au Web
Le projet Green ne connaît pas le succès commercial espéré dans la télévision interactive. Au même moment, le World Wide Web prend son essor. Sun comprend qu’un langage conçu pour des appareils hétérogènes peut aussi être pertinent sur un réseau reliant des ordinateurs très différents.
Oak doit être renommé pour des raisons de marque : le nom Java est retenu. En 1995, Sun présente officiellement le langage.
Sun développe également HotJava, un navigateur capable d’exécuter de petits programmes Java intégrés aux pages Web : les applets. Animations, interfaces et petits jeux donnent alors l’impression d’un Web beaucoup plus dynamique. Netscape ajoute rapidement la prise en charge de Java et offre au langage une visibilité considérable.
Cette vitrine sera pourtant temporaire.
Java n’est pas JavaScript
La proximité des noms entretient encore une confusion : Java et JavaScript sont deux langages différents.
JavaScript est créé en 1995 par Brendan Eich chez Netscape comme langage de script léger pour le navigateur. Son évolution est détaillée dans notre article sur l’histoire de JavaScript.
Java s’imposera surtout dans les applications, les serveurs et les systèmes d’entreprise. JavaScript deviendra le langage natif du navigateur avant de s’étendre à son tour aux serveurs et à de nombreux autres environnements.
Java 1.0 : une plateforme, pas seulement un langage
En janvier 1996, Sun publie le Java Development Kit 1.0. Java comprend déjà davantage qu’une syntaxe : langage, compilateur, JVM, bibliothèque standard, outils de développement, sécurité et chargement dynamique des classes forment une plateforme cohérente.
Les développeurs disposent d’API communes pour les collections, les entrées-sorties, le réseau, les interfaces graphiques ou la concurrence. Cette base partagée deviendra aussi importante que le langage lui-même.
Java adopte largement les principes de la programmation orientée objet : classes, objets, encapsulation, héritage et polymorphisme. Par rapport à C++, il automatise davantage la gestion de la mémoire et évite plusieurs opérations bas niveau. Ces choix favorisent la maintenance de grandes applications sur de longues périodes.
Java 2 et l’installation dans l’entreprise
Java 1.2, publié en 1998 sous l’appellation Java 2, structure la plateforme en plusieurs éditions : J2SE pour les usages généraux, J2EE pour les applications d’entreprise et J2ME pour les appareils aux ressources limitées.
J2EE joue un rôle majeur. Servlets, JavaServer Pages, Enterprise JavaBeans, accès aux bases de données, messagerie et serveurs d’applications fournissent un environnement standardisé pour de grands systèmes distribués.
Java devient courant dans les banques, assurances, télécommunications, administrations et grandes entreprises. Sa portabilité, son typage statique, le garbage collector, la maturité de la JVM et l’abondance des bibliothèques répondent bien aux organisations qui doivent maintenir des logiciels pendant dix ou vingt ans.
La JVM devient performante
Les premières JVM ont la réputation d’être lentes. Cette faiblesse s’atténue avec les compilateurs JIT (Just-In-Time), qui identifient les portions de code fréquemment exécutées et les compilent en instructions machine optimisées pendant l’exécution.
La JVM peut ainsi observer le comportement réel du programme et optimiser les chemins effectivement utilisés. HotSpot, acquis puis intégré par Sun, devient une technologie centrale de la plateforme.
Java passe progressivement du statut de langage jugé trop lent à celui de plateforme capable de faire fonctionner de très grands systèmes serveur.
Pourquoi les applets disparaissent
Pendant que Java prospère sur les serveurs, les applets déclinent. Elles nécessitent un plugin ou une installation Java locale, posent des problèmes de sécurité et de déploiement et peuvent être lentes à démarrer.
Dans le même temps, HTML, CSS, JavaScript et les API Web deviennent suffisamment puissants pour créer des interfaces riches sans plugin. Les navigateurs abandonnent finalement ces technologies historiques.
La disparition des applets ne signifie donc pas la disparition de Java : le langage a déjà trouvé des usages bien plus durables côté serveur et dans l’entreprise.
Java 5 : moderniser sans casser
En 2004, Java 5 introduit notamment les generics, annotations, énumérations, autoboxing et boucles for améliorées.
Les generics renforcent la sécurité de type des collections. Les annotations deviennent essentielles pour les frameworks qui associent des métadonnées aux classes, méthodes et champs.
Cette version illustre un défi qui accompagnera désormais Java : évoluer suffisamment pour rester moderne sans sacrifier la compatibilité qui fait sa force.
L’écosystème devient aussi important que le langage
Une grande partie de l’histoire de Java se déroule en dehors de sa syntaxe. Apache Tomcat, Hibernate et surtout Spring transforment la construction des applications serveur. Spring popularise notamment l’injection de dépendances, puis Spring Boot simplifie la création d’applications autonomes et de services Web.
Les outils de build comme Maven et Gradle, les bibliothèques de test et les IDE tels qu’Eclipse, IntelliJ IDEA ou NetBeans permettent de travailler sur de très grandes bases de code. Cet outillage industriel contribue fortement à la longévité de Java.
OpenJDK et la fin d’un Java dépendant d’un seul acteur
En 2006, Sun annonce l’ouverture d’une grande partie de Java. OpenJDK devient l’implémentation open source de référence de la plateforme.
Lorsque Oracle rachète Sun en 2010, Java change de propriétaire institutionnel, ce qui suscite des débats sur les licences et la gouvernance. Mais OpenJDK prend progressivement une place centrale.
Oracle, Red Hat, IBM, Amazon, Microsoft et d’autres acteurs contribuent aujourd’hui à l’écosystème ou proposent leurs propres distributions. Java devient ainsi une infrastructure collective beaucoup moins dépendante d’une seule distribution commerciale.
Android : une autre vie pour Java
Les premières générations du SDK Android utilisent Java comme principal langage de développement. Android n’exécute toutefois pas simplement les applications dans une JVM Java SE classique : Google développe sa propre pile, d’abord Dalvik puis ART.
Cette différence et l’utilisation des API Java alimentent un long conflit juridique entre Oracle et Google. Java reste néanmoins pendant des années le langage emblématique du développement Android.
Kotlin sera ensuite officiellement soutenu puis privilégié pour de nombreux nouveaux projets, mais une quantité considérable de code Java demeure dans l’écosystème Android.
Java 8 : lambdas et streams
En 2014, Java 8 marque l’une des évolutions modernes les plus importantes. Les expressions lambda permettent d’exprimer des comportements plus succinctement et l’API Stream propose un modèle déclaratif pour filtrer, transformer et agréger des données.
Java intègre ainsi davantage d’idées de programmation fonctionnelle sans abandonner ses fondations orientées objet. Cette version restera extrêmement répandue pendant de nombreuses années.
La JVM devient une plateforme multilangage
La JVM n’est plus réservée à Java. Scala combine programmation objet et fonctionnelle, Clojure apporte une approche inspirée de Lisp, Groovy un langage dynamique et Kotlin une syntaxe moderne avec une forte interopérabilité Java.
Cette diversité montre que l’une des réussites les plus durables de Java est peut-être sa machine virtuelle elle-même. Un développeur peut bénéficier du garbage collector, du JIT, des outils de diagnostic et de l’écosystème JVM sans écrire directement du Java.
Java moderne : évolutions régulières et virtual threads
À partir de 2017, Java adopte un rythme de publication plus régulier. Les versions modernes introduisent notamment les modules, var, les records, les text blocks, le pattern matching, les sealed classes et les virtual threads.
Ces derniers, issus du projet Loom, permettent de gérer un très grand nombre de tâches concurrentes légères avec un modèle de programmation familier. Ils sont particulièrement adaptés aux services qui attendent souvent des opérations réseau, des bases de données ou d’autres entrées-sorties.
Cette évolution résume bien la stratégie moderne de Java : réduire certaines lourdeurs et adapter la JVM aux nouveaux usages tout en préservant autant que possible les applications existantes.
Pourquoi Java reste important
Java occupe un compromis particulier entre performances, portabilité, sécurité d’exécution, productivité et stabilité à grande échelle. Python privilégie davantage la concision et la rapidité de développement ; JavaScript domine historiquement le navigateur ; C++ conserve un contrôle plus direct sur les ressources. Java, lui, s’est profondément installé dans les systèmes qui doivent durer.
Sa longévité repose sur plusieurs éléments : forte compatibilité, JVM mature, garbage collectors et JIT sophistiqués, vaste écosystème, outils de diagnostic solides et immense base de code existante.
Le langage reste critiqué pour sa verbosité, sa consommation mémoire ou certains coûts de démarrage. Les records, le pattern matching, de nouveaux garbage collectors, des frameworks comme Quarkus ou Micronaut et des technologies comme GraalVM répondent progressivement à ces contraintes, notamment dans le cloud et les conteneurs.
Java évolue donc plutôt par adaptation continue que par rupture.
De Oak à une infrastructure mondiale
Le projet de télévision interactive n’a pas conquis le marché. Les applets ont disparu. Sun Microsystems n’existe plus comme entreprise indépendante. Pourtant, Java demeure.
Ses fondations - portabilité, machine virtuelle, gestion automatique de la mémoire, bibliothèques communes et compatibilité - se sont révélées utiles bien au-delà de leur contexte initial.
Java est ainsi passé d’un langage imaginé pour des appareils électroniques à une plateforme d’exécution mondiale, utilisée directement par Java mais aussi par tout un ensemble de langages et d’outils construits autour de la JVM.
L’essentiel
Java naît en 1991 dans le Green Project de Sun Microsystems sous le nom Oak. Son architecture fondée sur le bytecode et la JVM vise d’abord la portabilité entre appareils hétérogènes.
Le Web lui offre sa première grande vitrine avec les applets, mais sa réussite durable se construit surtout sur les serveurs et dans les systèmes d’entreprise. Java 2, Java 5 puis Java 8 font évoluer la plateforme tandis que l’écosystème de frameworks et d’outils prend une importance croissante.
L’ouverture d’OpenJDK, la diversité des langages ciblant la JVM et les évolutions modernes comme les virtual threads ont transformé Java en une infrastructure qui dépasse largement son langage d’origine.
Questions fréquentes
Qui a créé Java ?
Java a été conçu au début des années 1990 chez Sun Microsystems. James Gosling est généralement considéré comme son principal créateur.
Comment Java s’appelait-il à l’origine ?
Le langage s’appelait d’abord Oak. Il a ensuite été renommé Java avant sa présentation publique en 1995.
Pourquoi Java est-il portable ?
Le code Java est généralement compilé en bytecode, exécuté par une JVM disponible sur différentes plateformes. Le même programme compilé peut ainsi fonctionner dans plusieurs environnements compatibles.
Java et JavaScript sont-ils liés ?
Non. Malgré leurs noms, Java et JavaScript sont deux langages différents, avec des histoires, des conceptions et des modèles d’exécution distincts.
Les applets Java existent-elles encore ?
Elles ont pratiquement disparu. Les navigateurs modernes ont abandonné les plugins nécessaires à leur exécution et les standards Web ont repris leurs principaux usages.
Qu’est-ce qu’OpenJDK ?
OpenJDK est le projet open source qui constitue l’implémentation de référence de la plateforme Java. Plusieurs entreprises et communautés y contribuent et proposent leurs propres distributions.
Quelle est la différence entre Java et la JVM ?
Java est un langage. La JVM est une machine virtuelle capable d’exécuter du bytecode. D’autres langages comme Kotlin, Scala ou Clojure peuvent également cibler la JVM.
Pourquoi Java a-t-il duré aussi longtemps ?
Sa portabilité, sa compatibilité, la maturité de la JVM, son vaste écosystème et son adoption massive dans les organisations ont créé une base particulièrement durable.