Waarom is WebAssembly belangrijk?

0
174
Shutterstock/Andrey Suslov

WebAssembly is een binaire instructie-indeling die in webbrowsers kan worden uitgevoerd. Het biedt een sandbox-uitvoeringsomgeving met bijna-native prestaties, waardoor de meeste overheadkosten die verband houden met JavaScript op webpagina's worden geëlimineerd.

WebAssembly (Wasm) is machinecode op laag niveau die wordt uitgevoerd in een op stapels gebaseerde virtuele machine . Dit betekent dat het veel dichter bij uw hardware staat dan JavaScript. Dat moet worden geparseerd en volledig geïnterpreteerd voordat het kan worden uitgevoerd.

Het maken van Wasm is iets ingewikkelder dan het schrijven van JavaScript. Hoewel je het met de hand kunt coderen in Wasm Text Format, is dit een laag niveau en equivalent aan het schrijven van assembly-code voor native uitvoering. Vaker zul je in een gevestigde programmeertaal schrijven en compileren naar Wasm. (Daarover later meer.)

Waarom is wasm eigenlijk belangrijk?

Als de toename van rijke webapplicaties iets is, zijn ontwikkelaars over het algemeen redelijk comfortabel met het schrijven van JavaScript. Het is het afgelopen decennium aanzienlijk geëvolueerd met nieuwe syntaxisfuncties en verbeteringen in browserprestaties. Deze hebben het verheven van eenvoudige scripts tot een taal die in staat is om complexe, op zichzelf staande applicaties te ondersteunen. Waarom is WebAssembly dan nodig?

Wasm vervangt JavaScript niet. Het is gericht op specifieke gebruikssituaties waarbij JavaScript nog steeds een belemmering is en mogelijk altijd zal zijn. Van deze gevallen is de prestatie waar Wasm bijzonder in uitblinkt.

JavaScript-zware websites hebben de neiging traag te voelen en geheugen op te eten. Dit is vooral merkbaar op mobiele apparaten, waar web-apps nog steeds het “feel” van hun native tegenhangers.

Omdat Wasm zoveel dichter bij de hardware zit, biedt het een prestatieniveau dat nauwelijks te onderscheiden is van native apps. Dit opent het web voor een nieuwe klasse van prestatiekritieke toepassingen. Als het op uw desktop draait, kan het in de browser worden uitgevoerd zonder merkbare prestatievertraging.

Hebben we meer webprestaties nodig?

Er zal altijd een argument zijn dat sommige apps gewoon het meest geschikt zijn voor desktopgebruik. Het web biedt echter zijn eigen voordelen, met name wat betreft brede distributie.

Door uw app op internet te publiceren, krijgt u een zo breed mogelijk publiek. Iedereen heeft er toegang toe vanaf welk apparaat dan ook. Dit vergroot het gemak voor uw gebruikers en betekent dat u één codebase hoeft te onderhouden.

De echte vraag is niet of we meer webprestaties nodig hebben: in plaats daarvan zouden we ons moeten afvragen of we meer toepassingen op het web nodig hebben. Om die vraag te beantwoorden, kunnen we kijken naar sites met veel functionaliteit die Wasm al gebruiken.

AutoCAD is computerondersteunde ontwerpsoftware voor architecten en ingenieurs. De nieuwste webversie debuteerde op Google I/O in 2018. Het gebruikt Wasm om componenten van de bestaande desktop-codebase te consumeren zoals het is. Een deel van de code is 35 jaar oud, maar draait nu in de browser.

Een ander voorbeeld is Figma, dat al de JavaScript-subset asm.js gebruikte om de prestaties te optimaliseren. Door naar Wasm te verhuizen, merkte Figma een prestatieverbetering van 3x op. Google gebruikt Wasm ook en vertrouwt erop om Google Earth voor iedereen op internet te brengen.

Deze zeer complexe applicaties konden voorheen niet op internet bestaan. Als ze dat deden, kregen ze zware prestatiestraffen in vergelijking met hun desktop-tegenhangers. Wasm is de architectuur die nodig is om de overgang van het web van documentgeoriënteerde pagina's naar een compleet applicatieplatform te voltooien. Je kunt zelfs Doom 3 spelen!

De keuze voor ontwikkelaars vergroten

Naast de prestaties is WebAssembly van belang omdat het ontwikkelaars meer flexibiliteit en keuze biedt. Met uitzondering van de erfenis van Flash-, Java- en ActiveX-plug-ins, was JavaScript uw ​​enige keuze bij het schrijven van code voor de browser.

Die situatie is nu veranderd. WebAssembly is een indeling op laag niveau waarnaar andere talen kunnen worden gecompileerd. C, C++, C#, Java, Python, Rust en nog veel meer zijn in staat om WebAssembly-modules uit te voeren. Dit geeft ontwikkelaars veel meer opties bij het maken van code voor het web.

Je hebt nog steeds JavaScript nodig om je Wasm-modules te laden, maar dat is het dan ook. U kunt alle functionaliteit van uw project implementeren in de door u gekozen taal, en deze vervolgens compileren naar Wasm voor de browser.

Ontwikkelaars kunnen nu voor het web schrijven in de taal die het beste bij hen en hun toepassing past. Dat kan een sterk getypeerde, objectgeoriënteerde taal zijn, of iets dat gericht is op functioneel programmeren. U bent niet langer beperkt tot JavaScript's losse type- en objectprototypes.

Het vergemakkelijken van het hergebruik van code

WebAssembly biedt aanzienlijke voordelen als het gaat code hergebruiken. U kunt uw gedeelde bibliotheken naar het web brengen zonder ze opnieuw in JavaScript te implementeren. Dit kan uren, dagen of weken van uw tijd besparen.

Als u C# als voorbeeld gebruikt, hebt u mogelijk een .NET DLL die gemaksmethoden bevat die worden gebruikt door uw servercode en uw desktoptoepassing. Voorheen moest u deze methoden in JavaScript implementeren toen het tijd was om uw web-app te bouwen.

Met Wasm kunt u uw DLL opnieuw compileren met WebAssembly als doel. Dezelfde code wordt toegankelijk in de browser. Wasm vermindert verspilling en dubbele engineering door u te laten gebruiken wat u al heeft.

Historisch gezien was dit alleen echt mogelijk als je backend Node.js gebruikte. Je zou gemeenschappelijke logica kunnen abstraheren in een JavaScript-bibliotheek die klaar is voor hergebruik in de frontend. Nu kunt u werken met bibliotheken die in elke taal zijn geschreven.

Dit werkt zelfs als u voor het grootste deel van uw webapp bij JavaScript blijft. U kunt via JavaScript communiceren met Wasm-modules, zodat u nog steeds uw DLL met gedeelde functies kunt gebruiken. Met asynchrone API's kunt u gegevens uitwisselen met Wasm, zodat u functies kunt aanroepen en hun retourwaarden kunt krijgen.

Samenvatting

WebAssembly wordt gemakkelijk afgedaan als een obscure technologie die weinig relevant is voor de hedendaagse web-apps. Wasm richt zich echt op het web van morgen, waar apps van desktopklasse zullen draaien met native prestaties.

Het is belangrijk om ook verder te kijken dan de voordelen van de headline. Wasm gaat niet alleen over snelheidsverhogingen. Het kan ook de time-to-ship voor ontwikkelingsteams verkorten, vooral degenen die platformonafhankelijk werken of logica delen tussen de client en de server. Een deel van de opwinding rond WebAssembly komt voort uit de transformatie van het web naar een compilatiedoel, in plaats van dat het een volledig op zichzelf staand platform is. Bouwen voor de browser betekent niet langer JavaScript schrijven.

Hier, in 2021, blijft de acceptatie van WebAssembly relatief laag. Projecten die het gebruiken, hebben successen gemeld. U hoeft Figma of Google Earth alleen maar te proberen om de prestatiestandaard van Wasm te waarderen. U zult de komende jaren waarschijnlijk meer van Wasm te zien krijgen, aangezien zowel nieuwe als oude apps in de browser worden geïntroduceerd.