JavaScript
En 1995, le Web traverse une phase d’expansion rapide. Netscape et Microsoft se livrent une bataille commerciale intense autour de leurs navigateurs respectifs. Brendan Eich, ingénieur chez Netscape, reçoit une mission pour le moins inhabituelle : concevoir un langage de programmation en dix jours, un outil qui s’exécutera directement dans le navigateur Netscape. Mais cette demande s’inscrit dans une vision stratégique plus large. Netscape ne voit plus le navigateur comme une simple application ; l’entreprise le considère, avec le serveur, comme une nouvelle forme de système d’exploitation distribué.
À cette époque, Java de Sun Microsystems s’impose comme la solution de référence pour les applications Web complexes. Ce langage compilé génère du bytecode pour sa machine virtuelle, reprend les principes orientés objet de C++ et promet des performances comparables aux langages natifs. Pourtant, Netscape identifie un manque : il faut un second langage, plus léger, interprété, qui viendrait compléter Java. Un outil accessible aux programmeurs amateurs, qui s’intégrerait sans friction dans les pages Web.
Brendan Eich conçoit alors JavaScript comme un langage aux influences multiples. La syntaxe emprunte au C ses accolades et ses points-virgules, ainsi que les structures de données, tandis que les modèles s’inspirent de Smalltalk. La symétrie entre données et code, caractéristique de LISP, trouve sa place dans la conception. Pour la gestion des événements, Eich se tourne vers HyperCard. Quant à l’approche orientée objet, elle s’appuie sur une sémantique d’exécution utilisant des prototypes, à la manière du langage Self, plutôt que sur une syntaxe de classes comme Java.
Les premières années du langage restent modestes. JavaScript sert surtout à faire défiler des messages dans la barre d’état du navigateur ou à animer quelques images. Rien de bien spectaculaire. Mais le langage contient suffisamment d’éléments fondamentaux pour perdurer. Son adoption initiale limitée lui laisse le temps d’évoluer progressivement, notamment grâce au processus de standardisation ECMA qui améliore ses performances et sa robustesse.
Le véritable tournant survient entre 2004 et 2005 avec l’arrivée d’Ajax. JavaScript peut désormais récupérer des données depuis les serveurs et mettre à jour les documents HTML sans recharger toute la page. Microsoft introduit cette fonctionnalité dans Internet Explorer via l’objet XMLHttpRequest, repris par les autres navigateurs. L’interface utilisateur bascule en partie vers le navigateur, créant des expériences beaucoup plus riches. Gmail et Google Maps illustrent cette transformation.
Ce changement révèle vite les faiblesses des moteurs JavaScript des navigateurs. Les pages Web ne redémarrent plus toutes les minutes. Elles maintiennent des sessions prolongées, manipulent des données dynamiques volumineuses, communiquent en continu avec les serveurs en arrière-plan. Google développe Chrome et son interpréteur V8 pour répondre à ces nouveaux besoins de performance. Le marché suit le mouvement. Les performances des interpréteurs JavaScript progressent chez tous les éditeurs.
En 2012, Mozilla lance asm.js, un sous-ensemble strict de JavaScript optimisé pour exécuter du code compilé depuis C ou C++. Grâce à cette innovation, des jeux complexes sont portés sur le Web. Epic Games en fait la démonstration spectaculaire en adaptant son moteur Unreal Engine 3 en JavaScript en quelques jours seulement. Le succès d’asm.js influencera directement la création de WebAssembly, un format binaire plus efficace pour exécuter du code natif dans les navigateurs.
Node.js élargit ensuite le terrain de jeu de JavaScript au-delà du navigateur. Le langage investit le développement d’applications serveur. Sa nature événementielle, présente depuis l’origine, facilite la création d’applications Web hautement évolutives sans la complexité de la programmation « multithreadée ».
La standardisation continue via ECMAScript apporte régulièrement de nouvelles fonctionnalités. Les modules ES6 en sont un exemple. Tout cela en préservant une compatibilité ascendante indispensable à la pérennité du Web. JavaScript se transforme progressivement d’un simple outil d’animation en un langage polyvalent capable de gérer des applications complexes, que ce soit côté client ou serveur.
L’écosystème qui l’entoure s’enrichit constamment. Les transpileurs permettent d’utiliser les dernières fonctionnalités tout en restant compatible avec les anciennes versions des navigateurs. Les gestionnaires de paquets comme npm facilitent le partage de code entre développeurs. React, Angular, Vue.js standardisent le développement d’interfaces utilisateur complexes.
Le succès de JavaScript tient beaucoup à son accessibilité et sa capacité d’adaptation. Malgré ses imperfections initiales, liées à sa création express, le langage a su répondre aux besoins changeants du Web. Son interprétation directe, sa flexibilité, son intégration native dans les navigateurs en font un élément central du développement Web moderne.
La position dominante de JavaScript ne signifie pas pour autant la fin de son évolution. WebAssembly ouvre de nouvelles perspectives en tant que format de compilation universel pour le Web. D’autres langages peuvent désormais s’exécuter dans le navigateur. JavaScript conserve néanmoins son rôle d’interface privilégiée avec le DOM et les APIs Web. Il démontre sa capacité à coexister avec les nouvelles technologies.