Original-URL des Artikels: https://www.golem.de/1110/86952.html    Veröffentlicht: 13.10.2011 10:23    Kurz-URL: https://glm.io/86952

Javascript

Vom Kinderkram zur universellen Scriptsprache

Einst als "Spielzeugsprache" betitelt, hat sich Javascript zu einer erfolgreichen Skriptsprache entwickelt, in der sogar ganze Betriebssystem-GUIs geschrieben werden. Golem.de hat mit dem Erfinder der Sprache, Brendan Eich, über Vergangenheit, Gegenwart und Zukunft von Javascript gesprochen.

Der Name Javascript sei etwas irreführend, aber damit müssten wir leben, sagt Brendan Eich Golem.de. Netscape, bei dem Eich die erste Version von Javascript entwickelte, habe den Hype um Java damals nutzen wollen und sich darum für den Namen Javascript entschieden. Mit Java habe die Skriptsprache aber bekanntlich nie etwas zu tun gehabt. Heute scheine es so, als würde Javascript Java den Rang ablaufen.

Javascript sei anfangs lediglich dazu gedacht gewesen, Webseiten etwas Dynamik zu verleihen, sagt Eich. Aber bereits in Netscape 2.0 seien erste Applikationen in Javascript geschrieben worden. Eich zeichnete, wie er erzählt, schon 1997 als unerfahrener Redner auf einer Java-Konferenz eine Zukunft für Javascript, die später wahr wurde: die Möglichkeit für Nutzer, Javascript herunterzuladen, um damit Inhalte zu erzeugen. Die Technik ist heute äußerst populär. Entwickler schreiben Javascript, welches dann Markup beziehungsweise DOM-Elemente im Browser erzeugt, wie es auch bei Facebook der Fall ist.

First Mover Advantage

Als wesentlichen Erfolgsfaktor für Javascript bezeichnet Eich dessen "First Mover Advantage". Netscape habe es vor Microsoft geschafft, Javascript auf den Markt zu bringen. Nur zehn Tage hatte Eich im Jahr 1995 Zeit, um die erste Version von Javascript zu schreiben. Und so wird die Sprache heute in nahezu allen Browsern unterstützt. Das verschaffe ihr eine große Reichweite, sagt Eich. So komme Javascript mittlerweile zusammen mit Node.js auch auf dem Server zum Einsatz.

Als weitere Erfolgsfaktoren nennt Eich die Robustheit von Javascript, die er als "ausreichend" bezeichnet. Es werde aber daran gearbeitet, die Scriptsprache noch robuster zu machen, sagt er. Zudem habe sich eine gute Community entwickelt und Javascript sei außerdem leicht zu erlernen.

Brendan Eich: Hektik führt zu Fehlern

Durch den großen Zeitdruck bei der Entwicklung von Javascript sind aber auch Faktoren in die Sprache eingeflossen, die Eich heute bereut und für die er sich entschuldigt. Er nennt unter anderem die Funktion eval(), das With-Statement und die Tatsache, dass das globale Objekt auf oberster Ebene umgesetzt ist. Die ersten beiden dieser drei Fehler seien mittlerweile in den Standardisierungsorganisationen behoben worden, sagt Eich und verweist auf den Strict-Mode in Ecma-Script 5.

Das Problem mit dem globalen Objekt soll laut Eich in der nächsten, der 6., Edition von Ecma-Script behoben werden. Zwar liegt dafür schon ein Entwurf vor und es gibt prototypische Implementierungen für Spidermonkey, der Javascript-Engine von Firefox. Eich rechnet aber damit, dass es noch einige Jahre dauern wird, bis der neue Standard verabschiedet wird. Zudem arbeitet ein Team in München an der Umsetzung des Standardentwurfs für Googles Javascript-Engine V8, so dass es voraussichtlich möglich sein wird, noch vor Fertigstellung der Spezifikation mehrere Implementierungen auf Interoperabilität zu testen.

Coffescript als Brücke in die Zukunft

Künftige Versionen von Javascript sollen Erweiterungen beinhalten, die Entwickler nutzen können, um Javascript-Programme schneller zu machen. Diese werden aber möglicherweise nicht in allen Browsern zur Verfügung stehen. Entwickler werden die entsprechenden Funktionen explizit nutzen müssen, wie Eich erklärt. Um das zu vereinfachen, kann ihm zufolge beispielsweise auf Coffescript ausgewichen werden. Darin geschriebener Code wird in Javascript übersetzt, so dass die Programme nur neu erzeugt werden müssen, um von den Erweiterungen profitieren zu können - vorausgesetzt, Coffescript verwendet diese Neuerungen dann.

Als Beispiel für eine solche Erweiterung führte Eich Typed Arrays an, die für WebGL eingeführt wurden. Sie ermöglichen es, umfangreiche Arrays aus Gleitkomma- oder Ganzzahlen zu erzeugen, die dann effizienter verarbeitet werden können. Denkbar sei zudem, Schleifenvariablen als solche zu markieren, damit Javascript-Engines diese zuverlässig erkennen und behandeln können, was die Effizienz ebenfalls steigern würde. Die letzte Meile der Javascript-Performance-Optimierung nennt Eich das.

Parallelisierung

Große Erwartungen setzt Eich auch in das von Intel entwickelte Parallel Javascript. Die Erweiterung mit Codenamen River Trail wandelt Javascript in WebCL um, nutzt dabei aber keine neuen Schlüsselwörter in Javascript, abgesehen von parallelen Arrays. Diese können dann auf die Multi-Core-Hardware, die sich heute in vielen Desktoprechnern und zunehmend auch in mobilen Endgeräten befindet, besonders effizient verarbeitet werden. Der Vorteil: Der Ansatz soll für Entwickler leicht zugänglich sein.

Eich geht davon aus, dass der Ansatz in die Javascript-Standards einfließen wird, so dass künftig die Javascript-Engines dafür verantwortlich sind, dass solche Datenstrukturen parallel abgearbeitet werden.

Absage an Google Native Client

Mozillas wiederholt geäußerte Ablehnungen von Googles Native Client, mit dem sich nativer Code plattformübergreifend im Browser ausführen lässt, unterstreicht Eich im Gespräch mit Golem.de. Der Native Client sei zwar ein sehr interessantes Forschungsprojekt und zudem gut umgesetzt. Eich sieht jedoch zwei Probleme bei Googles Ansatz: Zum einen bedürfe der Native Client eines sehr umfangreichen APIs im Browser (Pepper API), das derzeit nur in Chrome zur Verfügung stehe und auch durch dessen Quellcode definiert sei. Daher sei es sehr unwahrscheinlich, dass das Pepper API von anderen Browserherstellern aufgegriffen werde. Zum anderen hält Eich nativen Code im Web für keine gute Idee, denn der Ansatz führe dazu, dass die APIs mit der Zeit extrem ausgeweitet werden müssten, was auf allen Seiten sehr viele Ressourcen beanspruche. Die komplexe Vielfalt auf der Serverseite müsse derzeit auf der überschaubaren Zahl von Webstandards abgebildet werden, die Browser unterstützen. Das erleichtere die Interoperabilität, sagt Eich. Eine überschaubare Anzahl von APIs sei ein wichtiger Faktor, um die Offenheit des Webs zu erhalten.

Er geht auch davon aus, dass etwas Ähnliches wie Native Client in einer plattformübergreifenden Version eher seinen Weg in Betriebssysteme finden werde, um beispielsweise Plugins besser abzusichern.



Javascript ein Sicherheitsrisiko?

"Jede Software enthält Sicherheitsrisiken und jeder, der etwas anderes behauptet, versucht, Schlangenöl zu verkaufen", sagt Eich. Javascript hält er allerdings für relativ sicher, da die Skriptsprache sehr weit verbreitet und im Vergleich zu anderen Programmiersprachen sehr ausgiebig getestet sei. Eine absolute Sicherheit gebe es aber nicht.

Das weit verbreitete Java-Plugin sei im Vergleich sehr häufig von Sicherheitslücken betroffen, denn es sei nicht so ausgiebig geprüft und werde nicht ausreichend gepflegt, sagt Eich. Das Java-Plugin sei daher die häufigste Quelle für Exploits, die von den "bösen Jungs" verkauft werden.

Wird Javascript bald Adobe Flash unterstützen?

Für die Zukunft hofft Eich, dass Plugins durch Javascript unnötig werden. Der Webstack bietet heute ausreichend Leistung und die notwendigen Grafikfunktionen, um dieses Ziel zu erreichen.

So hofft Eich auch, dass sich Adobe Flash künftig direkt im Browser ausführen lässt - mit einer in Javascript umgesetzten Runtime. Ein entsprechendes Projekt hat der Münchner Webentwickler Tobias Schneider mit Gordon Anfang des vergangenen Jahres angekündigt und im April 2010 auf der jsConf in Washington vorgestellt.

Einige Mozilla-Entwickler arbeiten an pdf.js. Das ist ein komplett in Javascript realisierter PDF-Betrachter, der künftig in Firefox integriert werden soll. Der Browser soll so in die Lage versetzt werden, die meisten PDF-Dateien ohne Plugin anzuzeigen.  (ji)


Verwandte Artikel:
Skriptsprache: Javascript-Nachfolger von Google   
(14.09.2011, https://glm.io/86445 )
Javascript-Erfinder: Brendan Eich übergibt Spidermonkey an David Mandelin   
(22.06.2011, https://glm.io/84382 )
Firefox 3.1: TraceMonkey beschleunigt Javascript erheblich   
(23.08.2008, https://glm.io/61928 )
Streit um die Zukunft von JavaScript   
(02.11.2007, https://glm.io/55802 )

© 1997–2019 Golem.de, https://www.golem.de/