WebAssembly: Betydning, fordeler, brukstilfeller og mer
Fanget opp i WebAssembly-hypen, men ikke helt sikker på hva det er? Her er det lave ned.

WebAssembly eller Wasm er et binærkodeformat for å lage programmer som kan kjøres på hvilken som helst datamaskinarkitektur.
Systemet består av en virtuell maskin og en kompilator som oversetter datakode fra programmeringsspråk, som C eller C++ til de menneskelesbare .wat og de binære .wasm-formatene.
WebAssemblys opprinnelige mål var å gjøre det mulig for programmerere å utvikle høyytelsesapplikasjoner for nettsider ved å aktivere nesten opprinnelige utførelseshastigheter i en nettleser. Men teknologien ser nå ut til å utvikle seg utover nettlesere og inn i skyen.
Denne veiledningen viser deg alt du trenger å vite om denne utviklende teknologien, dens styrker og svakheter, samt dens fremtidige potensial.
Hva er WebAssembly?
WebAssembly er et binærkodeformat som kjører på en virtuell maskin og som forskjellige språk kan kompilere til. Den er designet for å være bærbar og kan kjøres i en nettleser eller som en serverapplikasjon.
WebAssembly ble først utgitt i 2017, og er en W3C-anbefaling siden 2019 og vedlikeholdes av en rekke bidragsytere, inkludert Mozilla, Google, Microsoft, Red Hat og mange flere.
Det opprinnelige målet var å utvikle nesten opprinnelige utførelseshastigheter som du ville finne med C/C++-applikasjoner inne i nettleseren. Det er også ment å være en sikker, åpen standard, feilsøkbar og versjonsløs nettstandard som er bakoverkompatibel og JavaScript-kompatibel.
Hvordan fungerer WebAssembly?
WebAssembly er designet som en kjøretidsmotor, for eksempel Java eller JavaScript, som kan bygges inn i et nettleser- eller servermiljø for å kjøre datakode kompilert i .wasm-binær- eller .wat-tekstformatene.
For å skrive kode for WebAssembly-kjøring, skriver utvikleren programmet på et av de mange støttede språkene. Deretter kompiler den ved å bruke en WebAssembly-kompiler enten AOT (Ahead of Time) eller JIT (akkurat i tide).
Denne koden kan gjøre det meste i utførelsesmiljøet, men den kan ikke få tilgang til eller endre en nettlesers DOM-objekter. Enhver slik interaksjon må gå gjennom JavaScript.
Hvordan lage et eksempel på WebAssembly-applikasjon
Å lage en enkel Wasm-applikasjon for nettleseren er mulig med bare noen få trinn som du kan se nedenfor:
- Last ned og installer Emscripten SDK.
- Skriv prøven din helloworld.c kode eller gjør det i C++/Rust hvis du foretrekker det.
- Kjør emcc helloworld.c -s WASM=1 -s helloworld.html i en terminal for å kompilere koden til WebAssembly med Emscripten. Den vil lage Wasm-binære-, HTML- og JavaScript-filene du trenger (limkode).
- Server helloworld.html-siden via nettleseren din.
Fordelene med WebAssembly
Det er mange grunner til å ta i bruk WebAssembly og dens relaterte teknologier, de inkluderer:
- Nesten innfødt ytelse – WebAssembly har et så lavt nivådesign at det tilbyr ytelser som ligner på lavnivåspråk som C og C++.
- Trygghet – Systemet er designet for å være sikkert ved å isolere det i et virtuelt miljø med begrenset systemtilgang.
- Åpne Standard – Mange organisasjoner og enkeltpersoner bidrar til WebAssembly, og det er en offisiell W3C-anbefaling.
- Lett – WebAssembly kompileres til binær kode som skal kjøres i en virtuell maskin. Denne koden er bærbar og trenger ikke eller kommer med systemfiler.
- Flerspråklig støtte – Over 50 språk kan kompileres i WebAssembly.
- Plattform uavhengig – Den virtuelle WebAssembly-maskinen er designet for hver arkitektur for å presentere det samme kjøretidsmiljøet. Alt en utvikler trenger å gjøre er å skrive kode for WebAssembly.
Begrensningene til WebAssembly
- Arbeid pågår – Standarden er fortsatt under utvikling, og derfor er mange funksjoner og forbedringer ennå ikke kommet.
- Ingen søppelinnsamling – WebAssembly mangler fortsatt søppelinnsamling, selv om det snart kan bli implementert.
- Ingen DOM-tilgang – Du kan ikke få tilgang til en nettlesers DOM direkte fra WebAssembly, du må gå gjennom JavaScript.
WebAssembly vs Java
Java er liksom den tidligste implementeringen av WebAssembly. Det ble designet som et skriv-en gang, løp hvor som helst, men utviklet mange problemer underveis.
Akkurat som med Java, bruker WebAssembly et RE (Runtime Environment) for å kjøre koden, men i motsetning til Java kan du skrive WebAssembly på ditt valgspråk.
WebAssembly vs JavaScript
WebAssembly kjøres i nettleseren eller annet vertsmiljø, akkurat som Javascript. Men der JavaScript leveres til utførelsesmiljøet i tekstformat og kompileres akkurat i tide, har WebAssembly både tekst- og binære formater.
Inne i nettlesere har JavaScript tilgang til DOM, mens WebAssembly ikke har det. Men når det kommer til utførelseshastighet, slår WebAssembly JavaScript, med sine nesten opprinnelige kodeutførelseshastigheter.
Hastighet er der WebAssembly skinner og grunnen til at den er ideell for så mange bruksområder. Du kan laste WebAssembly inn i en nettleser ved hjelp av JavaScript, og de to kodene kan kjøre sammen og dele ressurser.
WebAssembly vs Docker vs Kubernetes
Docker og Kubernetes er to av de populære teknologiene som driver cloud computing. Docker er en containerteknologi som gjør det mulig for utviklere å pakke en applikasjon med alle dens systemavhengigheter i en enkelt pakke. Dette gjør det enkelt å distribuere applikasjonen i et hvilket som helst skymiljø på et sekund eller mindre.
Kubernetes, på den annen side, er et åpen kildekode-system for å administrere og distribuere containeriserte applikasjoner som Docker, CRI-O, containerd og enhver Kubernetes CRI (Container Runtime Interface) implementering. Kubernetes gjør det også enkelt å skalere skydistribusjoner på tvers av flere servere eller virtuelle maskiner.
Fra dette synspunktet er WebAssembly mer lik Docker og kan kjøres som en containerisert skyapplikasjon ved hjelp av Kubernetes. Det gir også mange fordeler fremfor Docker, men vil sannsynligvis ikke erstatte det.
Utover nettleseren
I begynnelsen var det webservere. Du måtte dedikere en full maskin som server. Så var det virtuelle maskiner, eller VM-er, som tillot en server å kjøre på bare én eller flere CPU-tråder. Likevel måtte du ha en dedikert VM.
Cloud computing gjorde det mulig å starte og kjøre servere bare når det var nødvendig ved å containerisere applikasjonene. Dette førte til en reduksjon i kostnadene, siden du bare måtte betale for det du bruker – ikke flere dedikerte maskiner. Men det er fortsatt noen problemer.
For det første kan docker-filer være flere gigabyte store, og dette betyr en liten forsinkelse i oppstart og andre administrasjonsproblemer. En lignende Wasm-fil kan imidlertid bare være noen få MB stor fordi den er en forhåndskompilert binærfil. Dette gir den en mye raskere oppstartstid enn Docker, perfekt for visse tidskritiske applikasjoner.
For det andre betyr WebAssemblys design at utvikleren ikke trenger å administrere og tildele systemressurser, han kan ganske enkelt komme til poenget ved å bruke det valgte programmeringsspråket.
Disse funksjonene gjør WebAssembly ideell for å kjøre nettskymikrotjenester, selv om Docker-applikasjoner fortsatt er å foretrekke for applikasjoner som krever mer kontroll over operativsystemet og filsystemet.
For mer informasjon, prosjekter som WasmCloud og WasmEdge utvikler WebAssembly til en levedyktig dataplattform.
Wasm brukstilfeller
Det er mange brukstilfeller for WebAssembly, gitt dens særegne natur. De kan deles inn i tre hovedgrupper; i nettleseren, utenfor nettleseren og hybridoppsett.
Nettlesertypen er selvforklarende og utenfor nettleseren refererer stort sett til server-, IoT- og skydistribusjoner, mens hybriden refererer til en blanding av de to.
Følgende er en titt på brukstilfeller der Wasm kan utmerke seg:
- Allerede eksisterende kode med høy ytelse – Gammel, men fantastisk kode som du bare kan portere til WebAssembly.
- Ny høyytelseskode – De du må designe og implementere fra bunnen av.
- Portering av skrivebordsapplikasjoner til nettet – Dette kan åpne opp for en ny type nettbaserte skrivebordsløsninger, som f.eks nettbasert videoredigering.
- Cloud computing – Løper sammen med Docker og Kubernetes for nye muligheter.
Følgende er en titt på spesifikke applikasjoner og scenarier der Wasm kan utmerke seg:
- Video- og bilderedigering
- Spilldesign
- AI-applikasjoner
- Virtual & augmented reality-applikasjoner
- Musikk applikasjoner
- P2P applikasjoner
- applikasjoner på serversiden
- Cloud/cluster-beregninger
- Datastyrt design
- OS-plattformsimulering
- kryptering
- Lokal webserver
- Eksterne skrivebordsapplikasjoner
- Vitenskapelige visualiseringer
- Hybride native apper på smarttelefoner
- På IoT-enheter
Liste over støttede språk og rammer
Over 50 språk kompileres til WebAssembly, og her er noen av de mest populære:
- C
- C + +
- R
- Rubin
- Swift
- Go
- Kotlin
- Rust
- PHP
- blazer – Et rammeverk for .NET-utviklere.
- JwebAssembly – Kompiler for Java-bytekode og relaterte språk som JRuby, Jython, Groovy, Scala og Kotlin.
- Yew – Et Rust-rammeverk for å lage flertrådede nettapper ved hjelp av WebAssembly.
- AssemblyScript – Et språk spesielt utviklet for å lage WebAssembly-kode.
- Korn – Et sterkt maskinskrevet funksjonsspråk.
- Motoko
Du kan finne flere språk her..
Liste over WebAssembly kjøretider og verktøy
- Alle større nettlesere har Wasm-støtte
- Pyodid – Python kjøretid på nettleseren med Python vitenskapelige stack, inkludert Pandas, NumPy, SciPy.
- wamr
- vekt – For mikrotjenester og nettapper
- Var jeg – Modulært systemgrensesnitt
- WasmTime – Rask og sikker WebAssembly-kjøring.
- Wasmer
- Lucet
- wasmCloud – Skymiljø
- Krustlet – Kubernetes kublete for å kjøre Wasm, skrevet i Rust.
- WasmEdge – Cloud og edge runtime miljø
Konklusjon
Vi har kommet til slutten av vår reise inn i WebAssembly og hva det innebærer for databehandling. Og som du kan se, lover det mye.
Det er fortsatt et arbeid som pågår, men i stadig utvikling. Og hvis du er interessert, kan du finne mer informasjon her., her.og her..





