WebAssembly: pomen, prednosti, primeri uporabe in več
Ste ujeti v pomp o WebAssembly, vendar niste povsem prepričani, kaj je to? Tukaj je nizko dol.

WebAssembly ali Wasm je format binarne kode za ustvarjanje programov, ki se lahko izvajajo v kateri koli računalniški arhitekturi.
Sistem je sestavljen iz virtualnega stroja in prevajalnika, ki prevaja računalniško kodo iz programskih jezikov, kot sta C ali C++, v človeku berljiva formata .wat in binarna .wasm.
Prvotni cilj WebAssembly je bil programerjem omogočiti razvoj visoko zmogljivih aplikacij za spletne strani z omogočanjem skoraj izvirnih hitrosti izvajanja v brskalniku. Toda zdi se, da se tehnologija zdaj razvija onkraj brskalnikov in v oblak.
Ta vodnik vam pokaže vse, kar morate vedeti o tej razvijajoči se tehnologiji, njenih prednostih in slabostih ter njenem prihodnjem potencialu.
Kaj je WebAssembly?
WebAssembly je oblika binarne kode, ki se izvaja na virtualnem stroju in jo lahko prevajajo različni jeziki. Zasnovan je kot prenosljiv in se lahko izvaja v spletnem brskalniku ali kot strežniška aplikacija.
WebAssembly, ki je bil prvič izdan leta 2017, je priporočilo W3C od leta 2019 in ga vzdržujejo številni sodelavci, vključno z Mozillo, Googlom, Microsoftom, Red Hatom in številnimi drugimi.
Prvotni cilj je bil razviti skoraj izvorne hitrosti izvajanja, kot bi jih našli pri aplikacijah C/C++ v brskalniku. Prav tako naj bi bil varen spletni standard odprtega standarda, z možnostjo odpravljanja napak in brez različic, ki je združljiv s prejšnjimi različicami in skladen z JavaScriptom.
Kako deluje WebAssembly?
WebAssembly je zasnovan kot izvajalni mehanizem, kot je Java ali JavaScript, ki ga je mogoče vdelati v brskalnik ali strežniško okolje za izvajanje računalniške kode, prevedene v .wasm binarnem ali .wat besedilnem formatu.
Za pisanje kode za izvajanje WebAssembly razvijalec napiše program v katerem koli od številnih podprtih jezikov. Nato ga prevedite s prevajalnikom WebAssembly bodisi AOT (pred časom) bodisi JIT (pravočasno).
Ta koda lahko opravi večino dela v izvajalnem okolju, vendar ne more dostopati ali spreminjati objektov DOM brskalnika. Vsaka taka interakcija mora potekati skozi JavaScript.
Kako ustvariti vzorčno aplikacijo WebAssembly
Ustvarjanje preproste aplikacije Wasm za spletni brskalnik je možno z le nekaj koraki, kot lahko vidite spodaj:
- Prenesite in namestite Emscripten SDK.
- Napišite svoj vzorec helloworld.c kodo ali pa to naredite v C++/Rust, če želite.
- Run emcc helloworld.c -s WASM=1 -s helloworld.html v terminalu za prevajanje kode v WebAssembly z Emscripten. Ustvaril bo binarne datoteke Wasm, HTML in JavaScript, ki jih potrebujete (koda lepila).
- Storite stran helloworld.html prek svojega spletnega brskalnika.
Prednosti WebAssembly
Obstaja veliko razlogov za sprejetje WebAssembly in z njim povezanih tehnologij, vključno z:
- Skoraj domača zmogljivost – WebAssembly ima tako nizkonivojsko zasnovo, da ponuja zmogljivosti, podobne jezikom nizke ravni, kot sta C in C++.
- Varnost – Sistem je zasnovan tako, da je varen, tako da je izoliran v virtualnem okolju z omejenim dostopom do sistema.
- Odprite Standard – Številne organizacije in posamezniki prispevajo k WebAssembly in je uradno priporočilo W3C.
- Lahka – WebAssembly prevede v binarno kodo, ki se izvede v virtualnem stroju. Ta koda je prenosljiva in ne potrebuje ali je priložena sistemskim datotekam.
- Večjezična podpora – V WebAssembly je mogoče prevesti več kot 50 jezikov.
- Neodvisno od platforme – Navidezni stroj WebAssembly je zasnovan za vsako arhitekturo, da predstavlja isto okolje izvajanja. Vse, kar mora razvijalec storiti, je napisati kodo za WebAssembly.
Omejitve WebAssembly
- Delo v teku – Standard je še v razvoju, zato številne funkcije in izboljšave šele prihajajo.
- Brez zbiranja smeti – WebAssembly še vedno nima zbiranja smeti, čeprav bo morda kmalu uveden.
- Ni dostopa do DOM – Do DOM spletnega brskalnika ne morete dostopati neposredno iz WebAssembly, morali boste iti skozi JavaScript.
WebAssembly proti Javi
Java je nekakšna najzgodnejša izvedba WebAssembly. Zasnovan je bil kot jezik za enkratno pisanje in zagon kjer koli, vendar se je na poti pojavilo veliko težav.
Tako kot pri Javi tudi WebAssembly uporablja RE (Runtime Environment) za izvajanje svoje kode, vendar za razliko od Jave lahko WebAssembly pišete v svojem izbranem jeziku.
WebAssembly proti JavaScriptu
WebAssembly se izvaja v brskalniku ali drugem gostiteljskem okolju, tako kot JavaScript. Če pa je JavaScript dostavljen v izvajalsko okolje v besedilnem formatu in je pravočasno preveden, ima WebAssembly besedilni in binarni format.
Znotraj spletnih brskalnikov ima JavaScript dostop do DOM-a, WebAssembly pa ne. Ko pa gre za hitrost izvajanja, WebAssembly premaga JavaScript s hitrostjo izvajanja kode, ki je skoraj domača.
Hitrost je tista, kjer WebAssembly blesti, in razlog, da je idealen za toliko uporab. WebAssembly lahko naložite v brskalnik z uporabo JavaScripta in obe kodi lahko delujeta skupaj in si delita vire.
WebAssembly Vs Docker Vs Kubernetes
Docker in Kubernetes sta dve priljubljeni tehnologiji, ki poganjata računalništvo v oblaku. Docker je vsebniška tehnologija, ki razvijalcem omogoča pakiranje aplikacije z vsemi njenimi sistemskimi odvisnostmi v en paket. To olajša uvajanje aplikacije v katero koli okolje v oblaku v sekundi ali manj.
Po drugi strani pa je Kubernetes odprtokodni sistem za upravljanje in uvajanje kontejnerskih aplikacij, kot so Docker, CRI-O, kontejner in katera koli implementacija Kubernetes CRI (Container Runtime Interface). Kubernetes prav tako omogoča enostavno prilagajanje uvedb oblaka na več strežnikih ali virtualnih strojih.
S tega vidika je WebAssembly bolj podoben Dockerju in se lahko izvaja kot aplikacija v oblaku v vsebnikih z uporabo Kubernetesa. Ponuja tudi številne prednosti pred Dockerjem, vendar ga verjetno ne bo nadomestil.
Onkraj brskalnika
Na začetku so bili spletni strežniki. Za strežnik ste morali nameniti celoten stroj. Nato so bili navidezni stroji ali VM, ki so strežniku omogočali delovanje na samo eni ali več nitih CPU. Kljub temu ste morali imeti namenski VM.
računalništvo v oblaku je omogočil zagon in zagon strežnikov samo, ko je bilo potrebno, tako da je aplikacije pospravil v vsebnike. To je privedlo do znižanja stroškov, saj ste morali plačati samo tisto, kar uporabljate – nič več namenskih strojev. Vendar je še vedno nekaj vprašanj.
Prvič, datoteke docker so lahko velike nekaj gigabajtov, kar pomeni majhno zamudo pri zagonu in druge težave pri upravljanju. Podobna datoteka Wasm pa je lahko velika le nekaj MB, ker je vnaprej prevedena dvojiška datoteka. To mu daje veliko hitrejši zagonski čas kot Docker, kar je kot nalašč za nekatere časovno kritične aplikacije.
Drugič, zasnova WebAssembly pomeni, da razvijalcu ni treba upravljati in dodeljevati sistemskih virov, temveč lahko preprosto preide na bistvo z uporabo svojega izbranega programskega jezika.
Zaradi teh funkcij je WebAssembly idealen za izvajanje mikrostoritev v oblaku, čeprav so aplikacije Docker še vedno prednostne za aplikacije, ki zahtevajo večji nadzor nad operacijskim okoljem in datotečnim sistemom.
Za več informacij, projekti kot WasmCloud in WasmEdge razvijajo WebAssembly v uspešno računalniško platformo.
Primeri uporabe Wasma
Obstaja veliko primerov uporabe za WebAssembly glede na njegovo posebno naravo. Razdelimo jih lahko v tri velike skupine; nastavitve v brskalniku, zunaj brskalnika in hibridne nastavitve.
Vrsta v brskalniku je samoumevna in zunaj brskalnika se večinoma nanaša na strežnike, IoT in uvedbe v oblaku, medtem ko se hibrid nanaša na mešanico obeh.
Sledi pogled na primere uporabe, kjer lahko Wasm blesti:
- Že obstoječa visokozmogljiva koda – Stara, a čudovita koda, ki jo lahko preprosto prenesete v WebAssembly.
- Nova visoko zmogljiva koda – Tisti, ki jih morate zasnovati in izvesti iz nič.
- Prenos namiznih aplikacij v splet – To bi lahko odprlo novo vrsto spletnih namiznih rešitev, kot je npr spletno urejanje videa.
- računalništvo v oblaku – Skupaj z Dockerjem in Kubernetesom za nove priložnosti.
Sledi pogled na posebne aplikacije in scenarije, kjer se lahko Wasm izkaže:
- Urejanje videa in slik
- Oblikovanje igre
- AI aplikacije
- Aplikacije za navidezno in razširjeno resničnost
- Glasbene aplikacije
- P2P aplikacije
- Aplikacije na strani strežnika
- Računanje v oblaku/grozdi
- Računalniško podprto oblikovanje
- Simulacija platforme OS
- šifriranje
- Lokalni spletni strežnik
- Aplikacije za oddaljeno namizje
- Znanstvene vizualizacije
- Hibridne izvorne aplikacije na pametnih telefonih
- Na napravah IoT
Seznam podprtih jezikov in ogrodij
Več kot 50 jezikov se prevede v WebAssembly in tukaj je nekaj najbolj priljubljenih:
- C
- C + +
- R
- Ruby
- Swift
- Go
- Kotlin
- Rust
- PHP
- blazer – Ogrodje za razvijalce .NET.
- JwebAssembly – Prevajalnik za bajtno kodo Java in sorodne jezike, kot so JRuby, Jython, Groovy, Scala in Kotlin.
- tisa – Ogrodje Rust za ustvarjanje večnitnih spletnih aplikacij z uporabo WebAssembly.
- AssemblyScript – Jezik, posebej zasnovan za ustvarjanje kode WebAssembly.
- Grain – Strogo tipiziran funkcionalni jezik.
- Motoko
Najdete lahko več jezikov tukaj.
Seznam izvajalnih časov in orodij WebAssembly
- Vsi glavni brskalniki imajo podporo za Wasm
- Piodid – Izvajalno okolje Python v brskalniku z znanstvenim skladom Python, vključno s Pandas, NumPy, SciPy.
- wamr
- utež – Za mikro storitve in spletne aplikacije
- Wasi – Modularni sistemski vmesnik
- WasmTime – Hitro in varno izvajalno okolje WebAssembly.
- Wasmer
- Lucet
- wasmCloud – Okolje v oblaku
- Krustlet – Kubernetes kublete za izvajanje Wasma, napisano v Rustu.
- WasmEdge – Oblačno in robno izvajalno okolje
zaključek
Prišli smo do konca našega popotovanja v WebAssembly in njegove vsebine za računalništvo. In kot lahko vidite, obeta veliko.
Še vedno je v teku, vendar v stalnem razvoju. In če vas zanima, lahko najdete več informacij tukaj, tukajin tukaj.





