Dank der mächtigen Features aus dem Umfeld der Progressive Web Apps (PWA) erleben Webanwendungen derzeit einen massiven Schub. Doch neben PWA gibt es eine zweite Technologie, die dem Web einmal mehr native Power verleiht: WebAssembly (Wasm). Dieser Bytecode für das Web bringt in C oder C# geschriebene Programme mit nahezu nativer Performance in den Browser und eröffnet damit interessante Anwendungsszenarien und Migrationsstrategien.

WebAssembly wird in seiner ersten Fassung von den aktuellen Ausgaben der vier großen Browser Google Chrome, Microsoft Edge, Mozilla Firefox und Apple Safari unterstützt. Das zugehörige Binärformat ist für eine möglichst kleine Dateigröße und geringe Ladezeit optimiert. Damit möchte man ein nahezu native Ausführungsgeschwindigkeit erzielen. Gleichzeitig möchte Wasm die offene Natur des Web wahren: Etwa zu Debugging-Zwecken gibt es daher auch eine textuelle Repräsentation.

Hätten Sie es geahnt? Hier ticken C# und die ASP.NET-Templatesprache Razor.

In der aktuellen Fassung enthält WebAssembly jedoch keine Unterstützung für Garbage Collection, weswegen sie sich in dieser Version primär als Kompilierungsziel für Sprachen wie C, C++ oder Rust eignet. Das hielt das Xamarin-Team jedoch nicht davon ab, seine Mono-Runtime nach Wasm zu kompilieren. Somit kann schon heute C#-Code im Web betrieben werden, wodurch die Ausführung von bestehendem, nicht-UI-bezogenem Programmcode wie etwa Berechnungslogik im Browser möglich wird. Darauf aufbauend experimentiert Microsoft außerdem mit dem Projekt Blazor. Dahinter steckt ein Single-Page-Application-Framework, bei dem die von ASP.NET bekannte Templating-Sprache Razor und C# zur Implementierung der Logik zum Einsatz kommt und das ebenfalls bereits jetzt im Browser läuft.

Wasm kann mit dem JavaScript der Website kommunizieren und ist daher als weitere Ergänzung der Webplattform zu sehen, nicht als Ersatz für JavaScript. Die Technologie darf nicht auf mehr native Features zugreifen. als es JavaScript kann – so ist Wasm denselben Browsersicherheitsfeatures unterworfen, und Programme werden in einer Sandbox ausgeführt. Zum Experimentieren mit WebAssembly hat Mozilla vor wenigen Tagen die Vorschaufassung seines WebAssembly Studio herausgegeben, einer Online-IDE mit Beispielprojekten, die das Kompilieren etwa von C-Code in Wasm erlaubt und diesen direkt im Browser ausführen kann.

Paart man die nahezu native Ausführungsgeschwindigkeit von WebAssembly mit den mächtigen Features von Progressive Web Apps, etwa Offlinefähigkeit oder Push-Benachrichtigungen, erhält man Anwendungen, die ihren nativen Gegenstücken auf Augenhöhe begegnen. Und einmal mehr stellt man fest: Das Web wird nativ(er).