© Nathapol Kongseang/Shutterstock.com
Was ist Wasm?

WebAssembly: Die nächsten Schritte


Im Browser ist WebAssembly bereits angekommen, das Potenzial jedoch ist noch nicht ausgeschöpft. Auch außerhalb von Chrome und Co. könnte der Standard interessante Möglichkeiten eröffnen. Wohin geht die Reise?

Der WebAssembly-Standard steht in den meisten Browsern zur Verfügung und wird bereits in vielen Webanwendungen verwendet. Die Features und APIs sind aktuell zwar noch vergleichsweise rudimentär, die geplanten Erweiterungen der Spezifikation aber vielversprechend. Zudem gibt es einen Standardisierungsvorschlag, der die Verwendung von WebAssembly außerhalb des Browsers ermöglicht. Zeit für einen Ausblick.

WebAssembly (Wasm) ist ein standardisiertes Binärformat, das auf einer stackbasierten virtuellen Maschine ausgeführt wird. Es wurde zwar vor dem Hintergrund entwickelt, ein Binärformat für die Webplattform zur Verfügung zu stellen und so Programmiersprachen abseits von JavaScript in den Browser zu bringen, aber Wasm ist keineswegs auf das Web beschränkt. Ähnlich wie für Java braucht man für die Ausführung von WebAssembly eine Laufzeitumgebung, die virtuelle Maschine, in der das jeweilige Binärformat in Maschinencode übersetzt und dann ausgeführt wird. Diese Umgebung kann im Fall von WebAssembly als Teil des Browsers, in Node.js oder auf beliebigen anderen Plattformen implementiert sein.

Die aktuelle Version 1.0 von WebAssembly ist eine Minimum-Viable-Product-(MVP-)Version, die bereits seit 2017/2018 in allen relevanten Browsern zur Verfügung steht. Dieser erste Standard enthält vornehmlich grundlegende Features, weshalb die Verwendung von Wasm auf einem vergleichsweise geringen Abstraktionslevel stattfindet. Zudem liegt der Fokus auf den Sprachen C, C++ und Rust, da sie über ein manuelles Memory-Management verfügen. Trotz der Einschränkungen ist WebAssembly allerdings bereits ein fester Bestandteil der Webplattform, der Vorteile in verschiedenen Bereichen bringen kann.

Vornehmlich wird der Performancegewinn gegenüber JavaScript als positives Merkmal von Wasm herausgestellt. Schließlich handelt es sich bei WebAssembly um ein Binärformat, das in fast nativer Geschwindigkeit ausgeführt werden kann und weniger Datenmengen verursacht. In der Realität hängt dieser Vorteil aber natürlich vom konkreten Anwendungsfall ab [1], [2]. Unabhängig davon garantiert WebAssembly allerdings eine weitestgehend konsistente Ausführungsgeschwindigkeit in verschiedenen Browsern.

Die Portierbarkeit von Libraries und ganzen Anwendungen aus anderen Sprachen, aktuell vornehmlich aus C und C++, ist eine weitere Stärke von WebAssembly. Ein plakatives Beispiel hierfür ist das Projekt AutoCAD [3], bei dem Teile einer über dreißig Jahre alten Codebasis der Hilfe von WebAssembly ins Web portiert werden konnten. Auch eBay setzt bei der Implementierung eines webbasierten Barcodescanners auf WebAssembly [4]. Dort wird eine von C++ nach Wasm portierte Bibliothek für Barcodes verwendet.

Zusätzlich bringt WebAssembly eine langersehnte Flexibilität in den Browser. Wasm ist schließlich ein standardisiertes Binärformat und deshalb, zumindest in der Theorie, ein Kompilierungsziel für beliebige Sprachen. JavaScript ist somit nicht mehr die einzige Programmiersprache, die nativ im Browser eingesetzt werden kann. Ein Ersatz für JavaScript soll WebAssembly aber offiziell nicht sein [5]. Die Zukunft wird allerdings zeigen, ob das so bleibt.

Was fehlt?

Wie eingangs erwähnt, handelt es sich bei WebAssembly 1.0 um eine minimale Version. Diese hat das Ziel, einen Wasm-Standard zur Verfügung zu stellen, der auf Basis von echtem Communityfeedback stetig erweitert werden kann. Dieses Vorgehen ist vor allem vor dem Hintergrund, dass das Web eine rückwärtskompatible Plattform darstellt, zu begrüßen. Eine stetige Weiterentwicklung in kleinen Iterationen hilft schließlich dabei, dass WebAssembly in die ...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang