Webprogrammierung: Einstieg in WebAssembly

Wasm-Anwendungen sind performanter als JavaScript-Code und eröffnen den Zugriff auf die Ökosysteme von Sprachen wie C/C++ oder Rust.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 8 Kommentare lesen
Einstieg in WebAssembly
Lesezeit: 21 Min.
Von
  • Sven Kölpin
Inhaltsverzeichnis
Mehr zur modernen Webentwicklung

Die Idee, andere Programmiersprachen als JavaScript in den Browser zu bringen, ist fast so alt wie die Programmiersprache selbst. Zahlreiche Versuche, andere Ökosysteme in die Webplattform zu integrieren, sei es über Browser-Plug-ins wie Flash oder mit alternativen Sprachen wie Google Dart, haben sich jedoch nicht durchgesetzt. Erfolgreicher sind JavaScript-Sprachaufsätze wie TypeScript oder Compile-to-JavaScript-Frameworks wie Vaadin. Mit ihnen lassen sich diverse Sprachen und Anwendungen nach JavaScript kompilieren und somit indirekt in den Browser bringen. Unter dem Strich sind diese Vorgehensweisen jedoch nicht optimal, weil sie entweder proprietäre Softwarekomponenten benötigen oder versuchen, etwaige Unzulänglichkeiten von JavaScript durch Werkzeuge zu beheben.

Mit WebAssembly (Wasm) haben die Browserhersteller einen Weg geschaffen, der es zumindest prinzipiell erlaubt, beliebige Programmiersprachen abseits von JavaScript auf eine standardisierte Weise für das Web zu verwenden. WebAssembly definiert ein Binärformat, dessen Ausführung eine Stack-basierte virtuelle Maschine übernimmt. Wasm ist keine neue Programmiersprache, sondern vielmehr ein Kompilierungsziel für diverse Sprachen. Für den Einsatz ist eine Laufzeitumgebung (virtuelle Maschine) vonnöten, die WebAssemblys Binärformat in Maschinencode übersetzt und ausführt.

Die virtuelle Maschine für WebAssembly kann als Teil des Browsers oder auf beliebigen anderen Plattformen implementiert sein. Wasm ist nicht auf die Webplattform beschränkt, auf die das Binärformat ursprünglich ausgelegt war. Dass WebAssembly künftig außerhalb des Webs eine Rolle spielen könnte, zeigt der vor Kurzem ins Leben gerufene Standard WebAssembly System Interface (WASI). Er definiert eine API für die Interaktion von Wasm mit dem jeweiligen Betriebssystem und kommt in Grundzügen beim Cloud-Anbieter fastly zum Einsatz. Die aktuelle Version 1.0 von WebAssembly lässt sich seit 2018 in allen relevanten Browsern verwenden. Zudem ist Wasm seit Dezember 2019 offizieller W3C-Standard und somit fester Bestandteil der Webplattform.