Mit Brendan Eich ist eine der bekanntesten Anekdoten der Programmiersprachengeschichte verbunden: JavaScript sei „in zehn Tagen“ entstanden. Das stimmt, wenn damit der erste Prototyp gemeint ist, den Eich im Mai 1995 bei Netscape entwickelte. Es führt jedoch in die Irre, wenn daraus der Eindruck entsteht, die heutige Sprache sei damals bereits fertig gewesen. Modernes JavaScript ist das Ergebnis von drei Jahrzehnten Standardisierung, konkurrierenden Implementierungen, Korrekturen und Kompromissen mit einer Grundregel des Webs: Bestehende Seiten sollen weiter funktionieren.
Gerade diese Spannung macht Eichs Geschichte interessant. Unter enormem Zeitdruck entwarf er eine Sprache, die sich leicht in Webseiten einbetten ließ und zugleich Ideen aus Scheme und Self hinter einer für C- und Java-Programmierer vertrauten Syntax verbarg. Aus einer kurzfristigen geschäftlichen Anforderung wurde die universelle native Programmiersprache des Browsers.
Vor Netscape: Erfahrung mit Sprachen und Systemen
Brendan Eich wurde 1961 in Pittsburgh geboren. Er studierte Mathematik und Informatik und erwarb 1986 einen Masterabschluss an der University of Illinois Urbana-Champaign. Vor Netscape arbeitete er unter anderem bei Silicon Graphics und MicroUnity an Compilern und Systemsoftware.
Diese Erfahrung ist für das Jahr 1995 wichtig. Eich improvisierte nicht ohne theoretischen Hintergrund. Er kannte die Zielkonflikte zwischen Sprachentwurf, Implementierung und Leistung und interessierte sich besonders für Scheme, einen Lisp-Dialekt, in dem Funktionen zentrale Bausteine sind.
1995: Webseiten bekommen Verhalten
Mitte der 1990er-Jahre bestand das Web noch überwiegend aus Dokumenten. HTML beschrieb eine Seite, der Browser stellte sie dar, und viele Interaktionen erforderten eine neue Anfrage an den Server.
Netscape Navigator gehörte zu den führenden Browsern. Netscape wollte Autoren ermöglichen, direkt im Browser Verhalten hinzuzufügen, ohne eine aufwendige Entwicklungsumgebung zu benötigen. Parallel arbeitete das Unternehmen mit Sun an Java, das eher für strukturierte Anwendungen vorgesehen war. Die neue Skriptsprache sollte leichter sein, unmittelbar aus HTML heraus funktionieren und keine vorherige Kompilierung benötigen.
Eich kam im April 1995 zu Netscape. Im Mai baute er in ungefähr zehn Tagen den Prototyp Mocha. Vor der Veröffentlichung wurde weitergearbeitet: Aus Mocha wurde LiveScript und Ende 1995 schließlich JavaScript, zu einer Zeit, als Java große öffentliche Aufmerksamkeit erhielt.
Der Name sorgt bis heute für Verwirrung. JavaScript ist keine vereinfachte Java-Version. Typsystem, Objektmodell und Laufzeitumgebung unterscheiden sich deutlich. Die sichtbarste Ähnlichkeit liegt in der bewusst vertrauten Syntax der C-Familie mit geschweiften Klammern, Operatoren und Kontrollstrukturen.
Scheme und Self unter der vertrauten Oberfläche
Unter dieser Oberfläche behandelt JavaScript Funktionen als Werte erster Klasse. Sie lassen sich in Variablen speichern, an andere Funktionen übergeben oder als Ergebnis zurückgeben. Diese aus Scheme vertraute Flexibilität passt besonders gut zu einem ereignisgesteuerten Browser, in dem Funktionen auf Klicks, Eingaben oder abgeschlossene Operationen reagieren.
Beim Objektmodell orientierte sich Eich unter anderem an Self. Klassen bilden nicht den grundlegenden Mechanismus; stattdessen kann ein Objekt die Suche nach Eigenschaften über eine Prototypenkette an ein anderes Objekt delegieren. Die viel später eingeführte class-Syntax ersetzt dieses Modell nicht, sondern bietet lediglich eine vertrautere Schreibweise darüber.
JavaScript erhielt außerdem dynamische Typisierung und zahlreiche implizite Konvertierungen. Dadurch ließen sich kleine Skripte schnell schreiben, zugleich entstanden aber überraschende Verhaltensweisen. Manche berüchtigte Eigenheit der Sprache lässt sich am besten als Folge des ursprünglichen Kompromisses verstehen: JavaScript musste zugänglich, ausdrucksstark und vor allem sehr schnell verfügbar sein.
Eich entwickelte gleichzeitig die erste Engine, aus der später SpiderMonkey hervorging. Syntax und Implementierung gemeinsam zu entwickeln ermöglichte schnelle Experimente, ließ aber wenig Zeit, Entscheidungen zu überdenken, bevor öffentliche Webseiten von ihnen abhingen.
Wenn Eigenheiten zu Kompatibilitätsverträgen werden
Im Web lässt sich ein veröffentlichter Fehler nur schwer zurücknehmen. Sobald Tausende Websites ein bestimmtes Verhalten voraussetzen, kann eine inkompatible Korrektur diese Seiten beschädigen. Implizite Konvertierungen, historische Gültigkeitsbereichsregeln, das Verhalten von this oder die Koexistenz von null und undefined gehören deshalb zu einem Erbe, mit dem modernes JavaScript umgehen muss.
Diese Einschränkung erklärt sowohl die rauen Kanten als auch die bemerkenswerte Kontinuität der Sprache. Standards führen meist klarere oder sicherere Mechanismen ein, ohne die alten abrupt zu entfernen.
Wichtig ist außerdem die Trennung zweier Ebenen: JavaScript ist nicht der Browser. Die Sprache definiert Werte, Funktionen, Objekte und Operationen. DOM, Ereignisse, fetch oder Speicher-APIs werden von der Webumgebung bereitgestellt. Historische Inkompatibilitäten konnten daher aus der Sprache selbst oder aus den sie umgebenden Browser-APIs stammen.
Von JavaScript zu ECMAScript
Netscapes Erfolg führte rasch zu konkurrierenden Implementierungen. Microsoft brachte JScript in den Internet Explorer, während Browser eigene Verhaltensweisen und APIs entwickelten. Ohne gemeinsame Grundlage mussten Webentwickler mit unterschiedlichem Code für unterschiedliche Browser rechnen.
Netscape legte die Sprache 1996 Ecma International vor. 1997 erschien die erste Ausgabe von ECMA-262 unter dem Namen ECMAScript. Damit wurden die Kernregeln der Sprache nicht länger allein durch das Produkt eines einzelnen Herstellers bestimmt.
JavaScript blieb der historische und alltägliche Name; ECMAScript bezeichnet die standardisierte Spezifikation. Browser implementieren sie und stellen zusätzlich die Web-APIs bereit.
Die Standardisierung verlief nicht geradlinig. Das ehrgeizige Projekt ECMAScript 4 scheiterte in den 2000er-Jahren an grundlegenden Meinungsverschiedenheiten über den Umfang der Änderungen. Der Kompromiss führte 2009 zu ECMAScript 5. ECMAScript 2015 (ES6) brachte anschließend einen großen Entwicklungsschritt mit Modulen, let und const, Klassensyntax, Pfeilfunktionen und zahlreichen weiteren Neuerungen. Danach wechselte die Spezifikation zu einem jährlichen Veröffentlichungsrhythmus.
Das Scheitern von ES4 zeigt: Eine allgegenwärtige Sprache weiterzuentwickeln ist ebenso eine Frage der Governance wie der Technik. Verbesserungen dürfen weder die Implementierungen auseinanderbrechen lassen noch Milliarden Zeilen bestehenden Codes zurücklassen.
Eine Sprache, die ihre Nutzer weiterentwickelten
Die weitere Geschichte von JavaScript reicht weit über Eich hinaus. In den 2000er-Jahren machte Ajax Oberflächen populär, die mit Servern kommunizieren konnten, ohne die gesamte Seite neu zu laden. Bibliotheken und später Frameworks halfen dabei, immer komplexere Anwendungen zu strukturieren.
Ab 2008 steigerten Engines wie V8 die Ausführungsgeschwindigkeit durch Just-in-time-Kompilierung und andere Optimierungen erheblich. 2009 entwickelte Ryan Dahl Node.js, das V8 nutzt, um JavaScript außerhalb des Browsers auszuführen. Damit gelangte die Sprache auf Server, in Entwicklungswerkzeuge und in Umgebungen, die Netscapes Projekt von 1995 nie vorgesehen hatte.
Eich entwickelte weder V8 noch Node.js und entwarf auch nicht persönlich die zahlreichen späteren ECMAScript-Funktionen. Seine historische Leistung liegt im ursprünglichen Sprachkern und in der frühen Standardisierung. Die heutige Plattform ist eine Gemeinschaftsleistung von Standardisierungsgremien, Engine-Teams, Browserherstellern, Bibliotheksautoren, Entwicklern und Nutzern.
Mozilla und das offene Web
Nach der Übernahme Netscapes durch AOL wurde Eich zu einer wichtigen Figur des Mozilla-Projekts und übernahm dort technische und leitende Funktionen. Firefox, 2004 veröffentlicht, trug dazu bei, den Wettbewerb zwischen Browsern wiederzubeleben und offene Webstandards voranzubringen.
2014 wurde Eich kurzzeitig CEO von Mozilla, trat jedoch im Zusammenhang mit einer öffentlichen Kontroverse um eine politische Spende aus dem Jahr 2008 zurück. Diese Episode gehört zu seiner beruflichen Biografie, ist aber von der technischen Bewertung seiner Rolle bei JavaScript zu trennen.
2015 gründete er Brave Software mit, das den Browser Brave entwickelt. Dieser legt unter anderem Wert auf Schutz vor Tracking und einen anderen Ansatz bei Onlinewerbung. Das Projekt setzt Eichs Beschäftigung mit Browsern fort, ist aber von Entwurf und Standardisierung JavaScripts getrennt.
Warum Brendan Eich für die Geschichte des Webs wichtig bleibt
Eichs bleibender Beitrag besteht nicht darin, modernes JavaScript allein entworfen zu haben. Entscheidend ist, dass er dem Browser in einer Schlüsselphase des wachsenden Webs eine Sprache gab, die einfach genug für eine schnelle Verbreitung und ausdrucksstark genug war, um weit über kleine Skripte hinauszuwachsen.
Die Einflüsse von Scheme und Self erklären einen Teil dieser Anpassungsfähigkeit: Funktionen erster Klasse, prototypbasierte Objekte und dynamisches Verhalten ermöglichen sehr unterschiedliche Programmierstile. Die damaligen Kompromisse erklären zugleich viele Schwierigkeiten. Beides gehört zur selben Geschichte.
JavaScript zeigt vor allem, wie schnell eine im Web verbreitete Sprache ihrem ursprünglichen Schöpfer entwächst. Sie wird zu einem gemeinschaftlichen Vertrag zwischen Spezifikation, mehreren Engines, APIs, Werkzeugen und einem riesigen Bestand vorhandener Software. Ihr Erfolg beruht ebenso auf dieser Kontinuität wie auf dem ursprünglichen Entwurf.
Zeitleiste
- 1961: Brendan Eich wird in Pittsburgh geboren.
- 1986: Masterabschluss an der University of Illinois Urbana-Champaign.
- April 1995: Eintritt bei Netscape.
- Mai 1995: Entwicklung des Mocha-Prototyps in etwa zehn Tagen.
- 1995: Mocha wird zu LiveScript und anschließend JavaScript.
- 1996: Netscape legt die Sprache Ecma International vor.
- 1997: erste Ausgabe von ECMA-262.
- 1998: Eich wirkt am Aufbau des Mozilla-Projekts mit.
- 2004: Firefox erscheint.
- 2009: ECMAScript 5; Ryan Dahl veröffentlicht Node.js.
- 2014: kurze Amtszeit Eichs als Mozilla-CEO.
- 2015: ECMAScript 2015 und Mitgründung von Brave Software.
- Heute: ECMAScript entwickelt sich weiter; JavaScript bleibt die universelle native Programmiersprache der Webbrowser.
Häufige Fragen
Hat Brendan Eich JavaScript wirklich in zehn Tagen entwickelt?
Er entwickelte im Mai 1995 in ungefähr zehn Tagen den ersten Prototyp Mocha. Vor der Veröffentlichung änderte sich die Sprache weiter und wurde anschließend über Jahrzehnte durch Standards und verschiedene Implementierungen fortentwickelt.
Ist JavaScript eine Version von Java?
Nein. Name und Teile der Oberflächensyntax erzeugen eine irreführende Ähnlichkeit. JavaScript ist dynamisch typisiert und grundsätzlich prototypbasiert; Java wurde mit einem anderen Modell und einer anderen Laufzeitumgebung entworfen.
Was ist der Unterschied zwischen JavaScript und ECMAScript?
ECMAScript ist die Standardspezifikation für den Sprachkern. JavaScript ist der gebräuchliche Name für Implementierungen dieser Sprache. Im Browser arbeitet JavaScript zusätzlich mit Web-APIs wie dem DOM.
Warum verwendet JavaScript Prototypen?
Eich orientierte sich unter anderem an Self. Objekte können die Suche nach Eigenschaften an andere Objekte delegieren. Die moderne Klassensyntax ersetzt diesen Mechanismus nicht, sondern baut darauf auf.
Hat Brendan Eich Node.js entwickelt?
Nein. Ryan Dahl entwickelte Node.js 2009 auf Basis der V8-Engine. Seine Bedeutung zeigt, wie weit JavaScript über seine ursprüngliche Rolle in Webseiten hinausgewachsen ist.
Warum gibt es die alten JavaScript-Eigenheiten noch?
Weil Rückwärtskompatibilität im Web eine zentrale Anforderung ist. Eine Änderung alten Verhaltens könnte weiterhin erreichbare Websites beschädigen. Deshalb entwickelt sich die Sprache meist durch bessere zusätzliche Möglichkeiten weiter, während ein großer Teil ihres historischen Verhaltens erhalten bleibt.