39 points par GN⁺ 2025-05-29 | 10 commentaires | Partager sur WhatsApp
  • Pour le 30e anniversaire de JavaScript cette année, Deno en a résumé brièvement l’histoire
  • JavaScript a commencé comme un langage de script développé en 10 jours avant de devenir aujourd’hui le langage le plus populaire au monde
  • Présentation de quelques moments clés de cette histoire pour montrer comment JavaScript a évolué et vers où il se dirige

A brief history of JavaScript (1994-2025)

[1994]

  • Sortie de Netscape Navigator 1.0

    • En décembre 1994, sortie de Netscape Navigator 1.0
    • Sa rapidité et son interface graphique, supérieures à celles des navigateurs précédents, ont contribué à son succès
    • Avec la prise en charge de HTML 2.0, les bases étaient posées pour que JavaScript puisse ensuite s’exécuter dans ce navigateur

[1995]

  • Naissance de JavaScript

    • En mai 1995, Brendan Eich développe une première ébauche de JavaScript en seulement 10 jours
    • Le langage est créé en réponse à une demande pour un langage de script avec une syntaxe proche de Java, alors très populaire
    • Le nom JavaScript est choisi à des fins marketing
  • Annonce officielle de Netscape et Sun

    • En décembre 1995, JavaScript est présenté comme un « langage de script léger orienté objet pour le Web »
    • L’annonce, soutenue par 28 entreprises technologiques, positionne aussi le langage pour les environnements d’entreprise

[1996]

  • La réponse de Microsoft

    • En mars 1996, Microsoft intègre JScript à Internet Explorer 3
    • Relié à ActiveX, JScript pouvait contrôler des applications comme Excel
  • Sortie de Navigator 2.0 avec JavaScript 1.0

    • En mars de la même année, JavaScript 1.0 fait officiellement ses débuts dans Netscape Navigator 2.0
    • Le concept de DOM (Document Object Model) apparaît à ce moment-là

[1997]

  • Proposition de standardisation à l’ECMA

    • En juin 1997, Netscape propose la standardisation de JavaScript à ECMA International
    • L’objectif est de résoudre les problèmes de compatibilité avec le JScript de Microsoft
    • Une spécification nommée ECMA-262 est créée, et le nom retenu devient ECMAScript
    • Le comité TC39 est constitué et commence à piloter l’évolution du langage

[1998]

  • Lancement du projet Mozilla

    • En janvier 1998, pour répondre au monopole de Microsoft sur le marché des navigateurs, Netscape ouvre son code source
    • Le projet est baptisé « Mozilla » et donnera ensuite naissance à plusieurs réussites open source comme Firefox et Rust
  • Publication d’ECMAScript 2

    • En septembre 1998, ECMAScript 2 est officiellement publié
    • Il n’apporte pas de nouvelles fonctionnalités, son objectif principal étant la cohérence de la spécification et une documentation plus aboutie

[1999]

  • IE5 et l’introduction de XMLHttpRequest

    • En mars 1999, XMLHttpRequest est introduit dans IE5
    • Cela servira plus tard de base aux technologies AJAX
  • Apparition de JSDoc

    • En avril 1999, JSDoc est introduit pour la documentation JavaScript
    • Inspiré du Javadoc du monde Java, il est encore utilisé aujourd’hui comme outil de génération de documentation
  • Publication d’ECMAScript 3

    • En décembre 1999, ECMAScript 3 est officiellement publié
    • Avec l’ajout de do-while, des expressions régulières, de méthodes sur les chaînes et de la gestion des exceptions, il pose les bases de la véritable montée en puissance du langage
    • Il restera pendant plus de dix ans la référence de fait du JavaScript standard sur le Web

[2001]

  • Première apparition de JSON

    • Le premier message JSON est transmis
    • Des structures d’objet de la forme { to, do, text } sont utilisées dans les scripts au sein des pages Web
    • Ce format de message léger fondé sur JavaScript deviendra ensuite le standard des échanges des API Web

[2002]

  • Introduction de JSLint

    • Douglas Crockford publie JSLint, un outil d’analyse statique de syntaxe
    • Il vise à améliorer la qualité du code JavaScript et mènera ensuite à son livre « JavaScript: The Good Parts »
  • Sortie de Phoenix 0.1, précurseur de Firefox

    • La communauté Mozilla développe le navigateur léger Phoenix en réaction au caractère trop lourd de la suite existante
    • Il propose des fonctions innovantes comme la navigation par onglets et le blocage des pop-ups, avant d’évoluer plus tard en Firefox

[2003]

  • Apple annonce Safari et WebKit

    • L’introduction du navigateur Safari et du moteur WebKit permet au Mac de réduire sa dépendance à Microsoft
    • Ils serviront ensuite de base à Mobile Safari sur l’iPhone

[2004]

  • Gmail et AJAX

    • Avec son interface fondée sur AJAX, Gmail définit un nouveau standard d’UX pour les applications Web
    • L’échange de données avec le serveur sans rechargement complet de la page marque le début de l’ère du Web 2.0

[2005]

  • Formalisation du terme AJAX

    • Jesse James Garrett formalise le concept d’« AJAX »
    • La combinaison de JavaScript et XML établit une architecture de communication asynchrone avec le serveur
  • Lancement de Mozilla DevMo, futur MDN

    • Début de MDN, hub de documentation JavaScript fondé sur les standards
    • Il fournit une référence unifiée face à la fragmentation des documents de compatibilité entre navigateurs

[2006]

  • Arrivée de jQuery

    • John Resig lance le projet jQuery
    • Il contribue fortement à résoudre les problèmes cross-browser pour la manipulation du DOM, la gestion des événements, AJAX, etc.
    • Son API concise entraîne une adoption fulgurante

[2007]

  • Lancement de l’iPhone et absence de prise en charge de Flash

    • Apple annonce l’iPhone, et Safari ne prend pas en charge Flash
    • Cela accélère la transition vers des contenus fondés sur HTML + JavaScript dans l’environnement mobile

[2008]

  • Fin officielle de Netscape Navigator

    • AOL met fin au développement de Netscape, marquant la fin de la première guerre des navigateurs
    • Le monopole d’IE par Microsoft conduit ensuite à des poursuites antitrust
  • Publication de JavaScript: The Good Parts

    • Le livre de Crockford contribue à réévaluer JavaScript comme un langage de développement professionnel
  • Annonce de Google Chrome et du moteur V8

    • Avec la sortie de Chrome, Google dévoile aussi le moteur JavaScript V8
    • Grâce à la compilation JIT et à l’optimisation du garbage collection, les performances progressent fortement
    • Cela jette ensuite les bases d’extensions côté serveur comme Node.js

[2009]

  • Apparition de CommonJS

    • Tentative de standardiser l’usage de code JS modulaire hors du navigateur, notamment côté serveur
    • Cela servira ensuite de base à la structure modulaire de l’écosystème Node.js
  • Début du projet Node.js

    • Ryan Dahl lance le développement de Node.js
    • En permettant d’exécuter JavaScript dans un environnement serveur, il étend le langage à un rôle full stack
  • Oracle rachète Sun Microsystems

    • Avec Java, les droits de marque sur JavaScript sont eux aussi transférés à Oracle
    • Cela fait émerger des questions de marque autour du nom JavaScript
  • Apparition d’Express.js

    • Premier commit de Express.js, framework Web fondé sur Node.js
    • Il propose une architecture middleware centrée sur la création d’API REST
  • Publication d’ECMAScript 5

    • Le mode strict (strict mode), la prise en charge de JSON, l’ajout de méthodes à Array et d’autres évolutions préparent les bases du JavaScript moderne
  • Apparition de CoffeeScript

    • Syntaxe concise, fonctions fléchées, déstructuration : CoffeeScript expérimente des améliorations syntaxiques avant ES6
    • Il influencera indirectement l’évolution ultérieure de la syntaxe JavaScript

[2010]

  • Sortie de npm 1.0

    • Le gestionnaire de paquets JavaScript npm est officiellement lancé, amorçant la standardisation du partage et de la réutilisation du code
    • Il est depuis devenu le plus grand registre open source au monde, avec plus de 3 millions de paquets
  • Sortie de WebStorm 1.0

    • JetBrains lance le premier IDE dédié à JavaScript
    • Il intègre l’analyse statique, la détection d’erreurs, l’autocomplétion et le débogage
  • Arrivée d’AngularJS & Backbone.js

    • Début du boom des frameworks SPA
    • Angular est centré sur le déclaratif/l’injection de dépendances, Backbone sur le procédural/la concision
    • C’est à partir de cette période qu’apparaît le phénomène d’apparition et disparition fréquentes des frameworks (« Framework churn »)

[2011]

  • Portage de Node.js sur Windows

    • Grâce à une collaboration entre Joyent et Microsoft, Node.js devient utilisable aussi sous Windows
    • Développement de la bibliothèque libuv → fourniture d’une plateforme unifiée pour les E/S asynchrones
    • Début de l’orientation open source de Microsoft, qui se prolongera ensuite avec TypeScript, VSCode, la stratégie Azure, etc.

[2012]

  • Arrivée de Webpack

    • En tant qu’outil de bundling des ressources web, il étend le système de modules au client
    • Sera ensuite adopté comme système de build central par React, Angular, Vue et d’autres
  • Publication de TypeScript 0.8

    • Microsoft présente un surensemble de JavaScript à typage statique
    • Fournit une structure adaptée aux projets de grande envergure, puis influence le standard ES

[2013]

  • Début d’Atom Shell, ancêtre d’Electron

    • Rend possible le développement d’applications desktop en HTML/CSS/JS
    • Adopté notamment par Slack et Visual Studio Code, il transforme les méthodes de développement desktop
  • Publication d’asm.js

    • Permet des calculs haute performance dans le navigateur en convertissant du code C/C++ en JS
    • Évoluera ensuite vers WebAssembly
  • Définition de la stack MEAN

    • Nom donné à la combinaison MongoDB + Express + Angular + Node.js
    • Diffusion d’une approche full-stack fondée sur JavaScript
  • Publication de React

    • D’abord utilisé en interne par Facebook, puis publié en open source
    • Installe le paradigme de développement UI basé sur les composants
  • Début du développement d’ESLint

    • Outil de linting extensible lancé par Nicholas C. Zakas
    • Sa plus grande capacité de personnalisation que les linters existants favorise une adoption rapide
  • Lancement de Gulp

    • Contrairement à Grunt, centré sur la configuration, c’est un outil de build en streaming basé sur le code
    • Il contribue à structurer l’automatisation des tâches de build en JavaScript

[2014]

  • Lancement de Vue.js

    • Framework UI progressif présenté par Evan You
    • Il fait la synthèse entre l’UI déclarative de React et les capacités de templating d’Angular
  • Acquisition d’Express.js

    • StrongLoop acquiert Express.js → sera ensuite lui-même racheté par IBM
    • Les interrogations sur l’indépendance de la communauté favorisent l’émergence de frameworks successeurs comme Koa
  • Début de Babel.js (ex-6to5)

    • Permet d’exécuter la syntaxe JS la plus récente sur d’anciens navigateurs
    • S’impose comme le transpileur standard de tous les frameworks
  • Sortie de Meteor 1.0

    • Se fait remarquer comme outil de développement de web apps temps réel en stack unique
    • Influencera ensuite des technologies temps réel comme GraphQL et Firebase
  • Publication de Flow par Facebook

    • Outil de vérification de types statiques permettant de détecter à l’avance les erreurs JS
    • Son usage reculera ensuite avec la montée en puissance de TypeScript
  • Annonce d’AWS Lambda

    • Introduction du serverless computing basé sur JavaScript (Node.js)
    • L’exécution de fonctions pilotée par événements permet d’implémenter un backend sans gestion d’infrastructure
  • Fork de io.js

    • Face au rythme lent des releases de Node.js chez Joyent, la communauté crée la branche io.js
    • Elle sera réintégrée à Node.js en 2015

[2015]

  • Apparition du terme Jamstack

    • Mise en avant de la combinaison JavaScript + API + Markup
    • Avec l’essor des approches SSR et SSG, les générateurs de sites statiques gagnent en importance
  • Création de la Node.js Foundation

    • Réorganisation de la gouvernance communautaire, y compris l’intégration d’io.js
    • Participation de grandes entreprises comme IBM et Microsoft
  • Lancement de GraphQL

    • Langage de requête d’API développé par Facebook
    • Se caractérise par une approche déclarative, une conception fortement typée et la réduction des requêtes serveur
  • Lancement de Redux

    • Conteneur d’état prévisible pour la gestion d’état dans React
    • Sera ensuite adopté aussi dans Vue, Angular, etc.
  • Annonce de WebAssembly

    • Permet d’exécuter dans le navigateur du code haute performance comme du C/C++
    • Successeur d’asm.js, il s’impose comme environnement d’exécution généraliste du web
  • Sortie d’Atom 1.0

    • Éditeur de texte hackable basé sur Electron créé par GitHub
    • Aura une influence directe sur VSCode
  • Annonce officielle d’ECMAScript 6 (ES2015)

    • Améliorations majeures de la syntaxe avec import/export, let/const, Promise, fetch, etc.
    • La version qui sert de base au JavaScript moderne
  • Intégration de Node.js et io.js

    • La sortie de Node.js v4.0 réunit de nouveau les deux projets en un seul
    • Mise en place du support à long terme (LTS) et d’une politique de versionnement cohérente

[2016]

  • Microsoft open source le moteur Chakra

    • Ouverture en open source de Chakra, le moteur JS du navigateur Edge
    • Il suscite l’intérêt de la communauté de développeurs, mais sera ensuite abandonné face à la domination de V8
  • Affaire Leftpad

    • La suppression du module left-pad provoque un effondrement massif des dépendances de packages
    • L’événement entraîne des changements de politique chez npm
  • Sortie de VSCode 1.0

    • IDE léger basé sur Electron et TypeScript
    • Devient rapidement populaire grâce à sa rapidité, son extensibilité et son excellent support JS/TS
  • Publication d’ECMAScript 2016

    • Mise à jour limitée avec des nouveautés comme l’opérateur ** et array.includes()
  • Annonce d’Angular2

    • Architecture à composants basée sur TypeScript complètement différente d’AngularJS
    • Avec la compilation AOT et un renforcement de la sécurité, il s’impose comme option enterprise
  • Sortie de Next.js 1.0

    • Framework de rendu côté serveur basé sur React
    • Vise à standardiser le développement full-stack React avec une attention portée au SEO et aux performances

[2017]

  • Commit initial de la proposition Temporal

    • Proposition d’API Temporal destinée à résoudre les problèmes de l’objet Date
    • Son inclusion dans le standard ECMAScript a été approuvée en 2021, mais elle n’est encore prise en charge que dans certains environnements
  • Sortie de Prettier 1.0

    • Formateur appliquant automatiquement un style de code cohérent
    • Influence aussi l’arrivée de Black pour Python et de formateurs côté Rust
  • Publication d’ECMAScript 2017

    • Introduction de fonctionnalités modernes de JS comme async/await, Object.entries(), Object.values()
    • Généralisation de l’usage de fetch()
  • Lancement de Yarn

    • Gestionnaire de paquets conçu pour résoudre la lenteur et les conflits de npm
    • Introduit des fonctions innovantes comme yarn.lock, l’installation en parallèle et le cache
  • Lancement de Cloudflare Workers

    • Début de l’ère de l’edge computing
    • Le code serverless peut être exécuté de manière distribuée à l’échelle mondiale

[2018]

  • Sortie de Puppeteer 1.0

    • Outil d’automatisation de navigateur basé sur Chrome headless
    • Offre, via une API adaptée à Node.js, une plus grande simplicité que Selenium
  • Sortie de TensorFlow.js

    • Rend possible l’exécution du machine learning dans le navigateur
    • Implémentation d’applications d’IA temps réel sur la base de WebGL/WebGPU
  • Smooshgate

    • À cause d’un conflit de nommage avec Array.flatten, le nom est changé en flat()
    • Le problème provient d’une incompatibilité avec MooTools
  • Annonce de Deno par Ryan Dahl

    • Présentation initiale du runtime Deno accompagnée d’un retour critique sur les problèmes de Node
  • Publication d’ECMAScript 2018

    • Introduction de promise.finally(), de async iteration et du rest/spread sur les objets

[2019]

  • Lancement de l’OpenJS Foundation

    • Fusion de la Node.js Foundation et de la JavaScript Foundation
    • Unification de la gouvernance des projets serveur et client
  • Node.js v12 : début du support expérimental d’ESM

    • Introduction expérimentale des modules ES via .mjs, type: module, etc.
  • Publication d’ECMAScript 2019

    • Ajout de Object.fromEntries(), String.prototype.trimStart(), etc.
  • Node.js v13.2 : stabilisation officielle d’ESM

[2020]

  • SpaceX Dragon : JavaScript prend son envol dans l’espace

    • Utilisation de JavaScript dans l’interface tactile basée sur Chrome
  • Sortie de Deno 1.0

    • Approche innovante avec prise en charge native de TypeScript, modèle de permissions, import HTTP, etc.
  • Fin officielle d’Adobe Flash

    • Ancrage d’un environnement multimédia web centré sur JS

[2022]

  • Deno rejoint le TC39

    • Annonce de sa participation à la standardisation de JavaScript
  • Fin du support d’IE11

    • Achèvement de la transition vers un écosystème web fondé sur les standards
  • Annonce d’ECMAScript 2022

    • Ajout de top-level await, des blocs statiques de classe, etc.

[2023]

  • Sortie de Bun 1.0

    • Runtime ultra-rapide alternatif à Node.js, implémenté en Zig
    • Compatibilité npm et intégration des outils de build

[2024]

  • Node.js choisit Rocket Turtle comme mascotte

    • Le personnage final a été retenu à l’issue d’un concours communautaire
  • Publication d’ECMAScript 2024

    • Renforcement du traitement Unicode avec toWellFormed(), etc.
  • Lancement du registre JSR

    • Registre dédié aux modules ECMAScript modernes de l’équipe Deno
    • Compatible avec TypeScript, Deno, Bun et Cloudflare Workers
  • Lancement du mouvement FreeJavaScript

    • Campagne appelant Oracle à restituer la marque JavaScript
    • Signée par des figures majeures, dont Brendan Eich
  • Sortie de Deno 2

    • Amélioration de la compatibilité Node, avec même des campagnes publicitaires : la guerre des runtimes entre vraiment dans le vif du sujet

[2025]

  • Annonce du portage de TypeScript en Go

    • Le projet tsgo est en cours avec pour objectif des performances plus de 10 fois supérieures
    • Adoption officielle prévue à partir de TypeScript 7.0
  • Annonce du passage de Copilot Chat en open source

    • Microsoft présente sa stratégie visant à transformer VSCode en IDE de développement IA open source

[Conclusion]

  • JavaScript a évolué d’un simple langage de script vers un langage de développement généraliste couvrant aussi bien le frontend web, le backend, le machine learning, l’aérospatial que les IDE de développement IA
  • La communauté open source, l’évolution continue de la syntaxe et l’innovation dans les runtimes ont porté cette croissance, et le langage devrait continuer à s’étendre au-delà du web vers des domaines encore plus vastes, avec des outils plus rapides et plus intelligents

10 commentaires

 
princox 2025-12-17

C’est devenu désormais non plus un standard de langage, mais un standard d’implémentation... qu’on le veuille ou non, j’ai l’impression que sa syntaxe en est venue à devoir embarquer jusqu’à son héritage legacy.

 
dkang 2025-05-31

Merci pour cette excellente ressource.

 
dontdieych 2025-05-31

La version 3 d’IE était quasiment un déchet. À l’époque, Navigator 3 était pratiquement le standard, mais avec l’arrivée d’IE 4, la situation s’est inversée. En plus, IE 4 était installé par défaut sur Windows.

Navigator 4 est bien sorti, mais il n’était pas assez bon pour renverser la situation. Du coup, la part de marché d’IE a continué à grimper.

Quand Navigator est passé en open source, le projet Mozilla est né et une version bêta de Phoenix est sortie ; c’est probablement à ce moment-là que les utilisateurs ont commencé à sentir qu’il y avait un vrai changement. Moi y compris. À cause d’un problème de marque déposée, le nom a été changé en Firefox, et c’est à partir de là que Firefox s’est imposé comme un véritable concurrent d’IE.

Le nom a dû changer dans l’ordre Phoenix -> Firebird -> Firefox. C’était sans doute parce qu’il existait déjà une base de données appelée Firebird.

 
aer0700 2025-05-30

Je lisais ça d’une traite et, à partir du milieu, j’ai eu la gorge serrée.
Ça semble tellement récent, et en même temps tellement ancien...

 
tsboard 2025-05-29

L’article original est extrêmement bien structuré. Même les captures d’écran et les bouts de code nostalgiques y sont... ! J’espère aussi que Deno connaîtra encore plus de succès. haha

 
tested 2025-05-29

Il semble que l’évolution de JavaScript se divise en un avant et un après la sortie de Node.js.

 
bobross0 2025-05-29

Je suis d’accord.

 
dlehals2 2025-05-29

Avec Java, la marque JavaScript a elle aussi été transférée à Oracle. Je l’apprends seulement maintenant.

 
spp00 2025-05-30

À l’origine, la marque JS appartenait à Sun, mais quand Sun a été absorbée, la marque JS (ainsi que MySQL, etc.) a aussi été transférée à Oracle.

 
xguru 2025-05-29

L’article original contient aussi beaucoup d’images et divers extraits de code, donc cela vaut le coup d’y jeter un œil également.