Blog

JavaScript Days | Angular Days | React Days | HTML & CSS Days
Die großen Trainingsevents für JavaScript, Angular, React, HTML & CSS
16. - 19. März 2020 | München
26
Nov

“Mit WebAssembly können ganze Ökosysteme aus anderen Sprachen ins Web portiert werden”

Sven Kölpin

Die WebTech-Welt entwickelt sich in hoher Geschwindigkeit weiter. Wie kann man dabei noch mithalten? Sven Kölpin hat auf den JavaScript Days 2019 über die zahlreichen Konzepte des modernen Webs gesprochen. Wir haben ihn im Interview gefragt, wie sich WebAssembly und Progressive Web Apps derzeit entwickeln und worauf man heute setzen sollte.

Ann-Cathrin Klose: Wenn es um die Trends im Web gibt, gibt es Stichworte, an denen man derzeit nicht vorbei kommt: Alle reden über WebAssembly, aber wann lohnt sich ein Blick darauf wirklich?

Sven Kölpin: Der WebAssembly (WASM) Standard hat schon lange eine ziemlich ausgeprägte Browserunterstützung. Seit ungefähr 2017 wird er von allen relevanten Herstellern implementiert – und das auch in den mobilen Versionen. Die einzige Ausnahme bildet, wie immer, der Internet Explorer 11. Es handelt sich bei der aktuellen WebAssembly-Version allerdings um ein Minimum Viable Product, in der vor allem Sprachen mit manuellem Memory Management (C, C++ oder Rust) im Fokus stehen.

Trotzdem gibt es bereits eine Vielzahl von Webanwendungen, in denen WebAssembly zum Einsatz kommt. Hier ist vornehmlich das Projekt AutoCAD zu nennen, in der Teile einer über dreißig Jahre alten Code-Basis mit der Hilfe von WebAssembly ins Web portiert werden konnten. Auch eBay setzt bei der Implementierung eines webbasierten Barcode-Scanners auf WebAssembly. Google plant den Einsatz für Google Earth. WebAssembly ist also schon lange kein theoretisches Konstrukt mehr, sondern fester Bestandteil der Webplattform.

Leider wurde neulich festgestellt, dass WASM aufgrund der guten Performance oftmals böswillig eingesetzt wird, beispielsweise für Mining-Zwecke. Das ist meiner Meinung nach aber weniger ein Problem des Standards, als von der Plattform an sich. WebAssembly wird in einer Sandboxed-Umgebung mit einem linearen Memory-Modell ausgeführt, in der die gleichen Sicherheitsmechanismen greifen wie zum Beispiel bei JavaScript. WASM ist genauso (un-) sicher wie andere Web-APIs.

Zugegebenermaßen sind WebAssemblys APIs aktuell noch sehr rudimentär, beispielsweise können JavaScript und WASM nur über numerische Werte miteinander kommunizieren. Der Austausch von komplexen Datenmodellen zwischen den beiden Welten ist deshalb etwas gewöhnungsbedürftig. Tools wie Emscripten helfen hier zwar, indem sie Glue-Code generieren und so eine zusätzliche Abstraktionsebene zum WASM-Modul schaffen. Das Ganze ist aber natürlich nicht „umsonst“, sondern verursacht viele zusätzliche Bytes. Das Interface-Type-Proposal wird hier aber zukünftig Abhilfe schaffen.

Ein Blick auf WASM lohnt sich definitiv jetzt schon. Es gibt viele Anwendungsfälle, für die WebAssembly bereits heute Mehrwerte schaffen kann. Zum Beispiel um ganze Anwendungen oder Libraries in das Web zu portieren oder Performance-kritische Teilbereiche einer Webanwendung zu beschleunigen. Man muss allerdings einigermaßen experimentierfreudig sein und in Kauf nehmen, dass die Entwicklung von WebAssembly-Modulen teilweise noch auf einem geringen Abstraktionslevel stattfindet.

Ann-Cathrin Klose: Inwiefern können etablierte Plattformen wie Node.js mit diesen Entwicklungen schritthalten?

Sven Kölpin: Node.js profitiert unmittelbar von vielen Entwicklungen und Neuerungen, die in der Webplattform vonstatten gehen. Der große Vorteil von Node.js ist schließlich, dass die Plattform auf Googles V8-Engine basiert, in der neue ECMAScript- und WebAssembly-Features in der Regel sehr frühzeitig verwendet werden können. Zukünftig wird es zudem mit dem WebAssembly System Interface (WASI)-Standard möglich sein, native Module für Node.js auf Basis von WebAssembly zu entwickeln. Das eröffnet viele neue Möglichkeiten.

Es gibt viele Anwendungsfälle, für die WebAssembly bereits heute Mehrwerte schaffen kann.

Ann-Cathrin Klose: Und wie sieht es mit Progressive Web Apps aus: Die Technologie ist seit einiger Zeit verfügbar, aber wie weit ist die Entwicklung schon fortgeschritten – sind hier noch größere Veränderungen zu erwarten?

Sven Kölpin: Vor allem am Service Worker API wird aktuell wieder aktiv gearbeitet. Hier sind einige (kleine) Verbesserungen des Verhaltens und der Funktionen geplant. Großes Verbesserungspotential sehe ich aber ehrlich gesagt nicht in der Weiterentwicklung der existierenden APIs, sondern vielmehr in der Bereitschaft von Apple, endlich alle wichtigen PWA-APIs zu implementieren. Hier sind allen voran das Push-API und auf iOS-Geräten das Notifications-API zu nennen.

Ann-Cathrin Klose: Wachsen die Plattformen immer weiter zusammen mit PWAs, WebAssembly uvm.? welchen Trend beobachtest du derzeit?

Sven Kölpin: Der Browser ist schon lange eine sehr starke und zukunftsorientierte Plattform. Die zur Verfügung stehenden APIs entwickeln sich stetig weiter und sind meiner Meinung nach sehr gut integriert.

WebAssembly spielt hier zukünftig eine tragende Rolle, weil ganze Ökosysteme aus anderen Sprachen in das Web portiert werden können. Vorher eigentlich nicht-kompatible Welten können so endlich miteinander verein werden.

Ann-Cathrin Klose: Hast du einen Tipp, wie man am besten den Überblick über die zahlreichen Trends im WebTech-Bereich behält?

Sven Kölpin: JavaMagazin, entwickler.de und Jaxenter ;).

Ich bevorzuge Twitter, Medium und Reddit. Vor allem die SubReddits /r/JavaScript, /r/WebAssembly und /r/Java sind meine täglichen Quellen.