
Kevin Erath
Geschäftsführer
Veröffentlicht am
12. September 2020

Die WebAssembly Core Specification ist ein W3C-Standard, der eine virtuelle Maschine mit dazugehörigen Bytecode beschreibt. Neben dieser Spezifikation beschreibt die WebAssembly Working Group derzeit noch die WebAssembly Web API zum Starten und Ausführen von WebAssembly im Browser, sowie das WebAssembly JavaScript Interface für den Zugriff und Datenaustausch zwischen WebAssembly und JavaScript. Anhand dieser Spezifikationen wird bereits klar, dass der Fokus von wasm, die Kurzform für WebAssembly, der Browser und damit das Web ist. Unterstützung erfährt WebAssembly inzwischen auch von den wichtigsten Browsern-Herstellern Apple, Google, Microsoft und Mozilla. Deren Browser unterstützten wasm in der Version 1.1. Diese Version wurde vom W3C Anfang Dezember 2019 als offizieller Webstandard verabschiedet. Interessierte können die Entwicklung des Standards auf GitHub verfolgen.
Mit Ankündigung von wasm in 2015 wurden performancekritische Anwendungen als Ziel angegeben. So wurde ein effizienter Bytecode mit geringem Befehlssatz gewählt, um die Programmgrößen klein zu halten. Ebenso ermöglicht der Bytecode eine deutlich schnellere Ausführung als es mit JavaScript der Fall ist. Dennoch ist die Sicherheit durch vergleichbare Sandboxing-Techniken, wie sie auch bei JavaScript zum Einsatz kommt, sichergestellt. Der standardisierte Bytecode ermöglicht eine Plattformunabhängigkeit.
Da es sich bei wasm um einen Bytecode handelt, muss dieser durch einen Compiler erzeugt werden. So kann der LLVM-zu-Web-Compiler emscripten verwendet werden, um C bzw. C++ in WebAssembly zu kompilieren. Des Weiteren gibt es inzwischen viele Programmiersprachen und Plattformen, die Mechanismen bereitstellen, um ein Kompilat für wasm zu erzeugen. So ermöglicht Microsoft mit Blazor WebAssembly in C# geschriebene .NET-Programme im Browser auszuführen. Auch Rust ist eine beliebte Alternative, um Programme zu schreiben. Selbst eine Kompilierung von JavaScript nach wasm ist möglich. Mit WebAssembly stehen also eine Vielzahl an Sprachen zur Verfügung. Ein gemischter Einsatz in einem Projekt ist derzeit allerdings nicht (sinnvoll) möglich. Selbst der Zugriff auf JavaScript bzw. von JavaScript auf eine Methode innerhalb wasm funktioniert je nach Sprache/Plattform noch nicht immer zufriedenstellend.
Kritiker sehen mit WebAssembly hingegen die Browser-Sicherheit gefährdet. Auch haben manche Sorgen vor einer Rückkehr von Problemen wie bei Flash bzw. Java-Applets. Durchforstet man das Netz zu Sicherheit und WebAssembly, findet man tendenziell mehr positive als negative Beiträge. Dennoch wird wasm noch zögerlich eingesetzt. So kommt eine Studie zum Ergebnis, dass nur 0,0002 % der Top-Webseiten WebAssembly einsetzen. Auf der anderen Seite wurde der Standard auch erst Ende 2019 offiziell verabschiedet und Technologien wie Blazor sind ebenso noch taufrisch. Mit WASI ist ein weiterer Standard in Arbeit, der WebAssembly auch außerhalb des Browsers ermöglichen soll. Mit Wasmtime und Wasmer gibt es auch bereits zwei Möglichkeiten WebAssembly überall laufen zu lassen. Besonders hier könnte wasm eine große Zukunft beschieden sein. Selbst Solomon Hykes, ein Mitgründer von Docker, sieht das so, letztes Jahr twitterte er: „If WASM+WASI existed in 2008, we wouldn’t have needed to created Docker.“

Hier schreibt
Kevin Erath
Als Mitbegründer und Geschäftsführer von pep.digital verbringe ich zwar nicht mehr jeden Tag ausschließlich damit, coole Lösungen für unsere Kunden zu realisieren. Trotzdem finde ich immer wieder die Zeit, mich auch mal tiefer in die Technik einzutauchen und meine Erkenntnisse hier im Blog zu teilen. Und ehrlich gesagt, das Unternehmen und unsere tollen Mitarbeiter:innen weiterzuentwickeln, macht mir mindestens genauso viel Spaß.
Weitere interessante Artikel
Wir möchten hier nicht nur über Neuigkeiten aus dem Unternehmen berichten, sondern auch das Wissen und die Erfahrung unserer Experten teilen.

Buchvorstellung: Mit Flow Design zu Clean Code
Flow Design ist eine einfache Entwurfsmethodik, die zu besserem Code führt. Endlich gibt es neuen Lesestoff zu dieser Methodik.

Kevin Erath
Geschäftsführer

Bene berichtet von zwei Jahren bei pep.digital
Bene ist seit zwei Jahren bei pep.digital tätig. Als Softwareentwickler ist für ihn besonders spannend, dass er jeden Tag durch umfangreiche Aufgaben neu gefordert wird. Ihm gefällt dabei, Entscheidungen zu treffen und den Entwicklungsprozess zu optimieren. Er arbeitet derzeit hauptsächlich in einem Kundenprojekt an der Entwicklung eines großen Lieferantenportals mit. Im Beitrag gibt er weitere Einblicke in sein Leben als Softwareentwickler bei pep.digital.
pep.digital