Login
Newsletter
Werbung

Fr, 19. Juni 2015, 11:13

Software::Web

WebAssembly: Einheitlicher Bytecode für das Web

Das Projekt WebAssembly will einen Bytecode definieren, der von allen Browsern in einheitlicher und sicherer Weise ausgeführt wird. Durch den Wegfall des Just-in-Time-Compilers sollen sich große Vorteile in der Ausführungsgeschwindigkeit ergeben.

In den frühen Zeiten des WWW galt Java als die ideale Sprache, um Webanwendungen im Browser auszuführen, da es eine plattformunabhängige virtuelle Maschine und eine Sandbox mitbrachte. Doch erwies sich seine Sicherheit als nicht ausreichend und die Komplexität als zu hoch, und schon bald wurde es von JavaScript nahezu komplett verdrängt. Doch auch JavaScript ist nicht ohne Probleme. Abgesehen von den zahllosen Sicherheitslücken und dem allzu einfachen Ausbrechen aus der Sandbox des Browsers wird die dynamische JavaScript-Sprache durch einen Interpreter oder JIT-Compiler geschickt. Auch wenn diese in den letzten Jahren enorm beschleunigt wurden, kann der Start von JavaScript-Code die Webseite spürbar verzögern; große Skripte benötigen auf Smartphones beim Start teilweise über 40 Sekunden zum Laden und Starten.

Das Projekt WebAssembly will mit diesem Problem Schluss machen. Dabei will es JavaScript nicht ersetzen, sondern eine Alternative bereitstellen. Die ersten Entwürfe sehen vor, dass WebAssembly einen Bytecode definiert, der in die JavaScript-Interpreter integriert wird. Somit kann deren Infrastruktur genutzt werden. JavaScript-Code wird dadurch zunächst nicht schneller, denn dazu müsste er zuerst in den Bytecode compiliert werden. Diesen Compiler gibt es aber zunächst nur für C++.

Zur Beschleunigung von JavaScript gibt es heute bereits asm.js. Dieses Projekt sorgt dafür, dass JavaScript-Code, der entsprechend deklariert wurde, beim Laden vor der ersten Ausführung in Maschinencode compiliert wird. asm.js kommt aber nur mit einer Teilmenge der JavaScript-Syntax zurecht und erfordert somit speziell geschriebenen Code. Dieser kann jedoch sehr schnell ausgeführt werden und soll mit der Zeit, wenn die Browser-Unterstützung für asm.js besser wird, in der Geschwindigkeit noch gesteigert werden. Doch der Nachteil, umfangreichen JavaScript-Code zumindest vor dem ersten Start laden zu müssen, bleibt.

So war asm.js aufgrund seiner Beschränkungen nicht genug für die Initiatoren von WebAssembly, unter denen sich Entwickler von Mozilla, Chromium, Edge und WebKit befinden. Die ersten Entwürfe für WebAssembly sind erst im Anfangsstadium, die weitere Arbeit wird in der gleichnamigen Arbeitsgruppe beim W3C koordiniert. Die Entwicklung findet offen auf Github statt. Mit an Bord ist auch Brendan Eich, der Erfinder von JavaScript, der vor einem guten Jahr von einem Web-Mob von seinem Posten als Mozilla-Geschäftsführer weggeschrieben wurde.

WebAssembly wird einen Bytecode definieren, was an andere Lösungen wie LLVM erinnert. Doch LLVM ist nicht plattformunabhängig und hat andere Zielsetzungen, was die Verwendung im Browser ausschließt. Denn für WebAssembly compilierte Programme sollen in jedem Browser laufen, der das unterstützt. Der Bytecode soll auf lange Zeit stabil bleiben und allenfalls Ergänzungen erhalten, die kompatibel sind. Das erste Produkt des Projekts soll nur ein Minimalziel verfolgen, damit die Entwicklung nicht zu lange dauert. Deshalb wird es zunächst nur einen C++-Compiler geben, der WebAssembly-Bytecode erzeugt. Bevor die Browser WebAssembly-Bytecode nativ unterstützen, kann er von einem JavaScript-Modul ausgeführt werden (Polyfill), was immer noch den Vorteil der geringen Download-Größe bringen und schnell genug sein soll. Weitere Informationen liefert auch Brendan Eich in seinem Blog.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung