JavaScript wurde zur nativen Programmiersprache des Webs. Es steuert Benutzeroberflächen, reagiert auf Eingaben, kommuniziert mit Servern und führt vollständige Anwendungen im Browser aus. Mit Node.js gelangte es außerdem auf Server und in Entwicklungswerkzeuge. In diesem Ausmaß war all das 1995 nicht geplant.
Seine Geschichte ist deshalb nicht die Umsetzung eines perfekten Entwurfs. Sie handelt von einer unter Zeitdruck entstandenen Sprache, die durch ihre universelle Verfügbarkeit unverzichtbar wurde und sich ständig weiterentwickelte, ohne ihre Vergangenheit einfach abwerfen zu können.
1995: Der Browser wird programmierbar
Anfang der 1990er-Jahre war das Web vor allem dokumentenorientiert. HTML beschrieb Inhalte, HTTP transportierte Ressourcen und Browser stellten Seiten dar. Für neue Ergebnisse war meist eine weitere Serveranfrage nötig.
Netscape erkannte früh das Potenzial des Browsers als Anwendungsplattform. Das Unternehmen wollte eine leichte Sprache, die Autoren direkt in Webseiten einsetzen konnten – ergänzend zu Java, das Sun damals stark bewarb.
Brendan Eich kam im April 1995 zu Netscape und entwickelte im Mai in ungefähr zehn Tagen den ersten Prototyp Mocha. Die berühmten „zehn Tage“ beziehen sich auf diesen Prototyp, nicht auf das heutige JavaScript. Mocha wurde zu LiveScript und Ende 1995 schließlich zu JavaScript.
Der Name profitierte von Javas Popularität, sorgte aber für dauerhafte Verwirrung. JavaScript ist kein kleines Java. Die Oberfläche erinnert an die C-Sprachfamilie, während wichtige Einflüsse Scheme mit seinen Funktionen erster Klasse und Self mit prototypbasierten Objekten waren.
Ein ungewöhnliches Modell unter vertrauter Syntax
Funktionen sind in JavaScript Werte: Sie können gespeichert, übergeben und zurückgegeben werden. Das passt besonders gut zu ereignisgesteuerten Benutzeroberflächen.
Das historische Objektmodell basiert auf Prototypen. Objekte können die Suche nach Eigenschaften an andere Objekte delegieren. Die moderne class-Syntax bietet eine vertraute Abstraktion, baut aber weiterhin auf diesem Mechanismus auf.
Dynamische Typisierung und implizite Konvertierungen machten kleine Skripte leicht zugänglich, führten aber auch zu bekannten Eigenheiten. Ein großer Teil der späteren Sprachentwicklung besteht darin, bessere Möglichkeiten hinzuzufügen, ohne bestehende Webseiten zu beschädigen.
JavaScript ist nicht der Browser
Sprache und Webumgebung werden leicht verwechselt. DOM, Ereignisse, Netzwerkzugriff und Webspeicher sind jedoch Browser-APIs und kein Bestandteil des ECMAScript-Sprachkerns.
Diese Trennung wurde besonders wichtig, als JavaScript den Browser verließ: Dieselbe Sprache kann in unterschiedlichen Umgebungen mit jeweils eigenen APIs laufen.
Historisch war das DOM dennoch entscheidend. Es stellte die Seite als programmierbare Struktur bereit und ermöglichte es, Text, Attribute, Stile und Elemente nach dem Laden zu verändern. Aus dem Dokument wurde eine dynamische Oberfläche.
Browserkrieg und Standardisierung
Microsoft führte 1996 JScript im Internet Explorer ein. Gleichzeitig lieferten Netscape und Microsoft inkompatible Browser-APIs. Entwickler mussten Unterschiede zwischen Implementierungen berücksichtigen.
Netscape legte die Sprache Ecma International vor. 1997 erschien die erste Ausgabe von ECMA-262, die ECMAScript definierte. JavaScript blieb der gebräuchliche Name; ECMAScript wurde die standardisierte Spezifikation. ECMAScript 3 von 1999 bildete anschließend viele Jahre die Grundlage des verbreiteten JavaScript.
Rückwärtskompatibilität wird zur Webregel
Der erste Browserkrieg hinterließ proprietäre APIs, unterschiedliche Engines und viel Umgehungscode. Zugleich etablierte sich eine dauerhafte Regel: Das Web soll bestehende Inhalte möglichst nicht brechen.
Eigenheiten wie typeof null, lose Gleichheit oder implizite Konvertierungen haben unterschiedliche Ursprünge. Gemeinsam ist ihnen, dass weit verbreitetes Verhalten nur schwer inkompatibel geändert werden kann. Modernes JavaScript ergänzt deshalb meist bessere Mechanismen, statt seine Vergangenheit umzuschreiben.
ECMAScript 4: Evolution ohne großen Bruch
In den 2000er-Jahren sollte ECMAScript 4 die Sprache stark erweitern. Vorgesehen waren unter anderem formalere Klassen und optionale Typen. Wegen grundlegender Meinungsverschiedenheiten über Komplexität und Kompatibilität wurde das Projekt aufgegeben.
Diese Erfahrung prägte die weitere Entwicklung. Änderungen wurden zunehmend schrittweise und kompatibel eingeführt. ECMAScript 5 erschien 2009 unter anderem mit Strict Mode und Verbesserungen für Objekte und Arrays.
Ajax und jQuery: vom Skript zur Webanwendung
Anwendungen wie Gmail und Google Maps zeigten, dass Webseiten im Hintergrund mit Servern kommunizieren und nur Teile ihrer Oberfläche aktualisieren konnten. 2005 machte der Begriff Ajax dieses Modell populär.
Websites verhielten sich immer stärker wie Anwendungen. JavaScript übernahm nicht mehr nur Formularprüfungen und Effekte, sondern steuerte Zustand und Interaktion.
Ab 2006 vereinheitlichte jQuery viele Unterschiede bei DOM, Ereignissen und Netzwerkanfragen. Sein Erfolg spiegelte die Fragmentierung der damaligen Webplattform wider. Mit besserer Standardunterstützung in Browsern verlor diese Kompatibilitätsschicht später an Bedeutung.
Das Wettrennen der JavaScript-Engines
Komplexere Anwendungen erhöhten den Leistungsdruck. 2008 führte Google mit Chrome die V8-Engine ein. Der Wettbewerb mit SpiderMonkey, JavaScriptCore und anderen Engines beschleunigte JavaScript erheblich. Just-in-time-Kompilierung machte deutlich umfangreichere Browseranwendungen praktikabel.
Node.js: JavaScript verlässt den Browser
2009 entwickelte Ryan Dahl Node.js auf Basis von V8. JavaScript ließ sich nun bequem für Server und Kommandozeilenwerkzeuge einsetzen. Das asynchrone Ein-/Ausgabemodell eignete sich besonders für Netzwerkanwendungen.
Node.js veränderte das Ökosystem grundlegend. JavaScript konnte auf Client und Server eingesetzt werden, npm wuchs zu einem riesigen Paketregister und die Sprache verbreitete sich in Buildsystemen, Tests und Automatisierung.
ECMAScript 2015: Modernisierung ohne Neustart
ECMAScript 2015 (ES6) brachte let, const, Pfeilfunktionen, Module, Promises, Generatoren, Klassensyntax und viele weitere Funktionen.
Die Neuerungen ersetzten altes JavaScript nicht, sondern ergänzten eine moderne, kompatible Schicht. Danach wechselte ECMAScript zu einem jährlichen Veröffentlichungsrhythmus; Vorschläge reifen schrittweise im TC39-Prozess.
Frameworks und TypeScript
Mit wachsenden Anwendungen verlagerte sich die Herausforderung auf die Struktur großer Oberflächen. Backbone, Angular, React, Vue, Svelte und andere Werkzeuge entwickelten unterschiedliche Modelle für Komponenten, Zustand und Rendering. Sie gehören zum Ökosystem über JavaScript, nicht zum Sprachkern selbst.
2012 stellte Microsoft TypeScript vor. Es ergänzt JavaScript insbesondere um statische Typen und wird für vorhandene Laufzeitumgebungen wieder in JavaScript übersetzt. TypeScript ersetzt JavaScript daher nicht, sondern baut darauf auf.
Warum JavaScript gewann
JavaScripts entscheidender Vorteil war nicht Perfektion, sondern Distribution. Jeder wichtige Browser lieferte eine JavaScript-Engine mit, ohne dass Nutzer etwas installieren mussten.
Diese universelle Verfügbarkeit erzeugte einen Verstärkungseffekt: Mehr Nutzer führten zu mehr Investitionen in Engines, Standards, Werkzeuge und Bibliotheken. Die Fähigkeit, sich weiterzuentwickeln, ohne das alte Web aufzugeben, schützte diesen Vorteil.
JavaScript im Jahr 2026 ist deshalb eine kollektive Plattform. Brendan Eich schuf den ursprünglichen Kern, doch die moderne Sprache ist das Ergebnis der Arbeit von TC39, Engine-Teams, Browserherstellern, Werkzeugentwicklern und Millionen Programmierern.
Zeitleiste
- 1995: Mocha, LiveScript und JavaScript bei Netscape.
- 1996: JScript im Internet Explorer; Beginn der Ecma-Standardisierung.
- 1997: erste Ausgabe von ECMA-262.
- 1999: ECMAScript 3.
- 2005: Ajax macht asynchrone Webanwendungen populär.
- 2006: jQuery erscheint.
- 2008: Chrome und V8 verschärfen den Leistungswettbewerb.
- 2009: ECMAScript 5 und Node.js.
- 2012: TypeScript wird vorgestellt.
- 2015: ECMAScript 2015 modernisiert die Sprache grundlegend.
- Seit 2016: ECMAScript entwickelt sich im Jahresrhythmus weiter.
Häufige Fragen
Wurde JavaScript wirklich in zehn Tagen entwickelt?
Brendan Eich entwickelte den ersten Prototyp im Mai 1995 in ungefähr zehn Tagen. Die veröffentlichte und standardisierte Sprache entwickelte sich danach drei Jahrzehnte weiter.
Sind JavaScript und Java verwandt?
Nein. Name und Teile der Syntax ähneln sich, doch es handelt sich um unterschiedliche Sprachen. Die Namensnähe war vor allem eine Marketingentscheidung.
Was ist der Unterschied zwischen JavaScript und ECMAScript?
ECMAScript ist die Standardspezifikation des Sprachkerns. JavaScript ist der historische und gebräuchliche Name seiner Implementierungen.
Gehört das DOM zu JavaScript?
Nein. Das DOM ist eine API der Webumgebung. Andere JavaScript-Umgebungen wie Node.js stellen andere APIs bereit.
Warum behält JavaScript altes Verhalten bei?
Weil inkompatible Änderungen sehr viele bestehende Webseiten beschädigen könnten. Rückwärtskompatibilität ist eine zentrale Voraussetzung seiner Entwicklung.