mozilla
Ihre Suchergebnisse

    Über JavaScript

    Dieses Kapitel stellt JavaScript vor und führt in die grundlegenden Konzepte der Sprache ein.

    Was ist JavaScript?

    JavaScript ist eine plattformübergreifende und objektorientierte Skriptsprache. Sie ist schlank und leichtgewichtig, jedoch als alleinstehende Sprache nicht besonders nützlich. Sie ist dafür geschaffen in andere Produkte und Applikationen  - wie z.B. Webbrowser - integriert zu werden. Innerhalb einer Hostumgebung kann JavaScript mit den Objekten dieser Umgebung verknüpft werden, um eine programmatische Kontrolle zu ermöglichen.

    Der Kern von JavaScript besteht aus verschiedenen Objekten wie z.B. Array,  Date und Math und einer Kernausstattung von Sprachelementen wie Operatoren, Kontrollstrukturen und Anweisungen. Die Kernelemente der Sprache können für unterschiedliche Zwecke durch weitere Objekte ergänzt werden:

    • Clientseitiges JavaScript erweitert den Kern der Sprache, indem Objekte zur Kontrolle des Browsers (Firefox oder ein anderer Webbrowser) und dessen Document Object Model (DOM) bereitgestellt werden. Zum Beispiel erlaubt clientseitiges JavaScript einer Applikation, Elemente auf ein HTML-Formular zu platzieren und auf Ereignisse, wie z.B. Mausklicks, Formulareingaben oder Seitennavigation zu reagieren.
    • Serverseitiges JavaScript erweitert den Kern der Sprache, indem Objekte bereitgestellt werden, die es ermöglichen, JavaScript auf einem Server laufen zu lassen. Zum Beispiel kann mit serverseitigen Erweiterungen die Kommunikation mit einer Datenbank, kontinuierliche Informationsbeschaffung bei Ausführung einer Applikation oder die Dateimanipulation auf dem Server ermöglicht werden.

    Durch die Funktionalität von JavaScript's LiveConnect kann Java- und JavaScript-Code miteinander kommunizieren. Von JavaScript aus können Instanzen von Java-Objekten erzeugt und deren öffentliche Methoden und Felder angesprochen werden. Von Java aus kann auf die Eigenschaften und Methoden von JavaScript-Objekten zugegriffen werden.

    JavaScript wurde von Netscape eingeführt und zuerst von Netscape verwendet.

    JavaScript und Java

    JavaScript und Java sind zum Teil ähnlich, doch andererseits auch sehr verschieden. JavaScript hat Gemeinsamkeiten mit Java, aber hat keine so starke Typisierung und starke Typüberprüfung. Javascript folgt weitgehend der Syntax von Java-Ausdrücken, Namenskonventionen und grundlegenden Konstruktionen zum Programmablauf, weshalb die Sprache von LiveScript in JavaScript umbenannt wurde.

    Im Gegensatz zu Java's Kompilerzeit-System mit Klassen, die sich aus Deklarationen zusammensetzen, verwendet JavaScript ein Laufzeitsystem, das auf wenigen Datentypen basiert, die numerische Werte, boolsche Werte und Zeichenketten repräsentieren. JavaScript verwendet außerdem ein prototypenbasiertes Objektmodell anstelle eines weiter verbreiteten klassenbasierten Objektmodells. Das prototypenbasierte Modell ermöglicht dynamische Vererbung - d.h. was vererbt wird kann zwischen den einzelnen Objekten variieren. JavaScript unterstützt zudem Funktionen, ohne spezielle deklarative Anforderungen. Funktionen können z.B. Eigenschaften von Objekten sein, die als schwach typisierte Methoden ausgeführt werden.

    JavaScript ist - verglichen mit Java - eine sehr frei geformte Sprache. Es müssen nicht alle Variablen, Klassen und Methoden sofort deklariert werden und bei Eigenschaften wird nicht zwischen öffentlich, privat oder geschützt unterschieden. Es müssen keine Interfaces implementiert werden und Variablen, Parameter und Rückgabewerte von Funktionen werden nicht explizit typisiert.

    Java ist eine klassenbasierte Programmiersprache, entworfen für schnelle Programmausführung und Typsicherheit. Typsicherheit bedeutet, dass z.B. ein Java-Integer nicht zu einer Objektreferenz gecastet, oder durch die Manipulation von Bytecode auf privaten Speicher zugegriffen werden kann. Bei Java's klassenbasiertem Modell setzen sich Programme exklusiv aus Klassen und ihren Methoden zusammen. Javas Vererbung und starke Typisierung erfordern dicht verschachtelte Objekthierarchien. Diese Anforderungen machen Java-Programmierung komplexer als JavaScript-Programmierung.

    Auf der anderen Seite ist JavaScript mit einer Reihe von schmaleren, dynamisch typisierten Programmiersprachen verwandt, wie z.B. HyperTalk und dBASE. Diese Skriptsprachen offerieren Programmier-Werkzeuge für ein weit größeres Publikum, aufgrund ihrer einfacheren Syntax, speziellen eingebauten Funktionalität, und minimalen Anforderungen für die Erstellung von Objekten.

    Tabelle 1.1 JavaScript verglichen mit Java
    JavaScript Java
    Objektorientiert. Keine Unterscheidung zwischen Typen von Objekten. Vererbung wird durch den Prototype-Mechanismus realisiert. Eigenschaften und Methoden können dynamisch jedem Objekt hinzugefügt werden. Klassenbasiert. Objekte werden in Klassen und Instanzen unterteilt. Vererbung durch Festlegung der Klassenhierarchie. Klassen und Instanzen können keine Eigenschaften oder Methoden dynamisch hinzugefügt werden.
    Variable Datentypen werden nicht deklariert (dynamische Typisierung). Variable Datentypen müssen deklariert werden (statische Typisierung).
    Es kann nicht automatisch auf die Festplatte geschrieben werden. Es kann nicht automatisch auf die Festplatte geschrieben werden.

    Mehr Informationen zu den Unterschieden zwischen JavaScript und Java findet man im Kapitel Feinheiten des Objektmodells.

    Javascript und die ECMAScript-Spezifikation

    Netscape arbeitete mit Ecma International zusammen - eine private, internationale Normungsorganisation zur Normung von Informations- und Kommunikationssystemen und Unterhaltungselektronik. Die Organisation war früher unter dem Namen ECMA (European Computer Manufacturers Association) bekannt und soll für die Standardisierung einer internationalen Programmiersprache basiernd auf dem Kern von JavaScript sorgen. Diese standardisierte Version von JavaScript, genannt ECMAScript, verhält sich in allen Applikationen äquivalent, welche den Standard unterstützen. Unternehmen können den offenen Standard bei der Entwicklung für ihre Implementierung von JavaScript benutzen. Der ECMAScript-Standard ist in der Spezifikation ECMA-262 dokumentiert.

    Der Standard ECMA-262 wurde auch von der ISO (International Organization for Standardization) als ISO-16262 übernommen. Es gibt eine PDF-Version des ECMA-262 (veraltete Version) auf der Website von Mozilla. Außerdem wird die Spezifikation auf der Ecma International Website bereitgestellt. Die ECMAScript-Spezifikation beschreibt nicht das Document Object Model (DOM), welches vom World Wide Web Consortium (W3C) standardisiert ist. Das DOM definiert die Art und Weise, in welcher Form ein HTML-Dokument für den Zugriff mit Skripten bereitgestellt wird.

    Beziehungen zwischen JavaScript-Versionen und ECMAScript-Editionen

    Netscape arbeitete eng mit Ecma International zusammen, um die ECMAScript-Spezifikation (ECMA-262) zu entwerfen. Die folgende Tabelle beschreibt die Beziehung zwischen Javascript-Versionen und ECMAScript-Editionen.

    Table 1.2 JavaScript-Versionen und ECMAScript-Editionen
    JavaScript version Relationship to ECMAScript edition
    JavaScript 1.1 ECMA-262, Edition 1 basiert auf JavaScript 1.1.
    JavaScript 1.2 ECMA-262 war nicht fertig, als JavaScript 1.2 herausgegeben wurde. JavaScript 1.2 ist aus folgenden Gründe nicht vollständig kompatibel mit ECMA-262, Edition 1:
    • Netscape entwickelte zusätzliche Features in JavaScript 1.2, die bei ECMA-262 noch nicht bedacht wurden.
    • ECMA-262 wurden zwei neue Features hinzugefügt: Internationalisierung mit Hilfe von Unicode und einheitliches Verhalten über alle Plattformen hinweg. Diverse Features von JavaScript 1.2, wie z.B. das Date-Objekt, waren plattformabhängig und arbeiteten mit plattformspezifischem Verhalten.

    JavaScript 1.3

    JavaScript 1.3 ist voll kompatibel mit ECMA-262, Edition 1.

    JavaScript 1.3 löst die Inkonsistenz zwischen JavaScript 1.2 und ECMA-262 auf, während alle zusätzlichen Features von JavaScript 1.2 erhalten bleiben, abgesehen von den Operatoren == und !=, welche geändert wurden, um ECMA-262 zu entsprechen.

    JavaScript 1.4

    JavaScript 1.4 ist voll kompatibel mit ECMA-262, Edition 1.

    Die dritte Version der ECMAScript-Spezifikation war nicht fertiggestellt, als JavaScript 1.4 herausgegeben wurde.

    JavaScript 1.5 JavaScript 1.5 ist voll kompatibel mit ECMA-262, Edition 3.
    Anmerkung: ECMA-262, Edition 2 besteht aus kleineren redaktionellen Veränderungen und Fehlerbehebungen bei der Edition 1 Spezifikation. Die aktuelle Version der TC39-Arbeitsgruppe von Ecma International ist ECMAScript Edition 5.1.

    Die JavaScript-Referenz beschreibt, welche Features der Sprache mit ECMAScript konform sind.

    JavaScript wird immer Features beinhalten, die nicht Teil der ECMAScript-Spezifikation sind. JavaScript ist kompatibel mit ECMAScript, während noch weitere Features zur Verfügung stehen.

    JavaScript-Dokumentation im Vergleich zur ECMAScript-Spezifikation

    Die ECMAScript-Spezifikation ist ein Satz von Anforderungen für die Implementierung von ECMAScript. Sie ist nützlich, wenn man wissen möchte, ob ein JavaScript-Feature von einer ECMAScript-Implementierung unterstützt wird. Wenn man nur JavaScript-Code schreiben möchte, der nur Features, die von ECMAScript unterstützt werden, beinhaltet, dann lohnt es sich in die ECMAScript-Spezifikation zu schauen.

    Das ECMAScript-Dokument ist nicht dafür vorgesehen, Skriptprogrammierern zu helfen. Diese sollten die JavaScript-Dokumentation benutzen, um sich über das Schreiben von Skripten zu informieren.

    JavaScript und ECMAScript-Terminologie

    Die ECMAScript Spezifikation benutzt eine Terminologie und Syntax, mit denen reine Javascript-Programmierer nicht sehr vertraut sein dürften. Obgleich sich die Beschreibung der Sprache bei ECMAScript unterscheidet, verhält sich die Sprache selbst genauso. JavaScript unterstützt jede Funktionalität, die in der ECMAScript-Spezifikation beschrieben ist.

    Die JavaScript-Dokumentation beschreibt Aspekte der Sprache, die für JavaScript-Programmierer geeignet sind. Zum Beispiel:

    • Auf das globale Objekt wird in der JavaScript-Dokumentation nicht eingegangen, weil es nicht direkt benutzt wird. Die Methoden und Eigenschaften des Globalen Objekts, welche von Javascript-Programmierern benutzt werden, werden in der Javascript-Dokumentation diskutiert, jedoch dort Top-Level-Funktionen und Eigenschaften genannt.
    • Der parameterlose (zero-argument) Konstruktor mit Number- und String-Objekten wird in der JavaScript-Dokumentation nicht beschrieben, weil er von geringem Nutzen ist. Ein Number-Konstruktor ohne ein Argument gibt +0 zurück und ein String-Konstruktor ohne Argument "" (einen leeren String).
     

    Schlagwörter des Dokuments und Mitwirkende

    Schlagwörter: 
    Mitwirkende an dieser Seite: eminor, fscholz
    Zuletzt aktualisiert von: fscholz,