WebAssembly: prasmė, pranašumai, naudojimo atvejai ir dar daugiau

Pakliuvote į „WebAssembly“ ažiotažą, bet tiksliai nežinote, kas tai yra? Čia yra žemumas.

„WebAssembly“ arba „Wasm“ yra dvejetainio kodo formatas, skirtas kurti programas, kurios gali veikti bet kurioje kompiuterio architektūroje.

Sistemą sudaro virtuali mašina ir kompiliatorius, kuris verčia kompiuterio kodą iš programavimo kalbų, tokių kaip C arba C++ į žmogaus skaitomus .wat ir dvejetainius .wasm formatus.

Pradinis „WebAssembly“ tikslas buvo leisti programuotojams kurti didelio našumo programas tinklalapiams, naršyklėje įgalinant beveik vietinį vykdymo greitį. Tačiau atrodo, kad dabar technologija vystosi ne tik naršyklėse, bet ir debesyje.

Šiame vadove pateikiama viskas, ką reikia žinoti apie šią besivystančią technologiją, jos stipriąsias ir silpnąsias puses, taip pat apie jos ateities potencialą.

Kas yra WebAssembly?

WebAssembly yra dvejetainio kodo formatas, veikiantis virtualioje mašinoje ir kurį galima kompiliuoti skirtingomis kalbomis. Jis sukurtas taip, kad būtų nešiojamas ir gali veikti žiniatinklio naršyklėje arba kaip serverio programa.

Pirmą kartą išleista 2017 m., „WebAssembly“ yra W3C rekomendacija nuo 2019 m. ir ją prižiūri daugybė bendradarbių, įskaitant „Mozilla“, „Google“, „Microsoft“, „Red Hat“ ir daugelį kitų.

Pradinis tikslas buvo sukurti beveik vietinį vykdymo greitį, kokį galėtumėte pasiekti naudojant C/C++ programas naršyklėje. Tai taip pat yra saugus, atviro standarto, derinamas ir be versijų žiniatinklio standartas, suderinamas atgal ir suderinamas su JavaScript.

Kaip veikia WebAssembly?

„WebAssembly“ sukurtas kaip vykdymo variklis, pvz., „Java“ arba „JavaScript“, kurį galima įterpti į naršyklės arba serverio aplinką, kad būtų paleistas kompiuterio kodas, sudarytas dvejetainiu .wasm arba .wat teksto formatu.

Norėdami parašyti kodą WebAssembly vykdymui, kūrėjas rašo programą bet kuria iš daugelio palaikomų kalbų. Tada sukompiliuokite jį naudodami WebAssembly kompiliatorių AOT (prieš laiką) arba JIT (laiku).

Šis kodas gali atlikti daugumą darbų vykdymo aplinkoje, tačiau jis negali pasiekti ar modifikuoti naršyklės DOM objektų. Bet kokia tokia sąveika turi vykti per „JavaScript“.

Kaip sukurti WebAssembly programos pavyzdį

Sukurti paprastą Wasm programą žiniatinklio naršyklei galima atlikus tik kelis veiksmus, kaip matote toliau:

  1. Atsisiųsti ir įdiegti Emscripten SDK.
  2. Parašykite savo pavyzdį kolegų pasaulis.c kodą arba padarykite tai C++/Rust, jei norite.
  3. paleisti emcc helloworld.c -s WASM=1 -s helloworld.html terminale, kad sukurtumėte kodą į WebAssembly su Emscripten. Jis sukurs jums reikalingus Wasm dvejetainius, HTML ir JavaScript failus (klijų kodas).
  4. Pateikite helloworld.html puslapį per savo interneto naršyklę.

WebAssembly pranašumai

Yra daug priežasčių, kodėl verta naudoti WebAssembly ir su ja susijusias technologijas, įskaitant:

  • Beveik vietinis našumas – „WebAssembly“ turi tokį žemo lygio dizainą, kad siūlo našumą, panašų į žemo lygio kalbas, tokias kaip C ir C++.
  • saugumas – Sistema sukurta taip, kad būtų saugi, izoliuojant ją virtualioje aplinkoje su ribota prieiga prie sistemos.
  • Atviras standartas – Daugelis organizacijų ir asmenų prisideda prie WebAssembly ir tai yra oficiali W3C rekomendacija.
  • Lengvas svoris – „WebAssembly“ kompiliuoja į dvejetainį kodą, kuris bus vykdomas virtualioje mašinoje. Šis kodas yra nešiojamas ir jam nereikia sistemos failų.
  • Palaikymas keliomis kalbomis – Į WebAssembly galima kompiliuoti daugiau nei 50 kalbų.
  • Nepriklausoma nuo platformos – „WebAssembly“ virtualioji mašina sukurta kiekvienai architektūrai, kad pateiktų tą pačią vykdymo aplinką. Viskas, ką kūrėjas turi padaryti, tai parašyti „WebAssembly“ kodą.

WebAssembly apribojimai

  • Darbas vyksta – Standartas vis dar kuriamas, todėl daug funkcijų ir patobulinimų dar laukia.
  • Jokio šiukšlių išvežimo – „WebAssembly“ vis dar trūksta šiukšlių surinkimo, nors ji netrukus gali būti įdiegta.
  • Nėra DOM prieigos – Negalite pasiekti žiniatinklio naršyklės DOM tiesiogiai iš „WebAssembly“, turėsite pereiti per „JavaScript“.

WebAssembly vs Java

„Java“ yra tarsi ankstyviausias „WebAssembly“ diegimas. Ji buvo sukurta kaip vieną kartą rašoma, bet kur paleidžiama kalba, tačiau pakeliui kilo daug problemų.

Kaip ir Java, WebAssembly savo kodui vykdyti naudoja RE (vykdymo aplinką), tačiau skirtingai nei Java, galite rašyti WebAssembly pasirinkta kalba.

WebAssembly vs JavaScript

WebAssembly vykdoma naršyklėje ar kitoje pagrindinio kompiuterio aplinkoje, kaip ir JavaScript. Tačiau kai „JavaScript“ į vykdymo aplinką pristatomas teksto formatu ir sukompiliuojamas pačiu laiku, „WebAssembly“ turi ir teksto, ir dvejetainius formatus.

Žiniatinklio naršyklėse „JavaScript“ turi prieigą prie DOM, o „WebAssembly“ neturi. Tačiau, kalbant apie vykdymo greitį, „WebAssembly“ lenkia „JavaScript“ savo beveik vietinio kodo vykdymo greičiu.

Greitis yra ta vieta, kur „WebAssembly“ šviečia ir todėl ji idealiai tinka daugeliui naudojimo būdų. Galite įkelti „WebAssembly“ į naršyklę naudodami „JavaScript“, o abu kodai gali veikti kartu ir bendrinti išteklius.

WebAssembly vs Docker vs Kubernetes

„Docker“ ir „Kubernetes“ yra dvi iš populiariausių debesų kompiuterijos technologijų. „Docker“ yra konteinerio technologija, leidžianti kūrėjams supakuoti programą su visomis sistemos priklausomybėmis į vieną paketą. Tai leidžia lengvai įdiegti programą bet kurioje debesies aplinkoje per sekundę ar greičiau.

Kita vertus, „Kubernetes“ yra atvirojo kodo sistema, skirta valdyti ir diegti konteinerines programas, tokias kaip „Docker“, CRI-O, konteinerius ir bet kokį „Kubernetes“ CRI (konteinerio vykdymo sąsajos) diegimą. „Kubernetes“ taip pat palengvina debesies diegimo mastelį keliuose serveriuose ar virtualiose mašinose.

Šiuo požiūriu „WebAssembly“ yra panašesnis į „Docker“ ir gali būti paleistas kaip konteinerinė debesies programa naudojant „Kubernetes“. Jis taip pat turi daug pranašumų, palyginti su „Docker“, bet greičiausiai jo nepakeis.

Už naršyklės ribų

Pradžioje buvo interneto serveriai. Jūs turėjote skirti visą mašiną kaip serverį. Tada buvo virtualios mašinos arba VM, kurios leido serveriui veikti tik vienoje ar daugiau procesoriaus gijų. Vis dėlto reikėjo turėti tam skirtą VM.

Debesis Kompiuterija leido paleisti ir paleisti serverius tik tada, kai reikia, talpinant programas. Dėl to sumažėjo sąnaudos, nes reikėjo mokėti tik už tai, ką naudojate – nebereikia specialių mašinų. Tačiau vis dar yra keletas problemų.

Pirma, docker failai gali būti kelių gigabaitų dydžio, o tai reiškia nedidelį paleidimo vėlavimą ir kitas valdymo problemas. Tačiau panašus Wasm failas gali būti tik kelių MB dydžio, nes jis yra iš anksto sukompiliuotas dvejetainis failas. Dėl to jis paleidžiamas daug greičiau nei „Docker“, puikiai tinkantis tam tikroms laiko sąlygoms svarbioms programoms.

Antra, „WebAssembly“ dizainas reiškia, kad kūrėjui nereikia valdyti ir priskirti sistemos išteklių, jis gali tiesiog pasiekti reikalą naudodamas savo pasirinktą programavimo kalbą.

Dėl šių savybių „WebAssembly“ idealiai tinka debesies mikropaslaugoms paleisti, nors „Docker“ programos vis dar yra tinkamesnės programoms, kurioms reikia daugiau valdyti operacinę aplinką ir failų sistemą.

Norėdami gauti daugiau informacijos, projektų, pvz WasmCloud bei WasmEdge kuria „WebAssembly“ į perspektyvią kompiuterių platformą.

Wasm naudojimo atvejai

Yra daug WebAssembly naudojimo atvejų, atsižvelgiant į jos savitą pobūdį. Juos galima suskirstyti į tris dideles grupes; naršyklėje, už jos ribų ir hibridinės sąrankos.

Naršyklėje esantis tipas yra savaime suprantamas, o išorinis naršyklės tipas dažniausiai reiškia serverio, daiktų internetą ir debesies diegimą, o hibridinis – šių dviejų derinį.

Toliau pateikiami naudojimo atvejai, kai Wasm gali būti puikus:

  • Jau egzistuoja didelio našumo kodas - Senas, bet nuostabus kodas, kurį galite tiesiog perkelti į „WebAssembly“.
  • Naujas didelio našumo kodas – Tie, kuriuos turite sukurti ir įgyvendinti nuo nulio.
  • Darbalaukio programų perkėlimas į internetą – Tai gali atverti naują internetinių darbalaukio sprendimų, tokių kaip internetinis vaizdo įrašų redagavimas.
  • Debesis Kompiuterija – Kartu su Docker ir Kubernetes ieškokite naujų galimybių.

Toliau apžvelgiamos konkrečios programos ir scenarijai, kuriuose Wasm gali tobulėti:

  • Vaizdo ir vaizdo redagavimas
  • Žaidimo dizainas
  • PG programos
  • Virtualios ir papildytos realybės programos
  • Muzikos programos
  • P2P programos
  • Serverio pusės programos
  • Debesų / klasterių skaičiavimai
  • Dizainas padarytas kompiuterio pagalba
  • OS platformos modeliavimas
  • Šifravimas
  • Vietinis žiniatinklio serveris
  • Nuotolinio darbalaukio programos
  • Mokslinės vizualizacijos
  • Hibridinės vietinės programos išmaniuosiuose telefonuose
  • „IoT“ įrenginiuose

Palaikomų kalbų ir sistemų sąrašas

„WebAssembly“ kompiliuojama daugiau nei 50 kalbų, o štai keletas populiariausių:

  • C
  • C + +
  • R
  • rubinas
  • greitai
  • Go
  • Kotlinas
  • Rust
  • PHP
  • „Blazor“ – Sistema .NET kūrėjams.
  • JwebAssembly – Kompiliatorius, skirtas Java baitiniam kodui ir susijusioms kalboms, tokioms kaip JRuby, Jython, Groovy, Scala ir Kotlin.
  • kukmedis – „Rust“ sistema, skirta kelių gijų žiniatinklio programoms kurti naudojant „WebAssembly“.
  • AssemblyScript – Kalba, specialiai sukurta WebAssembly kodui kurti.
  • Grūdai – Stipriai tipizuota funkcinė kalba.
  • Motoko

Galite rasti daugiau kalbų čia.

WebAssembly vykdymo laiko ir įrankių sąrašas

  • Visos pagrindinės naršyklės palaiko Wasm
  • Piodidas – „Python“ vykdymo laikas naršyklėje su Python moksliniu kaminu, įskaitant „Pandas“, „NumPy“, „SciPy“.
  • wamr
  • svorio – Mikropaslaugoms ir žiniatinklio programoms
  • Wasi – Modulinė sistemos sąsaja
  • WasmTime - Greitas ir saugus WebAssembly vykdymo laikas.
  • Wasmer
  • Lucet
  • wasmCloud – Debesų aplinka
  • Krustletas – Kubernetes kublete Wasm paleidimui, parašyta Rust.
  • WasmEdge - Debesų ir krašto vykdymo aplinka

Išvada

Priėjome savo kelionės į „WebAssembly“ ir tai, ką ji turi kompiuteriams, pabaigą. Ir, kaip matote, jis žada daug.

Nors tai vis dar nebaigta, bet nuolat tobulinama. O jei domina, daugiau informacijos rasite čia, čiair čia.

Nnamdi Okeke

Nnamdi Okeke

Nnamdi Okeke yra kompiuterių entuziastas, mėgstantis skaityti įvairias knygas. Jis teikia pirmenybę „Linux“, o ne „Windows“ / „Mac“ ir naudoja
Ubuntu nuo pirmųjų dienų. Galite sugauti jį Twitter per bongotraksas

Straipsniai: 298

Gaukite techninių dalykų

Technikos tendencijos, paleidimo tendencijos, apžvalgos, pajamos internetu, žiniatinklio įrankiai ir rinkodara kartą ar du per mėnesį