Repère du
JavaScript entre dans le navigateur
Un communiqué commun de Netscape et de Sun annonce un langage conçu pour s'exécuter dans la page elle-même. Il devait servir à vérifier un formulaire ; il porte aujourd'hui l'essentiel des interfaces en réseau.
Langage 1995 8 min de lecture
Pour comprendre pourquoi ce langage a été écrit, il faut se rappeler ce que coûtait un aller-retour vers le serveur en 1995. Sur une liaison par modem, valider un formulaire prenait plusieurs secondes. Si un champ obligatoire avait été oublié, le visiteur attendait, recevait une page d'erreur, revenait en arrière et recommençait. Un langage capable de vérifier la saisie avant l'envoi ne relevait pas du confort, mais de la survie du formulaire.
Un prototype écrit en une dizaine de jours
Le premier prototype est écrit au printemps 1995 par Brendan Eich, chez Netscape, en une dizaine de jours. Il porte d'abord un autre nom, LiveScript, avant d'être rebaptisé au moment de l'annonce publique du 4 décembre. Cette précipitation explique une partie des bizarreries que le langage traîne encore, et que les éditions suivantes ont corrigées sans jamais pouvoir les supprimer : sur le web, casser l'existant n'est pas une option.
Un nom qui a fait trente ans de dégâts

JavaScript et Java sont deux langages différents, conçus par des équipes différentes, dans des buts différents. Le rapprochement des noms relevait de l'accord commercial du moment. La confusion survit pourtant dans les offres d'emploi et les discussions de comptoir technique.
- Java
- Langage compilé vers un format intermédiaire, exécuté par une machine virtuelle. Typage déclaré, orientation objet par classes. Employé côté serveur et sur des systèmes embarqués.
- JavaScript
- Langage interprété puis compilé à la volée par le navigateur. Typage dynamique, objets modifiables à l'exécution, fonctions manipulables comme des valeurs. Employé dans la page, et depuis 2009 également sur le serveur.
Trois traits de 1995 encore présents
Les fonctions sont des valeurs
Une fonction peut être rangée dans une variable, passée en argument, renvoyée par une autre fonction. Ce trait, rare dans les langages grand public de l'époque, est ce qui rendra naturel le style par rappels puis par promesses, et plus tard la description d'une interface comme une fonction de son état.
Les objets se modifient à l'exécution
On ajoute une propriété à un objet existant sans rien déclarer au préalable. Cette souplesse a permis d'écrire des bibliothèques qui corrigent le navigateur depuis la page elle-même, technique qui a maintenu le web compatible pendant les années de divergence.
Un seul fil d'exécution, piloté par les événements
Le code de la page ne s'exécute pas en parallèle : les tâches sont mises en file d'attente et traitées l'une après l'autre. Un traitement long bloque donc l'affichage entier. Cette contrainte, présente dès 1995, dicte encore aujourd'hui la manière d'écrire une interface fluide.
Le prix de l'improvisation

Dès août 1996, un second navigateur embarque son propre dialecte. Deux implémentations proches mais différentes coexistent, et écrire une page revient à écrire deux fois le même comportement. La normalisation sous le nom d'ECMAScript, en juin 1997, donne une référence commune, mais il faudra une décennie et une bibliothèque d'abstraction pour que la question cesse d'occuper les journées de travail.
| Date | Étape | Ce qui change |
|---|---|---|
| 12/1995 | Annonce publique | Un langage dans la page |
| 06/1997 | Première norme ECMA-262 | Une référence commune aux éditeurs |
| 2009 | Cinquième édition | Mode strict, méthodes de tableau |
| 06/2015 | Édition 2015 | Modules, classes, promesses |
| Depuis 2015 | Une édition par an | Ajouts limités, publiés à date fixe |
Ce que ce repère a rendu possible
Sans exécution dans la page, la requête discrète de mars 1999 n'aurait servi à rien : recevoir des données sans recharger l'écran suppose un programme capable de les insérer. De la même façon, le service worker de 2015 est un script JavaScript. Toute la seconde moitié de cette chronologie repose sur la décision de décembre 1995.
Précisions de datation
- 04/12/1995 : date du communiqué commun annonçant le langage sous son nom définitif.
- Printemps 1995 : écriture du prototype, sous le nom LiveScript.
- 06/1997 : première édition de la norme ECMA-262.