Web statt Windows

JavaScript wird erwachsen
Langsam, wenig elegant und bestenfalls eine Spielerei, um Knöpfe auf Websites einzufärben oder Formulareingaben zu prüfen - dieser Ruf haftet der Skriptsprache JavaScript an. Dabei hat sie sich längst zu einer ernstzunehmenden Programmiersprache gemausert, in der komplexe Applikationen realisiert werden. Sie laufen im Browser und stehen damit plattformübergreifend ohne Installation überall zur Verfügung. Webseiten werden somit zu Applikation mit Anbindung an den Datenbankserver. War der Browser früher eine Art Terminal, führt er heute einen Teil der Applikationslogik selbst aus.
Knackpunkt ist die Geschwindigkeit der aktuellen JavaScript-Engines, denn sie bremsen JavaScript-Applikationen aus und beschränken damit die Möglichkeiten für Entwickler. Doch genau in diesem Punkt hat sich 2008 einiges getan, wovon Nutzer 2009 profitieren werden. Vor allem Mozilla, Webkit und Google lieferten sich 2008 einen Wettkampf um die schnellste JavaScript-Implementierung, wobei es nicht um Leistungssteigerungen von wenigen Prozent geht. Mit den deutlich schneller werdenden JavaScript-Engines werden DOM-Operationen zunehmend zum Flaschenhals, denn diese werden von den JavaScript-Benchmarks nicht erfasst. Zudem stellt sich zunehmend die Frage nach einem umfassenden Sicherheitskonzept für Applikationen die im Browser laufen und Daten aus unterschiedlichen Quelle mischen. Ansätze wie die der OpenAjax Alliance sind nur ein Anfang.
Den Auftakt in Sachen JavaScript-Engines machte Mitte 2008 das Webkit-Projekt mit der neuen JavaScript-Engine SquirrelFish , die in Webkits JavaScript-Benchmark SunSpider rund 60 Prozent schneller läuft als die aktuelle JavaScript-Implementierung von Safari. Im Vergleich mit WebKit 3.0 war SquirrelFish im Juni 2008 rund viermal schneller.
Im August 2008 folgte Mozillas TraceMonkey , womit einzelne Javascript-Funktionen 20-mal schneller ablaufen. Der Tracing-Mechanismus zeichnet die unterschiedlichen Pfade, die beim Durchlauf einer Schleife auftreten können, während der Laufzeit auf und generiert kompilierten Code, der erneut genutzt werden kann, wenn später ein solcher Pfad wieder erreicht wird. Im JavaScript-Benchmark SunSpider war die erste Veröffentlichung von TraceMonkey in einer Entwicklerversion von Firefox 3.1 mehr als 60 Prozent schneller als die Implementierung in Firefox 3.0.
Googles V8 soll es allen zeigen
Anfang September 2008 folgte dann ein regelrechter Paukenschlag: Google stellte mit Chrome einen eigenen Browser vor , der zwar auf der Rendering Engine Webkit basiert, aber eine von Grund auf neue JavaScript-Implementierung namens V8 mitbringt. V8 war zum Start schneller als alle anderen JavaScript-Engines in den zu diesem Zeitpunkt aktuellen Entwicklerversionen. Google brachte auch einen neuen Benchmark ins Spiel, an dem die Entwicklung von V8 ausgerichtet wurde. Entsprechend schneidet Chrome hier besonders gut ab. Die JavaScipt-Engine der mittlerweile vorliegenden Version 1.0 von Chrome ist noch einmal 30 Prozent schneller als die der ersten Betaversion.
Nur wenige Tage nach der Veröffentlichung von Chrome reichten die Mozilla-Entwickler einige Patches für TraceMonkey nach und vermeldeten: " Firefox ist schneller als Chrome " . Das gilt zwar nicht für Googles V8-Benchmark, aber immerhin im SunSpider konnte Firefox mit TraceMonkey an Chrome vorbeiziehen.
Das Webkit-Team meldete sich Mitte September mit SquirrelFish Extreme wieder zu Wort. Bytecode-Optimierungen, polymorphes Inline Caching, ein schlanker "context threaded" JIT-Compiler und eine neue Implementierung regulärer Ausdrücke, die von der neuen JIT-Infrastruktur Gebrauch macht, sorgten für eine weitere Leistungssteigerung, so dass SquirrelFish Extreme in den Benchmarks SunSpider und Domaeo an der Konkurrenz vorbeiziehen konnte. Brauchte Safari 3.1.2 in unserem Test damals noch 2.553,2 ms für den SunSpider, schaffte ihn die damals aktuelle Entwicklerversion von Webkit mit SquirrelFish Extreme in nur 862,0 ms. Im V8-Benchmark verbesserte sich Webkit von 263 Punkten (Safari 3.1.2) auf 1.351 Punkte.
Opera hat seine JavaScript-Engine für die Version 9.5, die Mitte 2008 erschien, komplett neu geschrieben . Zum Erscheinen schlug Opera damit alle Konkurrenten. Opera 10 bekommt mit Presto 2.2 eine neue Rendering-Engine, die das Tempo des Browsers weiter steigern soll und den Acid-3-test korrekt rendert.
Der Internet Explorer hinkt dieser Entwicklung hinterher. Auch die Beta 2 des Internet Explorer 8 liegt abgeschlagen hinter allen anderen Browsern. Je komplexer Webapplikationen werden und sich damit die steigende Leistung der JavaScript-Engines zunutze machen, desto unangenehmer dürfte das für Nutzer des Internet Explorer werden. Denn was unter Firefox, Safari, Opera und Chrome flüssig läuft, könnte im Internet Explorer zur Hängepartie werden. Entwickler, die Rücksicht auf Microsofts Browser nehmen, schränken ihre Möglichkeiten erheblich ein.
Firebug, jQuery & Co. machen das Leben leichter
Neben der reinen Geschwindigkeit gibt es weitere Faktoren, die die Entwicklung komplexer Programme in JavaScript unterstützen. Entwicklerwerkzeuge wie Firebug , Webkit Inspector oder Dragonfly machen Entwicklern das Leben deutlich leichter, bringen unter anderem Debugger und Profiler mit. Zudem unterstützen immer mehr integrierte Entwicklungsumgebungen explizit auch JavaScript .
Hinzu kommen robuste JavaScript-Bibliotheken wie beispielsweise jQuery(öffnet im neuen Fenster) oder Prototype(öffnet im neuen Fenster) , die wesentliche Basisfunktionen unabhängig vom Browser zur Verfügung stellen und Entwicklern vor allem den Umgang mit dem Internet Explorer erleichtern.
| |
| Video: Dimitri Gaskin über jQuery |
Projekte wie Dojo , YUI oder Ext gehen deutlich weiter und bieten ausgereifte JavaScript-Komponenten für unterschiedliche Einsatzzwecke an, aus denen sich Anwendungen zusammensetzen lassen. So lassen sich Anwendungen in vergleichsweise kurzer Zeit erstellen, ohne eigene Ajax-Komponenten mit hohem Zeitaufwand auf die unterschiedlichen Browser anzupassen.
Andere preschen weiter vor: Adobe hat offiziell sein Projekt Alchemy vorgestellt, mit dem sich C- und C++-Bibliotheken in Flash nutzen lassen. Zur Demonstration wurde mit Hilfe von Alchemy Ogg Vorbis auf Flash portiert und auch die Spiele Quake und Zelda laufen in Flash . Eigentlich geht es Adobe aber eher darum, Entwicklern die Möglichkeit zu geben, in Webanwendungen auf bestehende Bibliotheken zurückzugreifen. Der entsprechende Code wird dann zwar langsamer ausgeführt als bei einer kompilierten Applikation, läuft aber immerhin deutlich schneller als JavaScript.
Einen ähnlichen Weg geht Google mit dem Native Client , mit dem sich Browseranwendungen nativ ausführen lassen, ohne den Umweg über eine interpretierte Sprache wie JavaScript. Webentwickler erhalten direkten Zugriff auf die CPU und können dort ihren Code in voller Geschwindigkeit ausführen lassen. Das kann praktisch sein, um in einer Anwendung auf Audio- und Videocodecs zurückzugreifen, ohne dass der Nutzer sie zuvor auf seinem System installieren muss.
HTML 5 hält Einzug in die Browser
Einen weiteren Schub für das Web der Applikationen soll HTML 5 bringen. Obwohl die Standardisierung noch nicht abgeschlossen ist, halten einige der neuen Funktionen bereits heute Einzug in die Browser. Treibende Kraft dabei ist Google mit Gears . Das als Open Source entwickelte Browser-Plug-in erweitert bestehende Browser um neue Funktionen, ist aber zugleich ein Experimentierfeld für die neuen Spezifikationen. Manche haben WebKit, Mozilla und Opera bereits übernommen und direkt in die Browser integriert.
Zu diesen Neuerungen zählt die Unterstützung von Audio- und Videotags, mit denen sich Audio- und Videodateien direkt im Browser abspielen lassen, ohne Plug-ins. WebKit unterstützt die von Apple favorisierten Standards H.264 und AAC von Hause aus, Mozilla und Opera setzten bei ihren Browsern auf die freien Formate Ogg Vorbis und Ogg Theora.
Zu den weiteren Neuerungen zählt ein lokaler Zwischenspeicher, den Entwickler nutzen können, um Anwendungsdaten auf dem Rechner des Nutzers zu speichern. Ergänzt wird er durch eine ebenfalls lokale Datenbank im Browser, auf die Webapplikationen per SQL zugreifen können. Die sogenannten Web-Worker-Threads erlauben es, JavaScript im Hintergrund auszuführen, so dass komplexe und länger laufende Scripte den Browser nicht ausbremsen. Über das Geolocation-API kann eine Webseite abfragen, wo sie ein Nutzer aufruft.
All dies ist keine Zukunftsmusik, Gears stellt diese Funktionen heute schon für Internet Explorer, Firefox, Safari, Chrome und den Mobile Internet Explorer bereit, Googles Handy-Betriebssystem Android bringt Gears mit und Opera Mobile wird dies künftig ebenfalls tun. Anfang 2009 wird Firefox 3.1 einige dieser Funktionen direkt unterstützen und die Entwicklerversionen der anderen Browser enthalten bereits entsprechende Implementierungen - lässt man die Internet Explorer bei dieser Betrachtung einmal außen vor.
Wozu das Ganze?
Das Web wandelt sich. Stand früher die Anzeige von Inhalten im Vordergrund, wird das Web und damit der Browser zunehmend zur Plattform für Applikationen. Diese laufen unabhängig vom Betriebssystem, stehen an jedem Rechner mit allen Daten bereit und können darüber hinaus offline genutzt werden. Das Betriebssystem rückt dabei in den Hintergrund, es ist egal, ob Windows, MacOS X oder Linux läuft - etwas, das Microsoft sicher weniger gefällt. Noch steht diese Entwicklung am Anfang, verschiedene Ansätze konkurrieren miteinander oder ergänzen sich.
Da sind zum einen Lösungen, um Web und Desktop miteinander zu verschmelzen - von eher proprietären Ansätzen wie AIR oder Silverlight bis hin zu offenen wie Prism oder Titanium , die eher einen Browser mit Desktopanbindung darstellen.
Social Networks, allen voran Facebook und Initiativen wie OpenSocial, stellen zudem einen Container für webbasierte Applikationen zur Verfügung, die die Brücke zu Nutzerdaten und den Kontakten der Nutzer schlagen. Mit Initiativen wie Facebook Connect oder Googles Friend Connect bleiben Applikationen dabei nicht auf die großen Seiten als Container beschränkt, jede Website kann nun Applikationen beherbergen und Nutzer miteinander vernetzen.
Während Facebook mit mittlerweile 140 Millionen aktiven Nutzern einen zentralistischen Ansatz hat, setzen andere auf Zusammenarbeit und offene Protokolle als Basis einer dezentralen Infrastruktur, beispielsweise OpenID und OAuth, die 2008 zahlreiche neue Unterstützer fanden. Auch Yahoo mischt hier kräftig mit und versucht sich neu zu erfinden, was sich unter anderem im Y!OS niederschlägt, einer Art Betriebssystem für das Web.
Das bedeutet nicht, dass Desktopapplikationen in den kommenden Jahren verschwinden. Es entwickelt sich eine neue, reichweitenstarke Plattform für komplexe Anwendungen, die durchaus in Konkurrenz zu Microsoft Windows steht. Das Betriebssystem stellt in diesem Szenario nur noch grundlegende Funktionen bereit, auf denen ein Browser aufsetzt.
In einigen Bereichen hat sich das Web als Anwendungplattform längst einen festen Platz erkämpft. Ein gutes Beispiels dafür ist das Thema Webmail, das bei vielen Nutzern schon seit Jahren den lokalen E-Mail-Client ersetzt. Zudem sind im Unternehmensumfeld in den vergangenen Jahren viele Anwendungen in den Browser gewandert.
Natürlich gilt dies nicht für jede Form von Anwendung. Aber für typische Office-Applikationen, erst recht für den Heimgebrauch, für die elektronische Steuererklärung und heimische Finanzverwaltung, für die Verwaltung der eigenen Fotosammlung samt Bearbeitungsfunktionen, für Lernsoftware und so manches Spiel könnte das Web die bessere Plattform sein.



