Definition „Wasm“

Was ist WebAssembly?

| Autor / Redakteur: zeroshope / Stephan Augsten

Wasm ist Bestandteil der vier größten modernen Browser, wobei Edge bekanntlich mittlerweile die Chrome-Engine nutzt.
Wasm ist Bestandteil der vier größten modernen Browser, wobei Edge bekanntlich mittlerweile die Chrome-Engine nutzt. (Bild: WebAssembly.org)

WebAssembly ist als Ergänzung zu Javascript im Webbrowser gedacht. Es handelt um einen Bytecode, der dabei helfen soll, die Geschwindigkeit von Webanwendungen zu erhöhen. Allerdings hat das System noch gewisse Schwachstellen.

WebAssembly oder kurz Wasm hat die Aufgabe, einige Unzulänglichkeiten von Javascript zu beseitigen. Diese Sprache ist eigentlich zu unsauber und hat eine zu weiche Syntax für die zentrale Rolle, die sie für die Webentwicklung seit geraumer Zeit spielt. Für die modernen Leistungsanforderungen genügt sie nicht.

Im Kleinen haben sich die Entwickler mit Emscripten beholfen. Dabei werden C-Programme werden kompiliert und in einer virtuellen Maschine des Browsers ausgeführt. Im Großen funktioniert das Ganze allerdigns nicht, da Javascript nicht die nötige Performance bieten kann.

WebAssembly soll genau diese Probleme lösen. Es handelt sich um einen Bytecode, der eine alternative virtuelle Maschine konstituiert, die über ausreichend Leistung verfügt.

WebAssembly einfach erklärt

Was Wasm tut, lässt sich am einfachsten über eine Metapher erklären: Ein Hybrid-Fahrzeug verfügt über einen Elektromotor und eine Benziner-Einheit. Der Elektromotor ist die normale Javascript-Umgebung des Browsers. Für die alltäglichen Aufgaben ist der Motor völlig ausreichend. Allerdings hat er Leistungsgrenzen. In solchen Momenten muss der Benzinmotor (die Wasm-Maschine) zugeschaltet werden, um diese zu beseitigen. Folgende Dinge sind dabei zu berücksichtigen:

  • WebAssembly und die Javascript-Umgebung müssen miteinander kommunizieren können, um festzustellen, wann die zusätzliche Power benötigt wird.
  • Wasm sorgt für sogenannte „Performance-Inseln“ und stellt sich nicht durchgehend weitere Leistung zur Verfügung. Praktisch wird der zu WebAssembly kompilierte Code hierfür in Form von Modulen geladen und ausgeführt.
  • Damit die Module erzeugt werden können, sind Compiler notwendig, die es Wasm-Format verstehen und verarbeiten können.
  • Solche Compiler stehen beispielsweise für C, C++, Rust, Blazor und Clang bereit.
  • Die Compiler müssen dafür sorgen, dass Übergaben in beide Richtungen stattfinden können. Um im Bild zu bleiben: Der Benzinmotor muss mitteilen können, wann seine Leistung nicht mehr benötigt wird und nicht nur Befehle empfangen.

Die Vorteile von WebAssembly

Alle großen Browser-Entwickler (Microsoft, Google, Apple, Mozilla, Opera) treiben die Entwicklung von WebAssembly als Teil der „Open Web“-Plattform voran. Seit 2017 unterstützen alle weit verbreiteten Browser abgesehen vom mittlerweile eingestellten Internet Explorer die zugehörigen Module. Dabei haben sich folgende Vorteile gezeigt:

  • Webanwendungen laden schneller.
  • Die entsprechenden Apps arbeiten effizienter.
  • Wasm-Umgebungen sind sicher, da sie in einer Sandbox ausgeführt werden.
  • Der Bytecode ist offen zugänglich und kann entsprechend für die Entwicklung und das Debugging genutzt werden.
  • Theoretisch ist es sogar möglich, WebAssembly außerhalb von Browsern als virtuelle Maschine zu nutzen. Eine Schnittstelle namens WASI soll dies auch praktisch ermöglichen.

Probleme von WebAssembly

WebAssembly hat vor allem mit einem Problem zu kämpfen: dem Schwierigkeitsgrad der Implementierung. Derzeit können die Wasm-Module nur dadurch im Browser geladen werden, dass entweder manuell ein eigener JavaScript-Lader programmiert wird oder die „Shellseite“ zum Einsatz kommt, die von Emscripten generiert wurde.

Letzteres ist allerdings schwierig und teilweise unmöglich: Viele der Kommandos der Standardbibliothek benötigen eine unterstützende Infrastruktur in der Runtime, die jedoch oft nicht vorhanden ist. Um die obige Metapher noch einmal aufzugreifen: Der Nutzer muss derzeit noch dafür sorgen, dass der Elektromotor dem Benziner jedes Mal erklärt, was verlangt wird. Leider versteht dieser einige Befehle nicht, die deshalb stets wieder erläutert (oder über eine neue und selbst zu erstellende Bibliothek eingespeichert) werden müssen.

Die Entwickler haben für dieses Problem durchaus eine Lösung. script-Tags sollen in Zukunft dabei helfen, die Module zu laden. Bislang hat dieser Ansatz allerdings noch keine sichtbaren Erfolge gebracht.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Aktuelle Beiträge zu diesem Thema

Drei Entwickler-Trends für das Jahr 2020

Fastly-CTO über Web Development

Drei Entwickler-Trends für das Jahr 2020

Moderne Protokolle und der globale Netzausbau sorgen dafür, dass sich das Internet und die Technik dahinter rapide weiterentwickeln. Fastly-CTO Tyler McMullen nennt basierend auf seinen Erkenntnissen aus der Web-Entwicklung drei wichtige Trends für das Jahr 2020. lesen

Bytecode mit WebAssembly erzeugen

Webanwendungen mit Performance nativer Apps

Bytecode mit WebAssembly erzeugen

Wer seinen Web-Apps schon immer zur Leistung nativer Desktop-Anwendungen verhelfen wollte, kann jetzt aufatmen. Ein binäres Befehlsformat namens WebAssembly übernimmt die Schwerstarbeit. lesen

Hyperledger kündigt Grid-Framework an

Supply-Chain-Lösungen aus dem Baukasten

Hyperledger kündigt Grid-Framework an

Supply Chains, oder auch Lieferketten, lassen sich besonders gut mit Blockchain-Technologien abbilden. Das Open-Source-Projekt Hyperledger hat mit „Grid“ ein Framework angekündigt, das passende Tools sowie Best Practices in einem Ökosystem vereinen und Standards schaffen soll. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 46403141 / Definitionen)