WebAssembly: merkitys, edut, käyttötapaukset ja paljon muuta

Oletko kiinni WebAssembly-hypeen, mutta et ole varma, mikä se on? Tässä on alhainen.

WebAssembly tai Wasm on binäärikoodimuoto ohjelmien luomiseen, joita voidaan suorittaa missä tahansa tietokonearkkitehtuurissa.

Järjestelmä käsittää virtuaalikoneen ja kääntäjän, joka kääntää tietokonekoodin ohjelmointikielistä, kuten C tai C++ ihmisen luettavaan .wat- ja binäärimuotoon .wasm.

WebAssemblyn alkuperäinen tavoite oli antaa ohjelmoijille mahdollisuus kehittää tehokkaita sovelluksia web-sivuille mahdollistamalla lähes alkuperäiset suoritusnopeudet selaimen sisällä. Mutta tekniikka näyttää nyt kehittyvän selaimien ulkopuolelle ja pilveen.

Tämä opas näyttää kaiken, mitä sinun tulee tietää tästä kehittyvästä teknologiasta, sen vahvuuksista ja heikkouksista sekä sen tulevaisuuden mahdollisuuksista.

Mikä on WebAssembly?

WebAssembly on binäärikoodimuoto, joka toimii virtuaalikoneessa ja johon eri kielet voivat kääntää. Se on suunniteltu kannettavaksi ja sitä voidaan käyttää verkkoselaimessa tai palvelinsovelluksena.

WebAssembly julkaistiin ensimmäisen kerran vuonna 2017, ja se on ollut W3C-suositus vuodesta 2019 lähtien, ja sitä ylläpitävät useat avustajat, kuten Mozilla, Google, Microsoft, Red Hat ja monet muut.

Alkuperäinen tavoite oli kehittää lähes alkuperäisiä suoritusnopeuksia, joita saat selaimen C/C++-sovelluksista. Sen on myös tarkoitus olla turvallinen, avoimen standardin mukainen, virheenkorjattava ja versioimaton verkkostandardi, joka on taaksepäin yhteensopiva ja JavaScript-yhteensopiva.

Miten WebAssembly toimii?

WebAssembly on suunniteltu ajonaikaiseksi moottoriksi, kuten Java tai JavaScript, joka voidaan upottaa selain- tai palvelinympäristöön .wasm-binääri- tai .wat-tekstimuotoon käännetyn tietokonekoodin suorittamiseksi.

Kirjoittaakseen koodia WebAssemblyn suorittamista varten kehittäjä kirjoittaa ohjelman millä tahansa useista tuetuista kielistä. Käännä se sitten WebAssembly-kääntäjällä joko AOT:lla (Ahead of Time) tai JIT:llä (just in time).

Tämä koodi voi tehdä suurimman osan työstä suoritusympäristössä, mutta se ei voi käyttää tai muokata selaimen DOM-objekteja. Tällaisen vuorovaikutuksen on läpäistävä JavaScript.

WebAssembly-mallisovelluksen luominen

Yksinkertaisen Wasm-sovelluksen luominen verkkoselaimelle on mahdollista vain muutamalla vaiheella, kuten näet alla:

  1. Lataa ja asenna Emscripten SDK.
  2. Kirjoita näytteesi helloworld.c koodi tai tee se C++/Rustissa, jos haluat.
  3. ajaa emcc helloworld.c -s WASM=1 -s helloworld.html päätteessä kääntääksesi koodin WebAssemblyyn Emscriptenin avulla. Se luo tarvitsemasi Wasm-binaari-, HTML- ja JavaScript-tiedostot (liimakoodi).
  4. Käytä helloworld.html-sivua verkkoselaimen kautta.

WebAssemblyn edut

On monia syitä ottaa käyttöön WebAssembly ja siihen liittyvät tekniikat, mukaan lukien:

  • Lähes alkuperäistä suorituskykyä – WebAssemblylla on niin matalan tason suunnittelu, että se tarjoaa samanlaisia ​​suorituksia kuin matalan tason kielet, kuten C ja C++.
  • Turvallisuus – Järjestelmä on suunniteltu turvalliseksi eristämällä se virtuaaliseen ympäristöön, jossa on rajoitettu pääsy järjestelmään.
  • Avoin standardi – Monet organisaatiot ja yksityishenkilöt osallistuvat WebAssemblyyn, ja se on virallinen W3C-suositus.
  • Kevyt – WebAssembly kääntää binäärikoodin, joka suoritetaan virtuaalikoneessa. Tämä koodi on kannettava, eikä se tarvitse tai toimita järjestelmätiedostojen mukana.
  • Monikielinen tuki – WebAssemblyksi voidaan kääntää yli 50 kieltä.
  • Alusta riippumaton – WebAssembly-virtuaalikone on suunniteltu kullekin arkkitehtuurille esittämään saman ajonaikaisen ympäristön. Kehittäjän tarvitsee vain kirjoittaa koodi WebAssemblylle.

WebAssemblyn rajoitukset

  • Työn alla – Standardia kehitetään edelleen, joten monia ominaisuuksia ja parannuksia on vielä tulossa.
  • Ei roskien keräilyä – WebAssemblysta puuttuu edelleen roskien kerääminen, vaikka se saattaa tulla pian käyttöön.
  • Ei DOM-käyttöä – Et voi käyttää verkkoselaimen DOM:ia suoraan WebAssemblysta, sinun on käytävä JavaScriptin läpi.

WebAssembly vs Java

Java on eräänlainen WebAssemblyn varhaisin toteutus. Se suunniteltiin kerran kirjoitettavaksi, missä tahansa kirjoitettavaksi kieleksi, mutta siitä aiheutui paljon ongelmia matkan varrella.

Aivan kuten Java, WebAssembly käyttää RE:tä (Runtime Environment) koodinsa suorittamiseen, mutta toisin kuin Java, voit kirjoittaa WebAssemblyn valitsemallasi kielellä.

WebAssembly vs JavaScript

WebAssembly suoritetaan selaimessa tai muussa isäntäympäristössä, aivan kuten JavaScript. Kuitenkin, jos JavaScript toimitetaan suoritusympäristöön tekstimuodossa ja käännetään juuri oikeaan aikaan, WebAssemblyssa on sekä teksti- että binäärimuodot.

Verkkoselaimissa JavaScriptillä on pääsy DOM:iin, kun taas WebAssemblylla ei. Kuitenkin, mitä tulee suoritusnopeuteen, WebAssembly voittaa JavaScriptin lähes alkuperäisen koodin suoritusnopeuksilla.

Nopeus on se, missä WebAssembly loistaa, ja siksi se on ihanteellinen niin moneen käyttöön. Voit ladata WebAssemblyn selaimeen JavaScriptin avulla, ja kaksi koodia voivat toimia yhdessä ja jakaa resursseja.

WebAssembly vs Docker vs Kubernetes

Docker ja Kubernetes ovat kaksi suosittua pilviteknologiaa tietojenkäsittely. Docker on konttitekniikka, jonka avulla kehittäjät voivat pakata sovelluksen kaikkine järjestelmäriippuvuuksineen yhdeksi paketiksi. Tämän ansiosta sovelluksen käyttöönotto on helppoa missä tahansa pilviympäristössä sekunnissa tai lyhyemmässä ajassa.

Kubernetes puolestaan ​​on avoimen lähdekoodin järjestelmä konttisovellusten, kuten Dockerin, CRI-O:n, containerd- ja minkä tahansa Kubernetes CRI (Container Runtime Interface) -toteutuksen hallintaan ja käyttöönottoon. Kubernetes helpottaa myös pilvikäyttöönottoa useiden palvelimien tai virtuaalikoneiden välillä.

Tästä näkökulmasta WebAssembly on enemmän samanlainen kuin Docker, ja se voidaan saada toimimaan konttipohjaisena pilvisovelluksena Kubernetesin avulla. Se tarjoaa myös monia etuja Dockeriin verrattuna, mutta se ei todennäköisesti korvaa sitä.

Selaimen ulkopuolella

Alussa oli web-palvelimia. Sinun piti omistaa täysi kone palvelimeksi. Sitten oli virtuaalikoneita tai VM:itä, jotka antoivat palvelimen toimia vain yhdellä tai useammalla suoritinsäikeellä. Silti sinulla oli oltava erillinen VM.

Cloud computing mahdollisti palvelimien käynnistämisen ja käyttämisen vain tarvittaessa kontiloimalla sovellukset. Tämä johti kustannusten alenemiseen, koska jouduit maksamaan vain siitä, mitä käytät – ei enää erityisiä koneita. Mutta vielä on muutamia ongelmia.

Ensinnäkin Docker-tiedostot voivat olla useita gigatavuja suuria, mikä tarkoittaa pientä viivettä käynnistyksen ja muut hallintoon liittyvät asiat. Samanlainen Wasm-tiedosto voi kuitenkin olla vain muutaman megatavun kokoinen, koska se on esikäännetty binaari. Tämä antaa sille paljon nopeamman käynnistysajan kuin Docker, täydellinen tiettyihin aikakriittisiin sovelluksiin.

Toiseksi WebAssemblyn suunnittelu tarkoittaa sitä, että kehittäjän ei tarvitse hallita ja osoittaa järjestelmäresursseja, hän voi yksinkertaisesti päästä asiaan käyttämällä valitsemaansa ohjelmointikieltä.

Nämä ominaisuudet tekevät WebAssemblysta ihanteellisen pilvimikropalvelujen suorittamiseen, vaikka Docker-sovellukset ovat edelleen parempia sovelluksiin, jotka vaativat enemmän käyttöympäristön ja tiedostojärjestelmän hallintaa.

Lisätietoja, projekteja, kuten WasmCloud ja WasmEdge kehittelevät WebAssemblysta elinkelpoista tietokonealustaa.

Wasm-käyttötapaukset

WebAssemblylle on monia käyttötapauksia sen erikoisen luonteen vuoksi. Ne voidaan jakaa kolmeen suureen ryhmään; selaimen sisäiset, selaimen ulkopuoliset ja hybridiasetukset.

Selaimen sisäinen tyyppi on itsestään selvä ja selaimen ulkopuolinen viittaa enimmäkseen palvelin-, IoT- ja pilvikäyttöön, kun taas hybridi viittaa näiden kahden yhdistelmään.

Seuraavassa on katsaus käyttötapauksiin, joissa Wasm voi loistaa:

  • Jo olemassa korkean suorituskyvyn koodi – Vanha mutta upea koodi, jonka voit vain siirtää WebAssemblyyn.
  • Uusi korkean suorituskyvyn koodi – Ne, jotka sinun täytyy suunnitella ja toteuttaa tyhjästä.
  • Työpöytäsovellusten siirtäminen verkkoon – Tämä voisi avata uudenlaisia ​​web-pohjaisia ​​työpöytäratkaisuja, kuten web-pohjainen videoeditointi.
  • Cloud computing – Juokse Dockerin ja Kubernetesin rinnalla uusia mahdollisuuksia.

Seuraavassa on katsaus tiettyihin sovelluksiin ja skenaarioihin, joissa Wasm voi loistaa:

  • Videon ja kuvan editointi
  • Pelisuunnittelu
  • AI sovellukset
  • Virtuaaliset ja lisätyn todellisuuden sovellukset
  • Musiikkisovellukset
  • P2P-sovellukset
  • Palvelinpuolen sovellukset
  • Pilvi/klusterilaskelmat
  • Tietokoneavusteinen suunnittelu
  • OS-alustan simulointi
  • Salaus
  • Paikallinen web-palvelin
  • Etätyöpöytäsovellukset
  • Tieteelliset visualisoinnit
  • Hybridi-natiivisovellukset älypuhelimissa
  • IoT-laitteilla

Luettelo tuetuista kielistä ja kehyksistä

WebAssemblyyn käännetään yli 50 kieltä, ja tässä on joitain suosituimmista:

  • C
  • C + +
  • R
  • Rubiini
  • Nopea
  • Go
  • Kotlin
  • Ruoste
  • PHP
  • bleiseri – Kehys .NET-kehittäjille.
  • JwebAssembly - Kääntäjä Java-tavukoodille ja vastaaville kielille, kuten JRuby, Jython, Groovy, Scala ja Kotlin.
  • Marjakuusi – Rust-kehys monisäikeisten verkkosovellusten luomiseen WebAssemblyn avulla.
  • AssemblyScript – Kieli, joka on erityisesti suunniteltu luomaan WebAssembly-koodia.
  • Vilja – Voimakkaasti tyypitetty toiminnallinen kieli.
  • Motoko

Löydät lisää kieliä tätä.

Luettelo WebAssemblyn suoritusajoista ja työkaluista

  • Kaikissa yleisimmissä selaimissa on Wasm-tuki
  • Pyodide – Python-ajoaika selaimessa Python-tieteellisellä pinolla, mukaan lukien Pandas, NumPy, SciPy.
  • wamr
  • paino – Mikropalveluille ja verkkosovelluksille
  • Olinko minä – Modulaarinen järjestelmäliitäntä
  • WasmTime – Nopea ja turvallinen WebAssembly-ajoaika.
  • Pesukone
  • Lucet
  • wasmCloud – Pilviympäristö
  • Krustlet – Kubernetes kublete Wasmin ajamiseen, kirjoitettu Rustilla.
  • WasmEdge – Pilvi- ja reuna-ajoympäristö

Yhteenveto

Olemme tulleet WebAssembly-matkamme päätökseen ja sen sisältöön tietojenkäsittelyssä. Ja kuten näet, se sisältää paljon lupauksia.

Se on kuitenkin vielä keskeneräinen, mutta jatkuvassa kehityksessä. Ja jos olet kiinnostunut, voit etsiä lisätietoja tätä, tätäja tätä.

Nnamdi Okeke

Nnamdi Okeke

Nnamdi Okeke on tietokoneharrastaja, joka rakastaa lukea monenlaisia ​​kirjoja. Hän pitää Linuxista parempana kuin Windows/Mac ja on käyttänyt
Ubuntu alusta alkaen. Voit saada hänet kiinni Twitterissä bongotrax

Artikkelit: 285

Vastaanota teknisiä tavaroita

Tekniset trendit, startup-trendit, arvostelut, online-tulot, verkkotyökalut ja markkinointi kerran tai kahdesti kuukaudessa