Die stille Revolution in der Webentwicklung: WASM

von Max

Webapps sind fester Bestandteil unseres Alltags. Die Applikationen wie Google MapsInstagram oder Spotify laufen in jedem Browser, auf jedem Endgerät und sind genauso fähig, wie fest installierte Programme und Apps auf dem Handy oder dem Computer. Mit dem entscheidenden Nachteil, dass sie oft langsam sind und lange zum Laden brauchen. Web Assembly (WASM) soll das jetzt grundlegend ändern.

Wer heute eine Webapp programmiert hat die Qual der Wahl. Es gibt jede Menge Programmiersprachen und noch viel mehr Frameworks, die sich dazu anbieten: Python, Java, PhP, Javascript mit React, Lavarel, Django, …

Frameworks sind digitale Werkzeugkästen. Sie bieten häufig genutzte Funktionen wie Dropdown-Menüs. Dadurch sparen Entwickler:innen Zeit und können schneller arbeiten. 

Man kann sich zusätzlich noch entscheiden, ob die Anwendung server- oder clientseitig läuft:

Wenn man das Dropdown öffnen will durch Anklicken, muss irgendwo Programmcode ausgeführt werden, um die angezeigte HTML-Website neu zu berechnen. Das passiert dann entweder auf dem Server (serverseitig), oder auf dem Nutzergerät im Browser (clientseitig).

Beide Ansätze haben ihre Vor- und Nachteile:

Wenn man jeden Klick eines Buttons erst an den Server schicken muss, hat man bei jeder Interaktion eine gewisse Wartezeit, weil man auf die Antwort über das Internet warten muss. Bei langsamem Internet oder wackliger Verbindung wird die Benutzung schnell zur Folter.

Wenn man stattdessen auf den Nutzergerät (Client) den Klick verarbeitet, entfallen die langen Wege des Internets und die App bleibt auch funktionsfähig, wenn das Internet mal 2 Minuten weg ist. Aber der Client braucht den gesamten Programmcode der App, muss beim Aufrufen der Website erstmal bis zu 100 Mb Code herunterladen und anschließend auf einem potenziell langsamen Gerät lange rechnen.

Serverseitige Apps sind stark abhängig vom Internet, Clientseitige vom Gerät des Nutzers

Clientseitige Anwendungen sind zwar mit vielen verschiedenen Technologien umsetzbar, am Schluss gibt es aber eine entscheidende Einschränkung:

Der Browser „spricht“ nur Javascript.

Man kann mit anderen Sprachen die Applikation bauen und anschließend zu Javascript umwandeln, darauf basieren zum Beispiel Typescript und Plotly in Python.

Man hat also eine App, geschrieben in Typescript, welche kompiliert wird zu Javascript. Das wird an den Client geschickt, der die Javascript Datei einließt in einen Interpreter. Dieser liest Zeile für Zeile, erzeugt passenden Bytecodeund schickt diesen weiter ans Gerät um Dinge zu berechnen.

Andere statisch kompilierte Sprachen wie C++ oder Java erzeugen direkt Byte– oder Maschinencode und sparen sich den teuren Schritt des Interpreters.

 Am Ende des Tages ist es aber das vergleichsweise langsame Javascript, welches im Browser ausgeführt wird.

 Diese Programmiersprache hat sich zum universellen Standard in allen Browsern durchgesetzt. Die Gründe dafür sind vielfältig, was allerdings definitiv nicht dazugehörte, war die Performance.

Javascript ist LANGSAM. C++ ist etwa 10 mal so schnell, nur sagt dieser Vergleich recht wenig aus, da man C++ nicht im Browser ausführen kann.

Javascript ist langsam und alternativlos – bis jetzt

Man kommt um die langsame Sprache Javascript nicht herum, wenn man auf dem Client etwas berechnen will.Zumindest war das so, denn seit 2017 unterstützen die großen Browser FirefoxSafari und Chrome für Computer die Sprache WebAssembly (WASM): die Monopolstellung von Javascript ist damit gebrochen. Seit 2023 haben auch die Versionen der Browser für Mobilgeräte nachgezogen und mit Ausnahme von InternetExplorer und OperaMini, ist WASM heute in 97.3% aller Browser ausführbar.1 

WASM und die kompatiblen Geräte und Browser. Quelle: Screenshot von caniuse.com/wasn

Der Performance Boost bewegt sich dabei im Bereich Faktor 1.5 bis 10 mal schneller als Javascript, je nach Aufgabe, benutztem Gerät und Browser. Generell liegt WASM dabei nah an der Performance nativer Sprachen, wie C++.2

WASM ist in allen Browsern verfügbar und so schnell wie C++

Das alles klingt super, wo also ist der Haken?

WASM ist noch relativ neu. Es fehlen Frameworks, die auf WASM aufbauen und es fehlt an Erfahrung der Community.

Und zusätzlich stellt sich auch immer die Frage, ob eine Applikation wirklich mehr Performance braucht: Die Online-ToDo Liste ist vermutlich nicht allzu rechenintensiv, und die Umstellung auf die neue Technologie ist zu aufwändig, es lohnt sich schlicht nicht.

Trotzdem: WASM ist in allen Browsern verfügbar, wird bereits genutzt und die Relevanz wird weiter steigen.

Allein die Tatsache, dass das gesamte Ökosystem der verschiedenen Browseranbieter einheitlich WASM eingeführt hat, gibt uns ein klares Indiz über die Bedeutung.

In Zukunft werden sich alle Frontendentwickler:innen die Frage stellen können: Baue ich meine Anwendung für Javascript oder für WASM?

Und vielen dürfte die Antwort in Zukunft immer leichter fallen.


Beitrag veröffentlicht

in

von

Schlagwörter:

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert