Sebastian Gingter Software Architect und Consultant bei der Thinktecture AG

„WebAssembly ist gekommen, um zu bleiben. In Zukunft werden Wasm und JavaScript Hand in Hand für moderne, mächtige und vor allem performante Anwendungen im Browser sorgen.“

WebAssembly – kurz Wasm– ist eine neue Technologie, mit der man Code nahezu beliebiger Sprachen für die Webplattform kompilieren und im Browser innerhalb einer sicheren Sandbox fast mit nativer Geschwindigkeit ausführen kann. Das hört sich fast zu schön an, um wahr zu sein? Wir wollen uns gemeinsam anschauen, wo WebAssembly herkommt, wo es aktuell steht und wo die diese fantastische(?) Reise in Zukunft noch hinführen könnte.

Der Browser ist allgegenwärtig. Nahezu jeder trägt heute ein Smartphone oder sogar ein Tablet mit sich herum, auf dem ein Webbrowser installiert ist. Zwar herrschen auf diesen Geräten heute noch echte Apps vor, aber mit dem beginnenden Siegeszug von Progressive Web Apps (PWAs) werden reine Webanwendungen eine ernstzunehmende Alternative.

Damit wird das Web, oder konkreter der Browser, zu einer immer attraktiveren Zielplattform für unsere Anwendungen. Denn er steht nicht nur einheitlich auf mobilen Geräten zur Verfügung, sondern eben auch auf dem Desktop, und erlaubt uns daher, alle möglichen Zielplattformen zu bedienen und dabei möglichst viel Code zwischen allen Plattformen zu teilen. Doch die Webwelt bringt auch Nachteile mit sich – allen voran JavaScript. Das ist jetzt bitte nicht falsch zu verstehen: JavaScript ist eine sehr vielseitige Sprache, und keine schlechte per se, doch sie hat in der Tat einige Nachteile. Zum einen eben, dass es die einzige Sprache ist, die so universell zur Verfügung steht.

Wenn man nun ein bereits existierendes System auf neue Plattformen bringen will, ist es eher unwahrscheinlich, dass das Altsystem in JavaScript implementiert wurde. Man muss also viel Code duplizieren. Ein weiteres Problem: JavaScript wird interpretiert, und die JavaScript Engines in den Browsern müssen sie bei jedem Anwendungsstart zuerst parsen, dann JITten und können den Code erst danach ausführen. Das ist leider sehr ineffizient. Jeder Entwickler, der schon einmal mit Anwendungen gearbeitet hat, die auf Browsertechnologien – beziehungsweise konkret Electron – basieren, wird sich sicher schon mehr als einmal kopfschüttelnd darüber gewundert haben, warum ausgerechnet dieses kleine Tool gigabyteweise Arbeitsspeicher verbrät. Natürlich ist das nicht ausschließlich ein Problem von JavaScript oder dessen Ausführungsumgebung, doch beides trägt durchaus dazu bei, dass solche Probleme auftreten können. Ein weiteres Problem ist, dass JavaScript nur in einem Thread ausgeführt wird. Das macht es unmöglich, innerhalb einer Anwendung längere Berechnungen durchzuführen, ohne dabei die Anwendung zu blockieren.

Wenn es doch nur eine Möglichkeit gäbe, existierenden Code einfach in den Browser zu portieren und diesen dann idealerweise auch noch deutlich effizienter ausführen zu können. Dieser Wunsch ist nicht neu, er ist sogar schon relativ alt. Und er wurde erhört: Genau das ist heute möglich– und zwar mit WebAssembly.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Windows Developer 8.18 - "Versammlung im Web"

Alle Infos zum Heft
579848432WebAssembly: Mit C, C++, Rust, C# sowie Java für den Browser entwickeln
X
- Gib Deinen Standort ein -
- or -