Brendan Eich est associé à l’une des anecdotes les plus célèbres de l’histoire des langages : JavaScript aurait été « créé en dix jours ». La formule est exacte si elle désigne le premier prototype, assemblé chez Netscape en mai 1995. Elle devient trompeuse si elle laisse croire que le langage actuel est sorti achevé de ces dix journées. JavaScript est le résultat de trente ans de normalisation, d’implémentations concurrentes, de corrections et de compromis avec un impératif rarement négociable sur le Web : ne pas casser les pages existantes.
L’intérêt de la trajectoire d’Eich tient justement à cette tension. Il a conçu très vite un langage qui devait être simple à intégrer dans une page, tout en y mêlant des idées venues de Scheme et de Self derrière une apparence familière aux programmeurs de C et de Java. Cette combinaison, née d’une contrainte commerciale immédiate, est devenue le langage natif universel du navigateur.
Avant Netscape : un ingénieur des langages
Brendan Eich naît en 1961 à Pittsburgh. Il étudie les mathématiques et l’informatique et obtient en 1986 un master à l’université de l’Illinois à Urbana-Champaign. Avant Netscape, il travaille notamment chez Silicon Graphics et MicroUnity sur des compilateurs et des systèmes.
Ce parcours compte pour comprendre 1995. Eich n’est pas chargé d’improviser un langage sans références : il connaît les compromis entre conception, implantation et performances et s’intéresse notamment à Scheme, dialecte de Lisp où les fonctions occupent une place centrale.
1995 : donner un comportement aux pages web
Au milieu des années 1990, le Web est encore principalement un ensemble de documents. HTML décrit une page et le navigateur l’affiche ; de nombreuses interactions nécessitent un nouvel échange avec le serveur.
Netscape Navigator est alors au premier plan du marché. Netscape veut permettre aux auteurs de pages d’ajouter facilement des comportements directement dans le navigateur. L’entreprise collabore parallèlement avec Sun autour de Java, destiné à des applications plus structurées. Le futur langage de script doit être plus léger, immédiatement disponible dans HTML et utilisable sans chaîne de compilation.
Eich rejoint Netscape en avril 1995. En mai, il produit en une dizaine de jours le prototype appelé Mocha. Le projet évolue ensuite avant sa diffusion : le langage prend le nom LiveScript, puis JavaScript à la fin de 1995, dans un contexte commercial où Java bénéficie d’une forte visibilité.
Le nom entretient depuis une confusion tenace. JavaScript n’est pas une version simplifiée de Java. Les deux langages diffèrent par leur système de types, leur modèle d’objets et leur mode d’exécution. Leur ressemblance la plus visible vient surtout d’une syntaxe volontairement familière : accolades, opérateurs et structures de contrôle inspirés de la famille C.
Sous une syntaxe familière, Scheme et Self
L’originalité du langage apparaît sous cette surface. JavaScript traite les fonctions comme des valeurs de première classe : elles peuvent être stockées dans des variables, passées en argument ou retournées par d’autres fonctions. Cette idée, familière dans Scheme, convient particulièrement à un navigateur piloté par des événements : une fonction peut être associée à un clic, une saisie ou la fin d’une opération.
Pour les objets, Eich s’inspire notamment de Self. Au lieu de faire reposer le modèle fondamental sur des classes, un objet peut déléguer la recherche de propriétés à un autre objet par une chaîne de prototypes. Les class ajoutées bien plus tard à JavaScript fournissent une syntaxe plus familière, mais elles s’appuient toujours sur ce mécanisme prototypal.
JavaScript adopte également un typage dynamique et de nombreuses conversions implicites. Ces choix rendent les petits scripts rapides à écrire, mais créent aussi des comportements qui peuvent surprendre. Certains aspects souvent considérés aujourd’hui comme des bizarreries viennent directement des compromis du lancement : le langage devait être accessible, suffisamment puissant et surtout prêt très vite.
Eich développe en parallèle le premier moteur du langage, ancêtre de SpiderMonkey. Le fait de concevoir syntaxe et implémentation ensemble accélère l’expérimentation. Il laisse aussi peu de temps pour revenir sur certaines décisions avant que des pages publiques commencent à en dépendre.
Quand les défauts deviennent un contrat de compatibilité
Sur le Web, une erreur publiée est difficile à effacer. Dès qu’un comportement est utilisé par des milliers de sites, le corriger de manière incompatible peut rendre ces sites inutilisables. Des conversions implicites, certaines règles de portée, les particularités de this ou la coexistence de null et undefined font ainsi partie d’un héritage que les versions modernes doivent gérer plutôt que simplement supprimer.
Cette contrainte explique à la fois les aspérités et la longévité de JavaScript. Les standards ajoutent généralement des mécanismes plus sûrs sans retirer brutalement ceux dont dépend l’ancien Web.
Elle rappelle aussi une distinction essentielle : JavaScript n’est pas le navigateur. Le langage définit notamment valeurs, fonctions, objets et opérations. Les API comme le DOM, les événements, fetch ou le stockage sont fournies par l’environnement web. Une incompatibilité historique pouvait venir du langage, mais aussi des API de navigateur qui l’entouraient.
De JavaScript à ECMAScript
Le succès de Netscape entraîne rapidement des implémentations concurrentes. Microsoft introduit JScript dans Internet Explorer, tandis que chaque navigateur développe ses propres comportements et API. Sans socle commun, les auteurs de sites risquent de devoir écrire du code différent selon le navigateur.
Netscape soumet donc le langage à Ecma International en 1996. La première édition d’ECMA-262 paraît en 1997 et définit ECMAScript. Le changement est fondamental : les règles centrales du langage ne dépendent plus seulement du produit d’un éditeur.
JavaScript est le nom historique et usuel du langage ; ECMAScript est sa spécification standardisée. Les navigateurs mettent en œuvre cette spécification puis y ajoutent les API propres au Web.
La normalisation n’est pas linéaire. Le projet très ambitieux d’ECMAScript 4 se heurte dans les années 2000 à des désaccords sur l’ampleur des changements. Le compromis mène à ECMAScript 5 en 2009. ECMAScript 2015 (ES6) marque ensuite une étape majeure avec les modules, let et const, les classes syntaxiques, les fonctions fléchées et d’autres constructions. La spécification adopte ensuite un rythme d’évolution annuel.
L’échec d’ES4 est instructif : faire évoluer un langage omniprésent demande autant de gouvernance que d’ingénierie. Il faut améliorer la plateforme sans fragmenter les implémentations ni rompre avec des milliards de lignes de code existantes.
La suite de l’histoire dépasse largement Brendan Eich. Dans les années 2000, Ajax popularise des interfaces capables d’échanger avec un serveur sans recharger toute la page. Les bibliothèques puis les frameworks structurent des applications de plus en plus complexes.
À partir de 2008, des moteurs comme V8 accélèrent fortement JavaScript grâce à des techniques de compilation à la volée. En 2009, Ryan Dahl crée Node.js, qui utilise V8 pour exécuter JavaScript hors du navigateur. Le langage gagne alors les serveurs, les outils de développement et de nombreux environnements qui n’étaient pas prévus dans le projet Netscape de 1995.
Eich n’a créé ni V8 ni Node.js, pas plus qu’il n’est l’auteur des nombreuses fonctionnalités ajoutées ensuite à ECMAScript. Son rôle historique est d’avoir créé le noyau initial et participé à sa standardisation. La plateforme moderne est une construction collective associant comités de standards, éditeurs de moteurs, navigateurs, bibliothèques, développeurs et utilisateurs.
Mozilla : préserver un Web ouvert
Après le rachat de Netscape par AOL, Eich joue un rôle important dans le projet Mozilla. Il devient l’un de ses responsables techniques puis occupe des fonctions de direction à la Mozilla Corporation. Firefox, lancé en 2004, contribue à rétablir une concurrence forte entre navigateurs et à promouvoir les standards ouverts.
En 2014, Eich devient brièvement directeur général de Mozilla avant de démissionner dans le contexte d’une controverse publique liée à un don politique effectué en 2008. Cet épisode appartient à sa trajectoire professionnelle, mais il est distinct de l’évaluation technique de son rôle dans JavaScript.
En 2015, il cofonde Brave Software, à l’origine du navigateur Brave, centré notamment sur la protection contre le suivi et sur une approche différente de la publicité en ligne. Ce projet prolonge son travail dans l’écosystème des navigateurs sans constituer une nouvelle étape de la conception de JavaScript.
Pourquoi Brendan Eich compte dans l’histoire du Web
La contribution durable d’Eich n’est pas d’avoir dessiné seul le JavaScript moderne. Elle est d’avoir donné au navigateur, au moment décisif de l’expansion du Web, un langage suffisamment accessible pour être adopté immédiatement et suffisamment expressif pour dépasser rapidement les petits scripts auxquels il semblait destiné.
Ses influences expliquent une partie de cette capacité d’adaptation : fonctions de première classe, objets prototypaux et dynamisme ont permis des styles de programmation très différents. Ses compromis expliquent aussi certaines difficultés du langage. Les deux dimensions sont indissociables.
JavaScript montre surtout qu’un langage déployé sur le Web cesse rapidement d’appartenir à son créateur. Il devient un contrat collectif entre une spécification, plusieurs moteurs, des API, des outils et un immense corpus de programmes existants. Sa réussite tient autant à cette continuité qu’à son dessin initial.
Chronologie
- 1961 : naissance de Brendan Eich à Pittsburgh.
- 1986 : master à l’université de l’Illinois à Urbana-Champaign.
- Avril 1995 : arrivée chez Netscape.
- Mai 1995 : création en dix jours du prototype Mocha.
- 1995 : Mocha devient LiveScript puis JavaScript.
- 1996 : Netscape soumet le langage à Ecma International.
- 1997 : publication de la première édition d’ECMA-262.
- 1998 : Eich participe à la création du projet Mozilla.
- 2004 : lancement de Firefox.
- 2009 : ECMAScript 5 ; Ryan Dahl lance Node.js.
- 2014 : bref mandat d’Eich comme directeur général de Mozilla.
- 2015 : ECMAScript 2015 et cofondation de Brave Software.
- Aujourd’hui : ECMAScript évolue régulièrement et JavaScript reste le langage natif universel des navigateurs web.
Questions fréquentes
Brendan Eich a-t-il vraiment créé JavaScript en dix jours ?
Il a créé le premier prototype, Mocha, en une dizaine de jours en mai 1995. Le langage a encore évolué avant sa sortie publique, puis pendant des décennies à travers ses standards et ses différentes implémentations.
JavaScript est-il une version de Java ?
Non. Le nom et une partie de la syntaxe créent une proximité trompeuse. JavaScript est dynamiquement typé et repose fondamentalement sur des prototypes ; Java a été conçu autour d’un modèle différent et d’un autre environnement d’exécution.
Quelle différence entre JavaScript et ECMAScript ?
ECMAScript est la spécification standard qui définit le cœur du langage. JavaScript est le nom couramment utilisé pour les implémentations de ce langage. Dans un navigateur, JavaScript fonctionne en plus avec des API Web telles que le DOM.
Pourquoi JavaScript utilise-t-il des prototypes ?
Eich s’est notamment inspiré du langage Self. Les objets peuvent déléguer la recherche de propriétés à d’autres objets. La syntaxe moderne des classes ne remplace pas cette mécanique : elle s’appuie dessus.
Brendan Eich a-t-il créé Node.js ?
Non. Node.js a été créé par Ryan Dahl en 2009 et utilise le moteur V8. Son importance montre justement comment JavaScript a dépassé l’usage prévu à l’origine dans les pages web.
Pourquoi les anciennes bizarreries de JavaScript existent-elles encore ?
Parce que le Web privilégie fortement la compatibilité ascendante. Supprimer ou modifier un ancien comportement pourrait casser des sites toujours accessibles. Le langage évolue donc surtout en ajoutant de meilleures possibilités tout en conservant une grande partie de son passé.