“Ich bin Programmierer” – dieser Satz wird mir meistens bis zu dem Punkt geglaubt, an dem ich erkläre, dass ich vor allem mit JavaScript entwickle. Ja, JavaScript ist in keinster Weise mit C++ oder Java zu vergleichen und ja, JavaScript ist, wie der Name schon vermuten lässt, eine Skriptsprache. Dennoch muss man spätestens seit Node.js und TypeScript eingestehen, dass JavaScript auch für ‘professionelle’ Einsatzbereiche zur Anwendung kommt. Egal ob bestehende Business-Apps für den (internen) Online-Einsatz neu entwickelt werden und Desktop-Apps mittels (dem zugegeben umstrittenen) Electron als Desktop-App veröffentlicht werden – JavaScript ist auch aus der Business-Welt nicht mehr wegzudenken. Den nächsten Angriff auf alteingesessene Paradigmen liefert jetzt wasm – WebAssembly.
Was ist WebAssembly?
WebAssembly klingt zunächst nach nicht viel:
Web Assembly ist ein neues portables, größen- und ladezeitoptimiertes Format, dass für das Web kompiliert werden kann.
Besser ausgedrückt: WebAssembly ist die Möglichkeit, nativen C und C++ (und mittlerweile auch z.B. Rust) Code in ein sehr stark größen- (und damit ladezeit-) optimiertes Format zu kompilieren, das CrossBrowser und CrossPlatform ausgeführt werden kann. Der Einsatz ist dabei bei den großen Browsern momentan noch auf Chrome, Firefox und ab Herbst auch Safari beschränkt.
Das bringt, vergleicht man es mit JavaScript, enorme Performancesteigerungen und ist deshalb vor allem für komplexe Anwendungsfälle, z.b. Berechnungen wie sie bei Spielen oder VirtualReality-Anwendungen vorkommen, von Vorteil. Außerdem deckt WebAssembly wichtige Funktionen wie Threading ab, die mit JavaScript nicht oder nur sehr schwer umsetzbar sind.
Was nach wenig klingt, wird in den nächsten Jahren massive Auswirkungen auf die Web- und Applikationslandschaft haben.
Web Assembly für Spiele, Virtual Reality und grafikintensive Anwendungen
Natürlich bietet Web Assembly beim ersten Blick die größten Vorteile für grafikintensive Anwendungen wie Spiele und Virtual Reality. Einen Einblick, wie groß die Vorteile gegenüber reinen JavaScript-Spielen sind, gibt z.b. die WASM-Spiele-Demo “Funny Karts” von Ross Smith (die Notizen, die während der Erstellung entstanden sind, gibt es hier).
Ebenfalls an Board sind namhafte Spiele-Engines wie Unity oder Unreal Engine, die es erlauben, Spiele über WebGL und Web Assembly im Browser auszuführen. Das passiert ganz ohne Plugins, eine mühsame Installation im Vorfeld fällt damit weg.
Neben den klassischen Spielen hat das natürlich auch massive Auswirkungen auf neuere Anwendungen wie Virtual Reality –Web Assembly glänzt überall dort, wo rechen- und grafikintensive Anwendungsbereiche gefordert sind.
Web Assembly ist mehr
Web Assembly ist auch als Versprechen zu sehen – und als Paradigmenwechsel. Als Node populär wurde, war es plötzlich nicht mehr abwegig, neben Frontend auch Backendapplikationen mit JavaScript zu entwickeln. WASM schlägt in die selbe Kerbe: Auch wenn Web Assembly kein JavaScript ist, fungiert JavaScript als Bindeglied. Somit wird es in Zukunft noch einfacher sein, große, komplexe, rechenintenisve Anwendungen zu einem großen Teil im Browser auszuführen und mit JavaScript und nativen Programmiersprachen zu entwickeln.
Als (zumindest aber für die nähere Zukunft noch theoretische) Möglichkeit, wird hier oft angeführt, dass z.b. Adobe in Zukunft Applikationen wie Photoshop oder Illustrator neben Versionen für MacOs & Windows auch fürs Web kompilieren könnte, um dem Benutzer das gewohnte Interface, die Möglichkeiten und die Performance einer Desktop-App im Browser zu bieten. Und auch wenn davor noch viele damit einhergehende Problemstellungen gelöst werden müssen, zeigt es die generelle Richtung an, die Web Assembly ermöglicht.
Die Zukunft ist die Webplattform
Web Assembly ist sicher nicht der letzte Schritt in Richtung der Professionalisierung der Webplattform. Wo interne Apps früher mit ‚klassischen‘ Programmiersprachen entwickelt wurden, wird in Zukunft mit Sicherheit vermehrt auf browserbasierte Lösungen gesetzt. Das hat gegenüber klassischer Entwicklungsformen viele Vorteile – der Größte ist aber sicherlich die damit einhergehende Unterstützung von verschiedensten Plattformen und Geräten.
Und auch wenn diese Apps auch in Zukunft ‚klassisch‘ entwickelte Programme in keinster Weiße gefährlich werden oder verdrängen können, wird sich das Bild des Programmierers in Zukunft sicher stark wandeln.