JavaScript/Entstehung und Standardisierung

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Obwohl JavaScript heute unumstritten die Programmiersprache für clientseitige Webanwendungen ist, hat es in der Vergangenheit Sonderwege, aber auch ebenso viele Bestrebungen zur Standardisierung gegeben.

Versionsgeschichte von JavaScript[Bearbeiten]

JavaScript ist eine Sprache, die 1995 von Netscape eingeführt und lizenziert wurde. Es war also eine firmeneigene, proprietäre Angelegenheit, und Netscape diktierte, woraus das „offizielle“ JavaScript bestand. Andererseits versuchte Netscape schon frühzeitig, JavaScript nicht als willkürliche Eigenentwicklung dastehen zu lassen, sondern der Sprache den Charakter eines Standards zu verleihen. Dazu spannte man die Organisation ECMA (en) (European Computer Manufacturers Association) ein. Unter dem Namen ECMAScript wurden die Grundlagen von JavaScript als Industriestandard deklariert. In der Spezifikation ECMA-262 (en) wurde dieser Standard festgeschrieben.

Microsoft konterte auf seine Weise. Der Internet Explorer interpretiert zwar JavaScript, daneben aber auch die Microsoft-eigene Sprachvariante JScript. Diese Sprache implementierte Microsoft nicht zuletzt, um sich aus den Lizenzvorgaben von Netscape herauszuwinden und das, was bei Netscape unter JavaScript lief, selbständig erweitern zu können. JScript umfasste die ganze Palette von JavaScript, doch daneben auch noch etliche spezielle Befehle für den Zugriff auf das Dateisystem und Betriebssystem Windows (das Ganze bezeichnet Microsoft als "Windows Scripting Host"). JScript war insgesamt also viel mächtiger als JavaScript, doch es war auch für andere Aufgaben gedacht. Es hat eine ganz eigene Versionenpolitik, die nichts mit der von JavaScript gemein hat. Bekannter als die JScript- Versionen sind jedoch nach wie vor die JavaScript-Versionen, und wenn Sie JavaScript verwenden, geben Sie in der Regel auch „JavaScript“ als Sprache an und nicht „JScript“. Der Internet Explorer kommt damit klar.

Das Gerangel zwischen Netscape und Microsoft um die bessere JavaScript-Unterstützung bewirkte auf jeden Fall eine Menge Frustration bei Web-Programmierern und Anwendern. Viele Dinge mussten ziemlich umständlich programmiert werden, weil die Fähigkeiten und Eigenheiten der verschiedenen JavaScript-Interpreter der verschiedenen Browser und Browser-Versionen lauter Wenns und Abers erforderten, was sich im Quellcode von JavaScript niederschlug. Vor allem bei komplexeren JavaScript-Anwendungen, etwa bei dynamischem HTML, wurde das „doppelte Programmieren“ zur lästigen Pflicht.

Version Veröffentlichung Entsprechung Netscape Navigator Mozilla Firefox Internet Explorer Opera Safari Google Chrome
JavaScript 1.0 1996 2.0 3.0
JavaScript 1.1 1996 3.0
JavaScript 1.2 1997 4.0-4.05
JavaScript 1.3 1998 ECMA-262 1st edition / ECMA-262 2nd edition 4.06-4.7x 4.0
JavaScript 1.4 Netscape Server
JavaScript 1.5 2000 ECMA-262 3rd edition 6.0 1.0
  • 5.5 (JScript 5.5)
  • 6 (JScript 5.6)
  • 7 (JScript 5.7)
  • 8 (JScript 6)
  • 6.0
  • 7.0
  • 8.0
  • 9.0
JavaScript 1.6 2005 1.5 + Array extras + Array & String generics + E4X 1.5
  • 3.0
  • 3.1
JavaScript 1.7 2006 1.6 + Pythonic generators + Iterators + let + destructuring assignments 2.0
  • 3.2
  • 4.0
1.0
JavaScript 1.8 2008 1.7 + Generator expressions + Expression closures 3.0
JS 1.8.1 1.8 + geringfügige Updates 3.5
JS 1.8.5 1.8.1 + ECMAScript 5 Compliance 4 9.0 (JScript 9.0)

Versionsgeschichte nach John Resig[1]

Document Object Model (DOM) des W3C[Bearbeiten]

Um diesem Missstand auf Dauer abzuhelfen, wurde das W3-Konsortium eingeschaltet, damit eine allgemeine Sprachnorm entsteht. Das W3-Konsortium erarbeitete dabei jedoch keinen konkreten JavaScript-Standard, sondern ein allgemeines Modell für Objekte eines Dokuments. Dieses Modell sollte eine Script-Sprache, die sich als Ergänzungssprache zu Auszeichnungssprachen wie HTML versteht, vollständig umsetzen. Vom W3-Konsortium erhielt das Modell die Bezeichnung Document Object Model (DOM). 1998 wurde DOM Level 1 eine offizielle W3-Empfehlung (recommendation), die 2000 in einer zweiten Ausgabe vorlag. 2004 wurde DOM Level 3 als Empfehlung verabschiedet.

Ein wichtiger Aspekt des DOM ist, dass es nicht nur für HTML ergänzende Script-Sprachen konzipiert ist, sondern auch für Script-Sprachen, die jegliche XML-gerechte Auszeichnungssprache erweitern sollen. Das DOM orientiert sich daher in seinem Kern nicht mehr an bestimmten HTML-Elementen. Stattdessen geht es in abstrakter Weise von einem „Dokument“ aus (das in XHTML geschrieben sein kann, aber auch in einer anderen XML-basierten Sprache). Es definiert, wie sich auf die einzelnen Elemente dieses Dokuments zugreifen lässt und welche Manipulationsmöglichkeiten es gibt. Da man aber bei der Entwicklung des DOM auch auf die Gegebenheiten und die Verbreitung von HTML und JavaScript Rücksicht nehmen wollte, wurde dem so genannten „Kern-DOM“ ein „HTML-Anwendungs-DOM“ zur Seite gestellt. Letzteres versucht, Teile des „gewachsenen“ JavaScript und MS-JScript zu sanktionieren und Bestandteile des „Kern-DOM“ darin zu integrieren.

Über die W3-Einstiegsseite zum DOM (en) können Sie die aktuelle Weiterentwicklung des Document Object Models beim W3-Konsortium verfolgen.

Symbol Bedeutung
DOM 1.0 Objekt, Eigenschaft oder Methode nach den Vorgaben des Document Object Models, Version 1.0. Kommt innerhalb der vorliegenden Dokumentation in der Objektreferenz vor, um Objekte, Eigenschaften und Methoden auszuzeichnen.
DOM 2.0 Objekt, Eigenschaft oder Methode nach den Vorgaben des Document Object Models, Version 2.0.
Kommt innerhalb der vorliegenden Dokumentation in der Objektreferenz vor, um Objekte, Eigenschaften und Methoden auszuzeichnen.
DOM 3.0 http://www.w3.org/TR/DOM-Level-3-Core/

Versionsgeschichte von ECMAScript (ECMA-262)[Bearbeiten]

Version publiziert Unterschiede zur Vorgängerversion
ECMA 1 1997 erste Version
ECMA 2 1998 Änderungen zwecks Kompatibilität zum internationalen Standard ISO/IEC 16262
ECMA 3 Dezember 1999 *reguläre Ausdrücke
4 abgebrochen Wegen Uneinigkeit in Bezug auf die Zukunft der Sprache wurde die weitere Entwicklung des komplexen Entwurfes zu ECMAScript 4 eingestellt. Einige Ideen werden in ES6 wieder aufleben.
ECMA 5 2009 * erweiterte Fehlerprüfung im "strict mode"
  • Unterstützung von JSON hinzugefügt.
  • Unklare Sprachkonstrukte von ECMAScript 3 werden entschärft
  • neue Features wie getter- und setter-Methoden, [2]
5.1 2011 Entspricht dem internationalen Standard ISO/IEC 16262:2011, Version 3
ECMA 6 "Harmony" Juni 2015 http://www.ecma-international.org/ecma-262/6.0/
  • Neue Syntax für komplexe Applikationen wie Klassen und Module, die aber mit ähnlicher Terminologie wie in ECMAScript 5 (strict mode) definiert werden können.
  • Neue Sprachbestandteile wie for/of-Schleifen, teilweise an Python angelehnte Syntax usw.
7 in Arbeit Weiterführung der mit ES6 begonnenen Änderungen.[3]

[4]

Ausblick[Bearbeiten]

Im Augenblick scheint die zukünftige Verwendung von JavaScript einfach wie nie, da Microsoft in den neuen Versionen des Internet Explorers viele der im ECMA-Standard festgelegten Methoden übernimmt. So müssen Programmierer häufig nur einen sogenannten Fallback für den IE8 berücksichtigen.

Vielleicht wird sich, wenn die Browserunterstützung der neuen Methoden und Funktionen vorhanden sein wird, der heute übliche Einsatz von Frameworks wie jQuery teilweise erübrigen.

Quellen[Bearbeiten]

  1. http://ejohn.org/blog/versions-of-javascript/
  2. Changes to JavaScript, Part 1: EcmaScript 5
  3. ES Wiki strawman:strawman
  4. ECMAScript® 2015 Language Specification 6th Edition / June 2015