Java est l’un des rares langages de programmation dont l’histoire se confond avec plusieurs grandes transformations de l’informatique : l’essor des appareils électroniques grand public, l’explosion du Web, la généralisation des applications d’entreprise, puis l’avènement du logiciel open source et du cloud.
Lorsqu’il apparaît au milieu des années 1990, Java semble parfaitement adapté à son époque. Son slogan, « Write Once, Run Anywhere », promet qu’un même programme pourra fonctionner sur différentes machines sans être réécrit pour chaque système. Cette idée n’est pas entièrement nouvelle, mais Java va lui donner une visibilité exceptionnelle grâce à une combinaison devenue célèbre : un langage relativement accessible, du bytecode, une machine virtuelle Java (JVM) et une vaste bibliothèque standard.
Pourtant, Java n’a pas été conçu à l’origine pour le Web. Son histoire commence quelques années plus tôt, dans un projet consacré à l’électronique grand public.
1991 : le projet Green
Au début des années 1990, Sun Microsystems est l’une des entreprises importantes du monde Unix et des stations de travail. Plusieurs ingénieurs de Sun pensent cependant que la prochaine grande vague informatique ne viendra pas seulement des ordinateurs traditionnels, mais aussi d’appareils électroniques intelligents : téléviseurs interactifs, décodeurs, assistants et équipements domestiques.
En 1991, une petite équipe lance le Green Project.
Parmi ses membres figure James Gosling, ingénieur canadien qui jouera un rôle central dans la création du langage.
L’équipe doit imaginer une plateforme capable de fonctionner sur des appareils très différents. Le matériel disponible peut changer rapidement et les processeurs ne sont pas nécessairement les mêmes d’un constructeur à l’autre. Écrire et maintenir une version spécifique du logiciel pour chaque architecture serait coûteux.
Cette contrainte va fortement influencer la conception du futur Java.
Oak : le premier nom de Java
James Gosling commence par expérimenter avec C et C++, deux langages déjà très utilisés.
C++ offre de puissantes abstractions et permet un contrôle précis des ressources, mais l’équipe Green souhaite un environnement plus simple à déployer et plus robuste face aux différences de matériel.
Gosling conçoit alors un nouveau langage.
Il le baptise Oak, en référence à un chêne visible depuis son bureau.
Oak reprend une syntaxe familière aux programmeurs issus de C et C++, tout en écartant plusieurs mécanismes considérés comme difficiles à maîtriser. La gestion de la mémoire est notamment automatisée par un garbage collector, et le langage évite l’arithmétique explicite sur les pointeurs telle qu’on la rencontre en C.
Java ne cherche donc pas seulement à être portable. Il tente également de rendre le développement de logiciels complexes plus sûr et plus prévisible.
La machine virtuelle au coeur du projet
La solution retenue pour la portabilité est essentielle à l’identité de Java.
Un programme Java n’est généralement pas compilé directement vers le langage machine d’un processeur précis. Le compilateur produit un format intermédiaire : le bytecode Java.
Ce bytecode est ensuite exécuté par une Java Virtual Machine, ou JVM.
L’idée est simple en apparence : si une plateforme dispose d’une JVM compatible, elle peut exécuter le même bytecode.
La difficulté de la portabilité est ainsi déplacée. Au lieu d’adapter chaque application à chaque machine, on adapte la JVM aux différentes plateformes.
Cette architecture contribue au fameux principe :
Write Once, Run Anywhere - écrire une fois, exécuter partout.
Dans la pratique, la portabilité parfaite a toujours dépendu des bibliothèques, des interfaces système et de la qualité des implémentations. Mais la promesse était suffisamment forte pour devenir l’un des principaux arguments de Java.
De l’électronique grand public au Web
Le projet Green ne rencontre pas immédiatement le succès commercial attendu dans la télévision interactive.
Mais au même moment, un autre phénomène prend de l’ampleur : le World Wide Web.
Sun comprend que la portabilité de Java peut être particulièrement intéressante dans un réseau composé d’ordinateurs très différents.
Oak doit cependant changer de nom, car celui-ci est déjà utilisé comme marque.
Après plusieurs propositions, le nom Java est retenu.
En 1995, Sun présente officiellement Java au public.
Le contexte est idéal : le Web fascine le grand public et les développeurs cherchent des moyens de rendre les pages plus interactives.
HotJava et les applets
Sun développe HotJava, un navigateur capable d’exécuter de petits programmes Java intégrés dans des pages Web.
Ces programmes sont appelés applets.
Pour l’époque, l’effet est spectaculaire. Une page Web n’est plus condamnée à afficher uniquement du texte et des images statiques : elle peut exécuter du code, proposer des animations, des interfaces interactives ou de petits jeux.
Netscape ajoute rapidement la prise en charge de Java à son navigateur.
Cette exposition donne au langage une visibilité immense.
Les applets deviennent l’un des symboles du Web des années 1990.
Pourtant, elles ne constitueront pas l’avenir durable de Java.
Java et JavaScript : deux histoires différentes
La proximité des noms a créé une confusion qui existe encore aujourd’hui : Java et JavaScript ne sont pas le même langage.
JavaScript est créé en 1995 par Brendan Eich chez Netscape. Son objectif est de fournir un langage de script léger directement intégré au navigateur.
Le nom « JavaScript » relève largement du contexte commercial de l’époque, alors que Java bénéficie d’une forte popularité.
Les deux langages diffèrent profondément par leur conception, leur modèle d’exécution et leurs usages historiques.
Java s’imposera surtout dans les applications, les serveurs et les systèmes d’entreprise. JavaScript deviendra le langage natif du Web côté navigateur avant de s’étendre lui aussi aux serveurs et à de nombreux autres environnements.
Java 1.0 : une plateforme, pas seulement un langage
En janvier 1996, Sun publie Java Development Kit 1.0.
Java doit déjà être compris comme davantage qu’une syntaxe.
La plateforme comprend :
le langage Java ;
le compilateur ;
la JVM ;
une bibliothèque standard ;
des outils de développement ;
des mécanismes de sécurité et de chargement dynamique des classes.
Cette vision de « plateforme Java » deviendra fondamentale.
Un développeur peut s’appuyer sur des API communes pour les collections, les entrées-sorties, le réseau, les interfaces graphiques ou la concurrence.
L’écosystème commence à se construire autour de cette base partagée.
Les programmes sont structurés autour de classes et d’objets. L’encapsulation, l’héritage et le polymorphisme occupent une place importante dans le langage et dans les API historiques.
Mais Java simplifie certains choix par rapport à C++.
Il n’autorise pas l’héritage multiple de classes, tout en proposant des interfaces. Il automatise la récupération de la mémoire inutilisée. Il supprime de nombreuses opérations bas niveau susceptibles de provoquer des erreurs difficiles à diagnostiquer.
Ces choix contribuent à son adoption dans les équipes qui doivent maintenir de grandes applications sur de longues périodes.
Java 2 et la conquête de l’entreprise
En 1998, Java 1.2 marque une étape importante. Sun utilise alors l’appellation Java 2.
La plateforme se structure progressivement en plusieurs éditions.
J2SE vise les applications générales.
J2EE cible les applications d’entreprise et les serveurs.
J2ME est destiné aux appareils disposant de ressources plus limitées, notamment les téléphones et systèmes embarqués.
J2EE joue un rôle majeur dans l’installation de Java dans les systèmes d’information.
Servlets, JavaServer Pages, Enterprise JavaBeans et de nombreuses API standardisées fournissent une base pour construire des applications serveur distribuées.
Java devient progressivement un choix courant dans les banques, assurances, administrations, télécommunications et grandes entreprises.
Pourquoi Java séduit les entreprises
Le succès de Java dans l’entreprise ne repose pas sur une seule fonctionnalité.
La portabilité facilite le déploiement sur différents systèmes.
Le typage statique permet de détecter de nombreuses erreurs avant l’exécution.
La gestion automatique de la mémoire réduit certaines catégories de bugs.
La JVM fournit un environnement d’exécution contrôlé.
Les bibliothèques et frameworks deviennent extrêmement nombreux.
Enfin, Java bénéficie d’une communauté immense et d’un marché du travail important.
Pour une organisation qui prévoit de maintenir une application pendant dix ou vingt ans, cette stabilité est un avantage considérable.
La JVM devient plus rapide
Les premières machines virtuelles Java souffrent d’une réputation de lenteur.
Exécuter du bytecode dans une machine virtuelle semble naturellement moins performant qu’un programme compilé directement en code natif.
Mais les JVM évoluent rapidement.
Les compilateurs JIT (Just-In-Time) analysent le programme pendant son exécution et compilent en code machine les portions importantes.
Cette approche offre même certaines possibilités qu’un compilateur statique ne possède pas toujours : la JVM peut observer le comportement réel du programme et optimiser en fonction des chemins effectivement utilisés.
HotSpot, la JVM acquise par Sun puis intégrée à la plateforme, devient l’une des technologies centrales de Java.
Au fil des années, les performances progressent considérablement.
Les applets déclinent
Alors que Java prospère côté serveur, son histoire dans le navigateur prend une direction opposée.
Les applets posent plusieurs problèmes.
Elles nécessitent un plugin ou un environnement Java côté utilisateur.
Les temps de chargement peuvent être importants.
Les modèles de sécurité sont complexes.
Les navigateurs et les standards du Web deviennent progressivement capables de proposer eux-mêmes des interfaces beaucoup plus riches.
JavaScript, CSS et les API Web modernes rendent de moins en moins nécessaire l’exécution d’un plugin Java dans une page.
Les principaux navigateurs finissent par abandonner les technologies de plugins historiques.
Les applets disparaissent.
Cette disparition aurait pu être interprétée comme un échec de Java. En réalité, le langage avait déjà trouvé ailleurs des marchés beaucoup plus durables.
Java 5 : le langage se modernise
En 2004, Java 5 constitue une évolution importante.
Il introduit notamment :
les generics ;
les annotations ;
les énumérations ;
l’autoboxing ;
les boucles for améliorées ;
les méthodes à nombre variable d’arguments.
Les generics permettent de mieux exprimer les types manipulés par les collections et de détecter davantage d’erreurs à la compilation.
Les annotations deviendront particulièrement importantes dans les frameworks modernes, où elles permettent d’associer des métadonnées au code.
Cette version montre que Java ne peut pas se contenter de sa popularité initiale : il doit évoluer sans perdre la compatibilité qui fait sa force.
L’écosystème des frameworks
À mesure que Java s’installe sur les serveurs, un vaste écosystème apparaît.
Des projets comme Apache Tomcat, Hibernate ou Spring transforment la façon de construire les applications.
Spring, notamment, propose une approche plus légère que certaines architectures J2EE historiques et popularise l’injection de dépendances.
Avec le temps, Spring Boot simplifie encore la création d’applications autonomes et de services Web.
Cette évolution illustre une caractéristique importante de Java : une grande partie de son histoire se déroule en dehors du langage lui-même.
Les bibliothèques, outils de build, serveurs d’applications, frameworks et IDE ont autant contribué à sa longévité que les évolutions syntaxiques.
Eclipse, IntelliJ IDEA et les outils
Java bénéficie très tôt d’environnements de développement puissants.
Eclipse, issu à l’origine de travaux d’IBM, devient un IDE open source majeur.
IntelliJ IDEA propose une analyse de code et des outils de refactoring particulièrement avancés.
NetBeans, soutenu pendant longtemps par Sun, participe également à l’écosystème.
Ces IDE permettent de naviguer dans de grandes bases de code, de restructurer les programmes et de détecter automatiquement de nombreux problèmes.
Dans les projets de grande taille, cet outillage constitue un avantage essentiel.
Sun ouvre Java
Pendant ses premières années, Java est étroitement associé à Sun Microsystems.
Mais la question de son ouverture devient progressivement importante.
En 2006, Sun annonce la publication d’une grande partie de Java sous licence libre.
Le projet OpenJDK devient l’implémentation open source de référence de la plateforme Java.
Cette décision change profondément la gouvernance et l’écosystème.
Java n’est plus seulement une technologie distribuée par une entreprise : il devient une infrastructure sur laquelle de nombreux acteurs peuvent collaborer et proposer leurs propres distributions.
Oracle rachète Sun
En 2010, Oracle finalise l’acquisition de Sun Microsystems.
Java change donc de propriétaire institutionnel.
Cette période suscite des interrogations dans la communauté, notamment autour de la gouvernance, des licences et du rythme d’évolution.
Mais OpenJDK prend progressivement une place centrale.
Des entreprises comme Oracle, Red Hat, IBM, Amazon, Microsoft et d’autres contribuent aujourd’hui à l’écosystème Java ou distribuent leurs propres builds de l’OpenJDK.
La plateforme est ainsi devenue beaucoup moins dépendante d’une seule distribution.
Android : Java dans les smartphones
L’histoire de Java croise également celle d’Android.
Les premières versions du SDK Android utilisent Java comme principal langage de développement d’applications.
Android n’exécute toutefois pas simplement les applications dans une JVM Java SE classique. Google développe sa propre pile d’exécution, d’abord autour de Dalvik puis d’ART.
Cette différence donnera lieu à un long conflit juridique entre Oracle et Google autour de l’utilisation des API Java.
Pendant des années, Java reste néanmoins le langage emblématique du développement Android.
Kotlin est ensuite officiellement soutenu puis privilégié par Google pour de nombreux nouveaux projets, mais l’immense quantité de code Java existant continue de faire partie de l’écosystème Android.
Java 8 : lambdas et streams
En 2014, Java 8 devient l’une des versions les plus importantes de l’histoire moderne du langage.
Elle introduit notamment les expressions lambda et l’API Stream.
Les lambdas permettent de traiter les comportements comme des valeurs de manière beaucoup plus concise qu’avec les classes anonymes utilisées auparavant.
Les streams proposent un modèle déclaratif pour transformer, filtrer et agréger des collections de données.
Java adopte ainsi davantage d’idées issues de la programmation fonctionnelle sans abandonner son modèle historique orienté objet.
Java 8 restera extrêmement répandu pendant de nombreuses années.
La JVM accueille d’autres langages
La JVM n’est plus depuis longtemps réservée à Java.
Plusieurs langages ont choisi de produire du bytecode compatible avec la plateforme.
Scala combine programmation orientée objet et programmation fonctionnelle.
Clojure apporte une approche inspirée de Lisp.
Kotlin, créé par JetBrains, propose une syntaxe moderne et une forte interopérabilité avec Java.
Groovy offre un langage dynamique étroitement intégré à l’écosystème.
Cette diversité révèle une évolution importante : la JVM est devenue une plateforme indépendante de son langage d’origine.
Même lorsqu’un développeur n’écrit pas directement du Java, il peut bénéficier du garbage collector, du JIT, des bibliothèques et de l’infrastructure JVM.
Un nouveau rythme de publication
Pendant longtemps, les grandes versions de Java sont espacées de plusieurs années.
À partir de 2017, le projet adopte un rythme de publication plus régulier.
Une nouvelle version fonctionnelle apparaît environ tous les six mois, tandis que certaines versions bénéficient d’un support à long terme selon les distributions.
Ce modèle permet au langage d’évoluer plus progressivement.
Parmi les améliorations modernes figurent notamment :
les modules ;
var pour l’inférence locale de type ;
les records ;
les text blocks ;
le pattern matching ;
les sealed classes ;
les virtual threads.
Java cherche ainsi à réduire certaines lourdeurs historiques tout en conservant une forte compatibilité avec les applications existantes.
Les virtual threads et la concurrence moderne
La concurrence a toujours été importante dans Java.
Les threads classiques correspondent généralement à des ressources relativement coûteuses du système d’exploitation.
Le projet Loom introduit les virtual threads, conçus pour permettre un très grand nombre de tâches concurrentes avec un modèle de programmation familier.
Cette évolution est particulièrement adaptée aux applications serveur qui passent beaucoup de temps à attendre des opérations réseau ou des entrées-sorties.
Elle montre comment Java tente de moderniser ses fondations sans imposer aux développeurs un changement complet de paradigme.
Java face à Python, JavaScript et C++
La place de Java se comprend mieux lorsqu’on la compare à celle d’autres langages.
Python privilégie une syntaxe concise et un développement rapide. Il est devenu incontournable dans l’automatisation, la science des données et l’intelligence artificielle.
JavaScript domine historiquement l’exécution de code dans les navigateurs et s’est largement étendu côté serveur.
C++ conserve un contrôle plus direct sur la mémoire et les performances, ce qui reste essentiel dans de nombreux systèmes, moteurs et logiciels temps réel.
Java occupe un espace différent : il recherche un compromis entre performances, sécurité d’exécution, portabilité, productivité et stabilité à grande échelle.
Aucun de ces langages n’est « meilleur » dans l’absolu. Ils répondent à des contraintes différentes.
Pourquoi Java reste important
Java a désormais plus de trente ans, ce qui est considérable pour une technologie informatique.
Sa longévité repose d’abord sur la compatibilité. De nombreuses applications anciennes peuvent continuer à fonctionner sur des JVM récentes avec relativement peu de changements.
Elle repose aussi sur la qualité de l’environnement d’exécution. Les JVM modernes disposent de garbage collectors sophistiqués, de compilateurs JIT avancés et d’outils de diagnostic très matures.
L’écosystème constitue un autre avantage majeur : bibliothèques, frameworks, outils de test, systèmes de build et compétences disponibles sont extrêmement nombreux.
Enfin, Java est présent dans des secteurs où les logiciels ne sont pas remplacés tous les deux ans. Les banques, administrations et grandes entreprises exploitent des systèmes qui doivent rester maintenables pendant des décennies.
Les critiques adressées à Java
Java n’a jamais été exempt de critiques.
Sa syntaxe a longtemps été jugée verbeuse.
Les applications peuvent consommer davantage de mémoire que des programmes natifs très optimisés.
Le démarrage de la JVM peut être un problème pour certains usages courts ou serverless.
L’héritage de vieilles API et la nécessité de conserver la compatibilité compliquent parfois l’évolution.
Des langages plus récents proposent aussi des systèmes de types ou des syntaxes considérés comme plus expressifs.
L’écosystème Java répond progressivement à certaines de ces critiques avec les records, le pattern matching, les améliorations de la JVM et des frameworks plus légers.
Mais sa philosophie reste généralement évolutive plutôt que révolutionnaire.
Java et le cloud
Le cloud n’a pas fait disparaître Java.
Au contraire, une grande partie des applications d’entreprise migrées vers des infrastructures cloud sont déjà écrites en Java.
Les conteneurs ont cependant modifié certaines contraintes.
Dans un environnement où des services sont fréquemment démarrés, arrêtés et redimensionnés, le temps de démarrage et la consommation mémoire deviennent plus visibles.
Des frameworks et technologies comme Quarkus, Micronaut ou la compilation native via GraalVM cherchent notamment à répondre à ces nouveaux besoins.
Java doit donc continuer à s’adapter à des environnements très différents de ceux pour lesquels il avait été conçu en 1991.
De Oak à une infrastructure mondiale
L’histoire de Java est remarquable parce que le langage a survécu à la disparition de plusieurs usages qui avaient initialement contribué à sa popularité.
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.
Il a réussi parce que 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 son contexte initial.
Java est passé d’un langage destiné à des appareils électroniques à une plateforme d’exécution mondiale.
L’essentiel
Java naît au sein du Green Project de Sun Microsystems en 1991. James Gosling conçoit d’abord Oak, un langage destiné à fonctionner sur des appareils hétérogènes.
Rebaptisé Java, le langage est présenté publiquement en 1995 et profite de l’explosion du Web grâce aux applets.
Son innovation la plus structurante n’est pourtant pas l’applet, mais la combinaison du bytecode et de la JVM, qui permet de déplacer une grande partie du problème de portabilité vers la plateforme d’exécution.
À partir de la fin des années 1990, Java s’impose surtout sur les serveurs et dans les systèmes d’entreprise.
Java 5 modernise le langage, Java 8 introduit les lambdas et les streams, tandis qu’OpenJDK transforme progressivement Java en infrastructure open source partagée.
La JVM accueille également d’autres langages comme Kotlin, Scala ou Clojure.
Aujourd’hui, Java continue d’évoluer avec un rythme de publication régulier, des améliorations du langage et de nouvelles capacités comme les virtual threads.
Son histoire illustre une leçon importante de l’informatique : une technologie ne survit pas nécessairement parce que son usage initial réussit, mais parce que ses fondations peuvent être réutilisées dans des contextes que ses créateurs n’avaient pas prévus.
Questions fréquentes
Qui a créé Java ?
Java a été principalement conçu par James Gosling avec une équipe de Sun Microsystems dans le cadre du Green Project au début des années 1990.
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. Cela permet au même programme compilé de fonctionner dans plusieurs environnements compatibles.
Java et JavaScript sont-ils liés ?
Non. Malgré leurs noms, Java et JavaScript sont deux langages différents. JavaScript a été créé par Brendan Eich chez Netscape et possède une histoire et un modèle d’exécution distincts.
Java est-il uniquement orienté objet ?
Java a été historiquement conçu autour de la programmation orientée objet, mais le langage moderne intègre également des mécanismes inspirés d’autres paradigmes, notamment les lambdas et les streams.
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 la plupart de leurs 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.
Java est-il encore utilisé ?
Oui. Java reste très présent dans les applications d’entreprise, les services backend, les systèmes financiers, les infrastructures distribuées et de nombreuses bases de code historiques.
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é, son écosystème, la maturité de la JVM et son adoption massive dans les organisations ont créé une base extrêmement durable.