Warum ist WebAssembly wichtig?

0
163
Shutterstock/Andrey Suslov

WebAssembly ist ein binäres Befehlsformat, das in Webbrowsern ausgeführt werden kann. Es bietet eine Sandbox-Ausführungsumgebung mit nahezu nativer Leistung, wodurch die meisten der mit JavaScript auf Webseiten verbundenen Overheads eliminiert werden.

WebAssembly (Wasm) ist Maschinencode auf niedriger Ebene, der in einer stapelbasierten virtuellen Maschine ausgeführt wird . Dies bedeutet, dass es viel näher an Ihrer Hardware ist als JavaScript. Das muss geparst und vollständig interpretiert werden, bevor es ausgeführt werden kann.

Wasm zu erstellen ist etwas komplizierter als JavaScript zu schreiben. Obwohl Sie es im Wasm-Textformat von Hand codieren können, ist dies ein Low-Level und entspricht dem Schreiben von Assemblercode für die native Ausführung. Häufiger schreiben Sie in einer etablierten Programmiersprache und kompilieren nach Wasm. (Dazu später mehr.)

Warum ist Wasm eigentlich wichtig?

Wenn die Zunahme an Rich-Web-Anwendungen zutrifft, sind Entwickler im Großen und Ganzen mit dem Schreiben von JavaScript ziemlich vertraut. Es hat sich in den letzten zehn Jahren mit neuen Syntaxfunktionen und Verbesserungen der Browserleistung erheblich weiterentwickelt. Diese haben es von einfachen Skripten zu einer Sprache erhoben, die in der Lage ist, komplexe, in sich geschlossene Anwendungen zu unterstützen. Warum wird dann WebAssembly benötigt?

Wasm ersetzt kein JavaScript. Es ist auf bestimmte Anwendungsfälle ausgerichtet, in denen JavaScript immer noch ein Hindernis ist und möglicherweise immer sein wird. Von diesen Fällen zeichnet sich Wasm besonders durch die Leistung aus.

JavaScript-lastige Websites neigen dazu, sich träge zu fühlen und Speicher zu verbrauchen. Dies macht sich besonders auf mobilen Geräten bemerkbar, wo Web-Apps noch immer das “Gefühl” ihrer nativen Gegenstücke.

Da Wasm so viel näher an der Hardware sitzt, bietet es ein Leistungsniveau, das kaum von nativen Apps zu unterscheiden ist. Dies öffnet dem Web eine neue Klasse leistungskritischer Anwendungen. Wenn es auf Ihrem Desktop ausgeführt wird, kann es im Browser ohne wahrnehmbare Leistungseinbußen ausgeführt werden.

Brauchen wir mehr Webleistung?

Es wird immer das Argument geben, dass einige Apps einfach am besten für die Desktop-Nutzung geeignet sind. Das Web bietet jedoch seine eigenen Vorteile, insbesondere im Hinblick auf eine breite Verbreitung.

Durch die Veröffentlichung Ihrer App im Web erreichen Sie ein möglichst breites Publikum. Jeder kann von jedem Gerät aus darauf zugreifen. Dies erhöht den Komfort für Ihre Benutzer und bedeutet, dass Sie eine einzige Codebasis pflegen müssen.

Die eigentliche Frage ist nicht, ob wir mehr Web-Performance brauchen: Stattdessen sollten wir uns fragen, ob wir mehr Anwendungen im Web brauchen. Um diese Frage zu beantworten, können wir auf funktionsintensive Websites schauen, die Wasm bereits übernommen haben.

AutoCAD ist eine computergestützte Designsoftware für Architekten und Ingenieure. Die neueste Webversion wurde 2018 auf der Google I/O vorgestellt. Sie verwendet Wasm, um Komponenten der vorhandenen Desktop-Codebasis unverändert zu nutzen. Ein Teil des Codes ist 35 Jahre alt, läuft aber jetzt im Browser.

Ein weiteres Beispiel ist Figma, das bereits die JavaScript-Untermenge asm.js verwendet hat, um seine Leistung zu optimieren. Durch den Umzug nach Wasm stellte Figma eine dreimalige Leistungsverbesserung fest. Google verwendet auch Wasm und verlässt sich darauf, um Google Earth für alle ins Web zu bringen.

Diese hochkomplexen Anwendungen konnten bisher im Web nicht existieren. Wenn dies der Fall war, liefen sie im Vergleich zu ihren Desktop-Pendants mit erheblichen Leistungseinbußen. Wasm ist die Architektur, die erforderlich ist, um den Übergang des Webs von dokumentenorientierten Seiten zu einer vollständigen Anwendungsplattform abzuschließen. Du kannst sogar Doom 3 spielen!

Erhöhte Entwicklerwahl

Über die Leistung hinaus ist WebAssembly wichtig, weil es Entwicklern mehr Flexibilität und Auswahl bietet. Abgesehen von den alten Flash-, Java- und ActiveX-Plugins war JavaScript Ihre einzige Wahl beim Schreiben von Code für den Browser.

Diese Situation hat sich nun geändert. WebAssembly ist ein Low-Level-Format, in das andere Sprachen kompilieren. C, C++, C#, Java, Python, Rust und viele mehr können WebAssembly-Module ausgeben. Dies gibt Entwicklern viel mehr Möglichkeiten beim Erstellen von Code für das Web.

Sie benötigen immer noch JavaScript, um Ihre Wasm-Module zu laden, aber das war es auch schon. Sie können alle Funktionen Ihres Projekts in der von Ihnen gewählten Sprache implementieren und dann für den Browser zu Wasm kompilieren.

Entwickler können jetzt für das Web in der Sprache schreiben, die am besten zu ihnen und ihrer Anwendung passt. Das kann eine stark typisierte, objektorientierte Sprache sein oder etwas, das sich auf die funktionale Programmierung konzentriert. Sie sind nicht länger auf die lose Typisierung und Objektprototypen von JavaScript beschränkt.

Die Wiederverwendung von Code erleichtern

WebAssembly bringt erhebliche Vorteile, wenn es darum geht wiederzuverwenden. Sie können Ihre gemeinsam genutzten Bibliotheken ins Web bringen, ohne sie erneut in JavaScript zu implementieren. Das könnte dir Stunden, Tage oder Wochen deiner Zeit sparen.

Wenn Sie C# als Beispiel verwenden, verfügen Sie möglicherweise über eine .NET-DLL, die praktische Methoden enthält, die von Ihrem serverseitigen Code und Ihrer Desktopanwendung verwendet werden. Bisher mussten Sie diese Methoden beim Erstellen Ihrer Web-App in JavaScript implementieren.

Mit Wasm können Sie Ihre DLL mit WebAssembly als Ziel neu kompilieren. Derselbe Code wird im Browser zugänglich. Wasm reduziert Verschwendung und doppeltes Engineering, indem es Ihnen ermöglicht, das zu verwenden, was Sie bereits haben.

In der Vergangenheit war dies nur dann wirklich möglich, wenn Ihr Backend Node.js verwendet. Sie könnten allgemeine Logik in eine JavaScript-Bibliothek abstrahieren, die im Frontend wiederverwendet werden kann. Jetzt können Sie mit Bibliotheken arbeiten, die in jeder Sprache geschrieben sind.

Dies funktioniert auch dann, wenn Sie für den Großteil Ihrer Web-App bei JavaScript bleiben. Sie können über JavaScript mit Wasm-Modulen interagieren, sodass Sie Ihre DLL mit gemeinsamen Funktionen weiterhin verwenden können. Mit asynchronen APIs können Sie Daten mit Wasm austauschen, sodass Sie Funktionen aufrufen und ihre Rückgabewerte abrufen können.

Zusammenfassung

WebAssembly wird leicht als obskure Technologie mit geringer Relevanz für die heutigen Web-Apps abgetan. Wasm zielt wirklich auf das Web von morgen ab, wo Apps der Desktop-Klasse mit nativer Leistung ausgeführt werden.

Es ist wichtig, auch über die Schlagzeilenvorteile hinauszuschauen. Bei Wasm geht es nicht nur um Geschwindigkeitssteigerungen. Es kann auch die Lieferzeit für Entwicklungsteams verkürzen, insbesondere für diejenigen, die plattformübergreifend arbeiten oder die Logik zwischen Client und Server teilen. Ein Teil der Aufregung um WebAssembly rührt von der Umwandlung des Webs in ein Kompilierungsziel her, anstatt dass es sich um eine vollständig eigenständige Plattform handelt. Für den Browser zu entwickeln bedeutet nicht mehr, JavaScript zu schreiben.

Hier bleibt die Akzeptanz von WebAssembly 2021 relativ gering. Projekte, die es verwenden, haben Erfolge gemeldet. Sie müssen nur Figma oder Google Earth ausprobieren, um den Wasm-Leistungsstandard zu schätzen. Du wirst wahrscheinlich in den nächsten Jahren mehr von Wasm sehen, wenn sowohl neue als auch alte Apps in den Browser eingeführt werden.