Brève histoire de JavaScript
(deno.com)- 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,
XMLHttpRequestest introduit dans IE5 - Cela servira plus tard de base aux technologies AJAX
- En mars 1999,
-
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 deJSON, l’ajout de méthodes àArrayet d’autres évolutions préparent les bases du JavaScript moderne
- Le mode strict (
-
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
- Améliorations majeures de la syntaxe avec
-
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-padprovoque un effondrement massif des dépendances de packages - L’événement entraîne des changements de politique chez npm
- La suppression du module
-
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
**etarray.includes()
- Mise à jour limitée avec des nouveautés comme l’opérateur
-
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
- Proposition d’API Temporal destinée à résoudre les problèmes de l’objet
-
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()
- Introduction de fonctionnalités modernes de JS comme
-
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é enflat() - Le problème provient d’une incompatibilité avec MooTools
- À cause d’un conflit de nommage avec
-
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(), deasync iterationet du rest/spread sur les objets
- Introduction de
[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.
- Introduction expérimentale des modules ES via
-
Publication d’ECMAScript 2019
- Ajout de
Object.fromEntries(),String.prototype.trimStart(), etc.
- Ajout de
-
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.
- Ajout de
[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.
- Renforcement du traitement Unicode avec
-
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
tsgoest en cours avec pour objectif des performances plus de 10 fois supérieures - Adoption officielle prévue à partir de TypeScript 7.0
- Le projet
-
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
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.
Merci pour cette excellente ressource.
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.
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...
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
Il semble que l’évolution de JavaScript se divise en un avant et un après la sortie de Node.js.
Je suis d’accord.
Avec Java, la marque JavaScript a elle aussi été transférée à Oracle. Je l’apprends seulement maintenant.
À 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.
L’article original contient aussi beaucoup d’images et divers extraits de code, donc cela vaut le coup d’y jeter un œil également.