Seit 2017 unterstützen moderne Browser bereits WebAssembly (Wasm), seitdem ist der Hype mal größer, mal kleiner. Aber was ist WebAssembly überhaupt und warum wurde es geschaffen?
WebAssembly ist ein standardisierter Bytecode, der in einer leichtgewichtigen virtuellen Maschine ausgeführt wird, zum Beispiel im Browser. Wer da jetzt direkt an Java, die JVM oder gar Java Applets denkt, ist auf den ersten Blick nicht so falsch unterwegs. Allerdings ist Wasm deutlich leichtgewichtiger, ohne lange Ladezeiten und in einer sicheren Sandbox. Der initiale Fokus auf den Browser legt nahe, dass es ein Ersatz für JavaScript sein soll. Es ist aber vielmehr eine Ergänzung.
Unterstützt wird Wasm vor allem durch die Sprachen C/C++, Rust und Go. Diese Sprachen können direkt in Wasm-Bytecode übersetzt werden. Für andere Sprachen wurde die Runtime nach Wasm übersetzt und sie können so den eigentlichen Code ausführen, z. B. C# oder Python (noch nicht stabil).
2019 wurde mit WASI (WebAssembly System Interface) ein Standard für eine Stand-Alone-Laufzeitumgebung vorgeschlagen, die eine Nutzung auch außerhalb des Browsers erlaubt. Auch die GraalVM unterstützt inzwischen WASI/Wasm. Einige versprechen sich von WASI aufgrund der Portabilität und Geschwindigkeit auch die nächste Stufe bei der Entwicklung von Software für die Cloud.
Als Antwort auf die Ankündigung von WASI twitterte Solomon Hykes, einer der Miterfinder von Docker, dass Docker wohl nicht entstanden wäre, wenn es Wasm bereits gegeben hätte. Im Vergleich zu Docker sieht man allerdings die Schwächen des neuen Standards deutlich: Tooling und User/Developer Experience sind stark ausbaufähig. Auch die Berichte der Early Adopters (unter anderem für die Mediaplayer der BBC und Disney oder auch Google Earth und Figma) sprechen neben den Erfolgen (Geschwindigkeit, Portabilität) immer auch von eigenen Systemen oder Hacks, die hinzu gebaut werden mussten. Mit Wasm ist Stand jetzt auch kein Zugriff auf das DOM einer Webseite möglich. Das muss weiterhin über JavaScript geschehen und diese Kommunikation ist noch hakelig.
Insgesamt ist die Kommunikation rund um WebAssembly sehr von Technik geprägt. Es geht schnell in spannende und herausfordernde Details, es fehlt aber oft der – für die weite Verbreitung notwendige – Überblick über Technologie sowie konkrete Einsatzmöglichkeiten.
Szenarien für den Einsatz gibt es durchaus: Neben den bereits erwähnten Mediaplayern ist das zum Beispiel die Portierung von großen Desktopanwendungen in den Browser, bei der die Logik im Browser ausgeführt wird und um ein modernes Frontend ergänzt wird. Außerdem gibt es Anwendungsfelder im Bereich Gaming, AR/VR sowie Audio- und Videobearbeitung. Im Vergleich zu JavaScript, wo der komplette Code zunächst heruntergeladen und interpretiert werden muss, verspricht Wasm hier durch die bereits erfolgte Kompilierung und Optimierung eine zuverlässige, hohe Performance.
Wasm will mehr als ein Webstandard sein und in Zukunft auch die Cloud ins Visier nehmen. Aus technischer Sicht bringt es dafür bereits vieles mit, aber die Reife des Projekts und des Ökosystems verhindern – aktuell – eine größere Verbreitung jenseits der großen Webanwendungen.
Dieser Artikel erschien am 02.122022 im Rahmen des codecentric-Innovations-Newsletters. Wenn ihr immer direkt über die neusten IT-Trends und -Techniken informiert sein wollt, könnt ihr den Newsletter hier abonnieren.
Weitere Beiträge
von Matthias Niehoff
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Gemeinsam bessere Projekte umsetzen.
Wir helfen deinem Unternehmen.
Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.
Hilf uns, noch besser zu werden.
Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.
Blog-Autor*in
Matthias Niehoff
Head of Data
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.