JavaScript Technologieübersicht

Einleitung

Während HTML die Struktur einer Webseite definiert und CSS den Style angibt, mit dem der Inhalt der Webseite dargestellt wird, ermöglicht JavaScript das Erstellen von interaktiven Webseiten und Rich Web Applications.

Der Begriff "JavaScript" umfasst im Kontext von Web-Browsern mehrere Elemente. Darunter befinden sich der Sprachkern (ECMAScript) und einige Web APIs, die auch das DOM (Document Object Model) enthalten.

Sprachkern von JavaScript (ECMAScript)

Der Sprachkern von JavaScript wurde vom ECMA TC39 Kommittee als die Sprache ECMAScript standardisiert. Die aktuellste Version der Spezifikation ist ECMAScript 5.1.

Der Sprachkern wird auch in Umgebungen außerhalb von Webbrowsern eingesetzt, wie zum Beispiel in node.js.

Was gehört alles zu ECMAScript?

Neben anderen Dingen definiert ECMAScript folgende Punkte:

  • Die Sprachsyntax (Regeln zum Parsen, Schlüsselwörter, Kontrollfluss, Objektinitialisierung...)
  • Mechanismen zur Fehlerbehandlung (throw, try/catch, Erstellung von benutzerdefinierten Fehlertypen)
  • Typen (boolean, number, string, function, object...)
  • Das globale Objekt. In Webbrowsern ist dies das window Objekt. ECMAScript definiert hierbei nur die APIs, die nicht browserspezifisch sind. z.B.: parseInt, parseFloat, decodeURI, encodeURI...
  • Vererbungsmechanismus basierend auf Prototypen
  • Eingebaute Objekte und Funktionen (JSON, Math, Array.prototype Methoden, Object introspection methods...)
  • Strict mode

Webbrowserunterstützung

Im August 2014 implementierten die aktuellen Versionen der verbreitesten Webbrowser ECMAScript 5.1. Es sind aber noch ältere Versionen in Verwendung, welche ECMAScript 3 und nur Teile von ECMAScript 5 implementieren. Moderne Webbrowsers implementieren bereits große Teile von ECMAScript 6.

Zukunft

Die vorgeschlagene vierte Version von ECMA-262 (ECMAScript 4 oder ES4) hätte das erste große Update von ECMAScript seit der dritten Version, welche in 1999 veröffentlicht wurde, sein sollen. Im August 2008 wurde der Vorschlag zur vierten Version von ECMAScript  unter dem Projekt ECMAScript Harmony reduziert, welches zum Beispiel Proxies oder das const Schlüsselwort definiert. Der Fortschirtt kann hier verfolgt werden. Die Veröffentlichung der sechsten Hauptversion des Standards wird im Jahr 2015 erwartet.

Internationalization API

Die ECMAScript Internationalization API Specification ist eine Erweiterung zur ECMAScript Sprachspezifikation, welche vom Ecma TC39 Kommittee standardisiert wird. Die Internationalization API bietet Textvergleiche (string Vergleiche), Formatierung von Zahlen, Datum und Zeit für JavaScript Applikationen, und lässt Applikationen die Sprache wählen, um die Funktionalität für die eigenen Bedürfnisse anpassen zu können. Der Standard wurde im Dezember 2012 freigegeben. Der Status über die Implementierung in Webbrowsern ist in der Documentation von Intl object aufgezeichnet.

Die Web APIs und der DOM

WebIDL

Die WebIDL specification verbindet die DOM Technologien und ECMAScript miteinander.

Der Kern des DOM

Das Document Object Model (DOM) ist eine plattform- und sprachunabhängige Konvention zur Repräsentation und Interaktion mit Objekten in HTML, XHTML und XML Dokumenten. Objekte im DOM Baum können über Methoden angesprochen und durch Aufrufen ihrer Methoden verändert werden. Das Core Document Object Model ist von der W3C standardisiert worden. Es definiert sprachspezifische Schnittstellen, welche HTML und XML Dokuments als Objekte abstrahieren und Mechanismen zur Manipulation dieser Abstraktion. Zusätzlich definiert der DOM auch:

  • Die Dokumentstruktur, ein Baummodell, und die DOM Event Architektur im DOM core: Node, Element, DocumentFragment, Document, DOMImplementation, Event, EventTarget, …
  • Eine weniger strenge Definition der DOM Event Architektur und spezifische Events im DOM events.
  • Andere Definitionen wie zum Beispiel DOM Traversal und DOM Range.

Aus der Sicht von ECMAScript werden Objekte, die in der DOM Spezifikation definiert sind,  "host objects" genannt.

HTML DOM

HTML, die Markup-Sprache im Web, ist mit Bezug auf den DOM definiert. HTML liegt eine Schicht über den abstrakten Konzepten vom DOM Kern und definiert zusätzlich die Bedeutung von Elementen. Der HTML DOM beinhaltet beinhaltet zum Beispiel die className Eigenschaft von HTML Elementen oder APIs wie document.body.

Die HTML Spezifikation definiert auch Einschränkungen auf Documenten. So müssen zum Beispiel die direkten Kindelemente der ungeordneten Liste ul alle li Elemente sein, welche die Listeneinträge repräsentieren. Im Allgemeinen verbietet die Spezifikation auch die Verwendung von Elementen und Attributen, die nicht im Standard definiert sind.

Suchen Sie nach dem Document Objekt, Window Objekt, oder anderen DOM Elementen? Besuchen Sie die DOM Dokumentation.

Andere APIs

  • Die setTimeout und die setInterval Funktionen wurden zuerst auf dem Window interface im HTML Standard definiert.
  • XMLHttpRequest. API die das Senden von asynchronen HTTP Request ermöglicht.
  • CSS Object Model. Das CSSOM wird zur Abstraktion von CSS Regeln als Objekte verwendet.
  • WebWorkers. API die die Verwendung von paralleler Verarbeitung ermöglicht.
  • WebSockets. API die eine low-level bidirektionale Kommunikation ermöglicht.
  • Canvas 2D Context. Grafik API für das canvas Element.

Webbrowserunterstützung

Jeder Webbrowser muss erfahren, dass der DOM ein Chaos ist. Die Einheitlichkeit der Webbrowserunterstützung variiert teilweise stark von Feature zu Feature. Die Ursache dafür ist, dass viele der wichtigen DOM Features kaum oder unklare Spezifikationen hatten. Zusätzlich implementieren verschiedene Webbrowser eigene inkompatible Features für überlappende Einsatzszenarien (wie das Event Model vom Internet Explorer). Der aktuelle Trend (Stand Juni 2011) ist, das die W3C und teilweise die WHATWG ältere Features detaillierter definieren, damit die Interoperabilität verbessert werden kann. Diesem Trend folgend verbessern Webbbrowser ihre Implementierungen basierend auf den detaillierten Spezifikationen.

Eine allgemeine aber möglicherweise nicht vollkommen zuverlässiger Ansatz für cross-browser Kompatibilität ist der Einsatz einer JavaScript Bibliothek. Diese Bibliotheken abstrahieren DOM Features und gewährleisten den APIs, dass sie in verschiedenen Webbrowsern einheitlich funktionieren. Einige der meistverbreitesten Frameworks sind jQuery, prototype, und YUI.

Schlagwörter des Dokuments und Mitwirkende

 Mitwirkende an dieser Seite: fl1p, spiegelp
 Zuletzt aktualisiert von: fl1p,