WebAssembly: Betydning, fordele, brugstilfælde og mere

Fanget af WebAssembly-hypen, men ikke helt sikker på, hvad det er? Her er den lave ned.

WebAssembly eller Wasm er et binært kodeformat til at skabe programmer, der kan køre på enhver computerarkitektur.

Systemet omfatter en virtuel maskine og en compiler, der oversætter computerkode fra programmeringssprog, såsom C eller C++ til de menneskeligt læsbare .wat- og de binære .wasm-formater.

WebAssemblys oprindelige mål var at gøre det muligt for programmører at udvikle højtydende applikationer til websider ved at aktivere næsten oprindelige udførelseshastigheder i en browser. Men teknologien ser nu ud til at udvikle sig ud over browsere og ind i skyen.

Denne vejledning viser dig alt, hvad du behøver at vide om denne udviklende teknologi, dens styrker og svagheder samt dens fremtidige potentiale.

Hvad er WebAssembly?

WebAssembly er et binært kodeformat, der kører på en virtuel maskine, og som forskellige sprog kan kompilere til. Den er designet til at være bærbar og kan køre på en webbrowser eller som en serverapplikation.

WebAssembly blev først udgivet i 2017 og er en W3C-anbefaling siden 2019 og vedligeholdes af adskillige bidragydere, herunder Mozilla, Google, Microsoft, Red Hat og mange flere.

Det oprindelige mål var at udvikle næsten oprindelige udførelseshastigheder, som du ville finde med C/C++-applikationer inde i browseren. Det er også ment som en sikker, åben standard, fejlfindbar og versionsfri webstandard, der er bagudkompatibel og JavaScript-kompatibel.

Hvordan fungerer WebAssembly?

WebAssembly er designet som en runtime-motor, såsom Java eller JavaScript, der kan indlejres i et browser- eller servermiljø for at køre computerkode kompileret i .wasm-binære eller .wat-tekstformater.

For at skrive kode til WebAssembly-udførelse skriver udvikleren programmet på et af de talrige understøttede sprog. Derefter kompiler det ved hjælp af en WebAssembly-kompiler enten AOT (Ahead of Time) eller JIT (just in time).

Denne kode kan udføre det meste arbejde i eksekveringsmiljøet, men den kan ikke få adgang til eller ændre en browsers DOM-objekter. Enhver sådan interaktion skal passere gennem JavaScript.

Sådan opretter du et eksempel på WebAssembly-applikation

Det er muligt at oprette en simpel Wasm-applikation til webbrowseren med blot et par trin, som du kan se nedenfor:

  1. Download og installer Emscripten SDK.
  2. Skriv din prøve helloworld.c kode eller gør det i C++/Rust, hvis du foretrækker det.
  3. Kør emcc helloworld.c -s WASM=1 -s helloworld.html i en terminal for at kompilere koden til WebAssembly med Emscripten. Det vil oprette Wasm binære, HTML og JavaScript-filer, som du har brug for (limkode).
  4. Tjen helloworld.html-siden via din webbrowser.

Fordelene ved WebAssembly

Der er mange grunde til at anvende WebAssembly og dets relaterede teknologier, de omfatter:

  • Næsten indfødt ydeevne – WebAssembly har et design på et lavt niveau, at det tilbyder ydeevner, der ligner lavniveausprog som C og C++.
  • Sikkerhed – Systemet er designet til at være sikkert ved at isolere det i et virtuelt miljø med begrænset systemadgang.
  • Åben standard – Mange organisationer og enkeltpersoner bidrager til WebAssembly, og det er en officiel W3C-anbefaling.
  • Letvægt – WebAssembly kompilerer til binær kode, der skal udføres i en virtuel maskine. Denne kode er bærbar og behøver eller leveres ikke med systemfiler.
  • Flersproget support – Over 50 sprog kan kompileres i WebAssembly.
  • Platform uafhængig – Den virtuelle WebAssembly-maskine er designet til hver arkitektur for at præsentere det samme runtime-miljø. Det eneste, en udvikler skal gøre, er at skrive kode til WebAssembly.

WebAssemblys begrænsninger

  • Igangværende Projekter – Standarden er stadig under udvikling, og derfor mangler mange funktioner og forbedringer endnu.
  • Ingen affaldsindsamling – WebAssembly mangler stadig affaldsindsamling, selvom det snart kan blive implementeret.
  • Ingen DOM-adgang – Du kan ikke få adgang til en webbrowsers DOM direkte fra WebAssembly, du skal gennemgå JavaScript.

WebAssembly vs Java

Java er en slags tidligste implementering af WebAssembly. Det var designet som et sprog, der kunne skrives én gang, køre overalt, men udviklede mange problemer undervejs.

Ligesom med Java, bruger WebAssembly et RE (Runtime Environment) til at udføre sin kode, men i modsætning til Java, kan du skrive WebAssembly på dit eget sprog.

WebAssembly vs JavaScript

WebAssembly udføres i browseren eller andet værtsmiljø, ligesom JavaScript. Men hvor JavaScript leveres til udførelsesmiljøet i tekstformat og kompileres lige i tide, har WebAssembly både tekst- og binære formater.

Inde i webbrowsere har JavaScript adgang til DOM, mens WebAssembly ikke har. Men når det kommer til eksekveringshastighed, slår WebAssembly JavaScript med dens næsten oprindelige kodeudførelseshastigheder.

Hastighed er, hvor WebAssembly skinner og grunden til, at den er ideel til så mange anvendelser. Du kan indlæse WebAssembly i en browser ved hjælp af JavaScript, og de to koder kan køre sammen og dele ressourcer.

WebAssembly vs Docker vs Kubernetes

Docker og Kubernetes er to af de populære teknologier, der driver cloud computing. Docker er en containerteknologi, der gør det muligt for udviklere at pakke en applikation med alle dens systemafhængigheder i en enkelt pakke. Dette gør det nemt at implementere applikationen i ethvert cloudmiljø på et sekund eller mindre.

Kubernetes, på den anden side, er et open source-system til at administrere og implementere containeriserede applikationer såsom Docker, CRI-O, containerd og enhver Kubernetes CRI (Container Runtime Interface) implementering. Kubernetes gør det også nemt at skalere cloud-implementeringer på tværs af flere servere eller virtuelle maskiner.

Fra dette synspunkt ligner WebAssembly mere Docker og kan laves til at køre som en containeriseret cloud-applikation ved hjælp af Kubernetes. Det giver også mange fordele i forhold til Docker, men vil sandsynligvis ikke erstatte det.

Ud over browseren

I begyndelsen var der webservere. Du skulle dedikere en fuld maskine som server. Så var der virtuelle maskiner eller VM'er, som tillod en server at køre på kun en eller flere CPU-tråde. Alligevel skulle du have en dedikeret VM.

Skyen gjort det muligt kun at starte og køre servere, når det var nødvendigt ved at containerisere applikationerne. Dette førte til en reduktion i omkostningerne, da du kun skulle betale for det, du bruger – ikke flere dedikerede maskiner. Men der er stadig et par problemer.

For det første kan docker-filer være flere Gigabyte store, og det betyder en lille forsinkelse i opstart og andre administrationsproblemer. En lignende Wasm-fil kan dog kun være et par MB stor, fordi den er en prækompileret binær fil. Dette giver det en meget hurtigere opstartstid end Docker, perfekt til visse tidskritiske applikationer.

For det andet betyder WebAssemblys design, at udvikleren ikke behøver at administrere og tildele systemressourcer, han kan simpelthen komme til sagen ved at bruge sit valgte programmeringssprog.

Disse funktioner gør WebAssembly ideel til at køre cloud-mikrotjenester, selvom Docker-applikationer stadig er at foretrække til applikationer, der kræver mere kontrol over operativsystemet og filsystemet.

For mere information, projekter som WasmCloud og WasmEdge udvikler WebAssembly til en levedygtig computerplatform.

Wasm Use Cases

Der er mange use cases for WebAssembly på grund af dens særlige karakter. De kan opdeles i tre hovedgrupper; in-browser, outside-the-browser og hybrid-opsætninger.

In-browser-typen er selvforklarende, og uden for browseren refererer det meste til server-, IoT- og cloud-implementeringer, mens hybriden refererer til en blanding af de to.

Følgende er et kig på use cases, hvor Wasm kan udmærke sig:

  • Allerede eksisterende højtydende kode – Gammel, men fantastisk kode, som du bare kan overføre til WebAssembly.
  • Ny højtydende kode – Dem, du skal designe og implementere fra bunden.
  • Portering af desktop-applikationer til internettet – Dette kan åbne op for en ny race af webbaserede desktopløsninger, som f.eks web-baseret videoredigering.
  • Skyen – Kører sammen med Docker og Kubernetes for nye muligheder.

Følgende er et kig på specifikke applikationer og scenarier, hvor Wasm kan udmærke sig:

  • Video- og billedredigering
  • Spil design
  • AI-applikationer
  • Virtual & augmented reality applikationer
  • Musik applikationer
  • P2P-applikationer
  • applikationer på serversiden
  • Cloud/cluster-beregninger
  • Computer hjulpet design
  • OS platform simulering
  • Kryptering
  • Lokal webserver
  • Fjernskrivebordsapplikationer
  • Videnskabelige visualiseringer
  • Hybrid native apps på smartphones
  • På IoT-enheder

Liste over understøttede sprog og rammer

Over 50 sprog kompileres til WebAssembly, og her er nogle af de mest populære:

  • C
  • C + +
  • R
  • Rubin
  • Swift
  • Go
  • Kotlin
  • Rust
  • PHP
  • blazer – En ramme for .NET-udviklere.
  • JwebAssembly – Compiler til Java bytecode og relaterede sprog som JRuby, Jython, Groovy, Scala og Kotlin.
  • Yew – En Rust-ramme til at skabe multi-threaded web-apps ved hjælp af WebAssembly.
  • AssemblyScript – Et sprog, der er specielt designet til at oprette WebAssembly-kode.
  • Grain – Et stærkt maskinskrevet funktionelt sprog.
  • Motoko

Du kan finde flere sprog link..

Liste over WebAssembly Runtimes & Tools

  • Alle større browsere har Wasm-understøttelse
  • Pyodid – Python runtime på browseren med Python videnskabelige stak, inklusive Pandas, NumPy, SciPy.
  • wamr
  • vægt – Til mikrotjenester og webapps
  • Var jeg – Modulært systeminterface
  • WasmTime – Hurtig og sikker WebAssembly-kørselstid.
  • Wasmer
  • Lucet
  • wasmCloud – Cloud miljø
  • Krustlet – Kubernetes kublete til at køre Wasm, skrevet i Rust.
  • WasmEdge – Cloud og edge runtime-miljø

Konklusion

Vi er nået til slutningen af ​​vores rejse ind i WebAssembly og hvad det indeholder for computere. Og som du kan se, lover det meget.

Det er dog stadig et igangværende arbejde, men i konstant udvikling. Og hvis du er interesseret, kan du finde mere information link., link.og link..

Nnamdi Okeke

Nnamdi Okeke

Nnamdi Okeke er en computerentusiast, der elsker at læse en bred vifte af bøger. Han har en præference for Linux frem for Windows/Mac og har brugt
Ubuntu siden dens tidlige dage. Du kan fange ham på twitter via bongotrax

Artikler: 298

Modtag teknologiske ting

Tech trends, startup trends, anmeldelser, online indkomst, webværktøjer og markedsføring en eller to gange om måneden