WebAssembly: tähendus, eelised, kasutusjuhtumid ja palju muud

Kas olete sattunud WebAssembly hüppesse, kuid pole täpselt kindel, mis see on? Siin on madalseis.

WebAssembly või Wasm on kahendkoodivorming programmide loomiseks, mida saab käivitada mis tahes arvutiarhitektuuris.

Süsteem koosneb virtuaalmasinast ja kompilaatorist, mis tõlgib arvutikoodi programmeerimiskeeltest, nagu C või C++, inimloetavatesse .wat- ja binaarsetesse .wasm-vormingutesse.

WebAssembly algne eesmärk oli võimaldada programmeerijatel arendada veebilehtede jaoks suure jõudlusega rakendusi, võimaldades brauseris peaaegu natiivse täitmiskiiruse. Kuid tundub, et tehnoloogia areneb nüüd väljaspool brausereid ja pilve.

See juhend näitab teile kõike, mida peate teadma selle areneva tehnoloogia, selle tugevate ja nõrkade külgede ning tulevikupotentsiaali kohta.

Mis on WebAssembly?

WebAssembly on kahendkoodivorming, mis töötab virtuaalmasinas ja mida saab kompileerida erinevates keeltes. See on loodud kaasaskantavaks ja võib töötada veebibrauseris või serverirakendusena.

Esmakordselt 2017. aastal välja antud WebAssembly on W3C soovitus alates 2019. aastast ja seda haldavad paljud kaasautorid, sealhulgas Mozilla, Google, Microsoft, Red Hat ja paljud teised.

Algne eesmärk oli arendada välja peaaegu omapärane täitmiskiirus, nagu võiks leida brauseris C/C++ rakenduste puhul. See on mõeldud ka turvalise, avatud standardiga, silutava ja versioonivaba veebistandardina, mis on tagasiühilduv ja ühildub JavaScriptiga.

Kuidas WebAssembly töötab?

WebAssembly on loodud käitusmootorina (nt Java või JavaScript), mida saab manustada brauseri või serveri keskkonda, et käitada arvutikoodi, mis on kompileeritud .wasm-binaar- või .wat-tekstivormingus.

WebAssembly käivitamiseks koodi kirjutamiseks kirjutab arendaja programmi mis tahes paljudest toetatud keeltest. Seejärel kompileerige see WebAssembly kompilaatori abil kas AOT (ahead of Time) või JIT (just in time) abil.

See kood suudab täitmiskeskkonnas enamiku töödest ära teha, kuid see ei pääse brauseri DOM-objektidele juurde ega saa neid muuta. Iga selline interaktsioon peab läbima JavaScripti.

WebAssembly näidisrakenduse loomine

Veebibrauseri jaoks lihtsa Wasmi rakenduse loomine on võimalik vaid mõne sammuga, nagu näete allpool:

  1. Laadige alla ja installige Emscripteni SDK.
  2. Kirjutage oma näidis kaasmaailm.c koodi või tehke seda C++/Rust, kui soovite.
  3. jooks emcc helloworld.c -s WASM=1 -s helloworld.html terminalis, et koostada kood Emscripteniga WebAssemblysse. See loob Wasmi binaar-, HTML- ja JavaScript-failid, mida vajate (liimikood).
  4. Esitage helloworld.html lehte oma veebibrauseri kaudu.

WebAssembly eelised

WebAssembly ja sellega seotud tehnoloogiate kasutuselevõtuks on palju põhjuseid, sealhulgas:

  • Peaaegu omapärane jõudlus - WebAssemblyl on nii madala taseme disain, et see pakub madala taseme keeltele, nagu C ja C++, sarnaseid jõudlusi.
  • TURVALISUS – Süsteem on loodud turvaliseks, eraldades selle virtuaalsesse keskkonda, millel on piiratud juurdepääs süsteemile.
  • Avatud standard – WebAssemblysse panustavad paljud organisatsioonid ja üksikisikud ning see on ametlik W3C soovitus.
  • Peegel on kerge – WebAssembly kompileerib kahendkoodiks, mida käivitatakse virtuaalmasinas. See kood on kaasaskantav ja ei vaja süsteemifaile ega tule kaasa.
  • Mitmekeelne tugi – WebAssemblysse saab kompileerida üle 50 keele.
  • Platvorm sõltumatu – WebAssembly virtuaalmasin on loodud iga arhitektuuri jaoks, et esitada sama käituskeskkond. Kõik, mida arendaja peab tegema, on WebAssembly jaoks koodi kirjutamine.

WebAssembly piirangud

  • Töö käib – Standard on alles väljatöötamisel ja seetõttu on palju funktsioone ja täiustusi veel ees.
  • Ei mingit prügivedu – WebAssemblyl puudub endiselt prügikoristus, kuigi see võib peagi kasutusele võtta.
  • DOM-i juurdepääsu pole – Veebibrauseri DOM-ile ei pääse otse WebAssembly kaudu juurde, peate läbima JavaScripti.

WebAssembly vs Java

Java on omamoodi WebAssembly varaseim juurutamine. See oli loodud üks kord kirjutatava ja kõikjal käivitatava keelena, kuid sellel tekkis palju probleeme.

Nii nagu Java puhul, kasutab WebAssembly oma koodi täitmiseks RE (Runtime Environment), kuid erinevalt Java-st saate WebAssembly kirjutada oma valitud keeles.

WebAssembly vs JavaScript

WebAssembly käivitub brauseris või muus hostikeskkonnas, täpselt nagu JavaScript. Kui aga JavaScript toimetatakse täitmiskeskkonda tekstivormingus ja kompileeritakse õigel ajal, on WebAssemblyl nii teksti- kui ka binaarvormingus.

Veebibrauserites on JavaScriptil juurdepääs DOM-ile, WebAssemblyl aga mitte. Kui aga rääkida täitmiskiirusest, siis WebAssembly edestab JavaScripti oma peaaegu algse koodi täitmiskiirusega.

Kiirus on koht, kus WebAssembly särab ja seetõttu sobib see ideaalselt paljudeks kasutusaladeks. Saate laadida WebAssembly brauserisse JavaScripti abil ja kaks koodi saavad koos töötada ja ressursse jagada.

WebAssembly vs Docker vs Kubernetes

Docker ja Kubernetes on kaks populaarsemat pilvandmetöötluse toitetehnoloogiat. Docker on konteinertehnoloogia, mis võimaldab arendajatel pakkida rakenduse koos kõigi selle süsteemisõltuvustega ühte paketti. See muudab rakenduse juurutamise mis tahes pilvekeskkonnas sekundiga või vähemaga hõlpsaks.

Kubernetes seevastu on avatud lähtekoodiga süsteem konteinerrakenduste, nagu Docker, CRI-O, konteineri ja mis tahes Kubernetes CRI (Container Runtime Interface) juurutamiseks, haldamiseks ja juurutamiseks. Kubernetes hõlbustab ka pilve juurutamist mitme serveri või virtuaalmasina vahel.

Sellest vaatenurgast on WebAssembly sarnasem Dockeriga ja seda saab Kubernetese abil töötada konteineris pilverakendusena. See pakub ka palju eeliseid võrreldes Dockeriga, kuid tõenäoliselt ei asenda seda.

Väljaspool brauserit

Alguses olid veebiserverid. Serveriks tuli pühendada täis masin. Siis olid virtuaalsed masinad ehk VM-id, mis võimaldasid serveril töötada ainult ühel või mitmel CPU lõimel. Siiski pidi teil olema spetsiaalne VM.

Cloud computing võimaldas servereid käivitada ja käitada ainult siis, kui see on vajalik, rakenduste konteinerisse paigutades. See tõi kaasa kulude vähenemise, kuna pidite maksma ainult selle eest, mida kasutate – mitte enam spetsiaalseid masinaid. Kuid siiski on mõned probleemid.

Esiteks võivad dokifailid olla mitu gigabaiti suured ja see tähendab väikest viivitust käivitamisel ja muudel haldusprobleemidel. Sarnane Wasm-fail võib aga olla vaid mõne MB suur, kuna tegemist on eelnevalt kompileeritud kahendfailiga. See annab sellele palju kiirema käivitusaja kui Docker, mis sobib ideaalselt teatud ajakriitiliste rakenduste jaoks.

Teiseks tähendab WebAssembly disain, et arendaja ei pea haldama ega määrama süsteemiressursse, ta saab lihtsalt oma valitud programmeerimiskeelt kasutades asja juurde jõuda.

Need funktsioonid muudavad WebAssembly ideaalseks pilve mikroteenuste käitamiseks, kuigi Dockeri rakendused on siiski eelistatavad rakenduste jaoks, mis nõuavad suuremat kontrolli operatsioonikeskkonna ja failisüsteemi üle.

Lisateabe saamiseks projektid nagu WasmCloud ja WasmEdge arendavad WebAssemblyt elujõuliseks arvutiplatvormiks.

Wasmi kasutusjuhtumid

Arvestades selle eripära, on WebAssembly kasutusjuhtumeid palju. Need võib jagada kolme suurde rühma; brauserisisene, brauseriväline ja hübriidseaded.

Brauserisisene tüüp on iseenesestmõistetav ja väljaspool brauserit viitab enamasti serveri-, asjade Interneti- ja pilvekasutusele, hübriid aga nende kahe kombinatsioonile.

Järgnevalt vaatleme kasutusjuhtumeid, kus Wasm võib silma paista:

  • Juba olemasolev suure jõudlusega kood - Vana, kuid imeline kood, mille saate lihtsalt WebAssemblysse portida.
  • Uus suure jõudlusega kood – Need, mida peate nullist kujundama ja rakendama.
  • Töölauarakenduste portimine veebi – See võib avada uut sorti veebipõhiseid töölaualahendusi, näiteks veebipõhine videotöötlus.
  • Cloud computing – Dockeri ja Kubernetese kõrval jooksmine uute võimaluste nimel.

Järgnevalt vaatleme konkreetseid rakendusi ja stsenaariume, kus Wasm saab silma paista:

  • Video- ja pilditöötlus
  • Mängu kujundus
  • AI rakendused
  • Virtuaal- ja liitreaalsuse rakendused
  • Muusikarakendused
  • P2P rakendused
  • Serveripoolsed rakendused
  • Pilve/klastri arvutused
  • Arvutipõhine disain
  • OS-i platvormi simulatsioon
  • Krüpteerimine
  • Kohalik veebiserver
  • Kaugtöölaua rakendused
  • Teaduslikud visualiseeringud
  • Hübriidsed omarakendused nutitelefonides
  • IoT seadmetes

Toetatud keelte ja raamistike loend

WebAssemblysse kompileeritakse üle 50 keele ja siin on mõned kõige populaarsemad:

  • C
  • C + +
  • R
  • rubiin
  • Kiire
  • Go
  • Kotlin
  • Rust
  • PHP
  • Blazer – raamistik .NET-i arendajatele.
  • JwebAssembly - Java baitkoodi ja sarnaste keelte, nagu JRuby, Jython, Groovy, Scala ja Kotlin, kompilaator.
  • jugapuu – Rust-raamistik mitme lõimega veebirakenduste loomiseks WebAssembly abil.
  • AssemblyScript – Keel, mis on spetsiaalselt loodud WebAssembly koodi loomiseks.
  • Tera – Tugevalt tüüpiline funktsionaalne keel.
  • Motoko

Leiad rohkem keeli siin.

WebAssembly käitusaegade ja tööriistade loend

  • Kõigil suurematel brauseritel on Wasmi tugi
  • Püodiid – Pythoni käitusaeg brauseris Pythoni teadusliku virnaga, sealhulgas Pandas, NumPy, SciPy.
  • wamr
  • kaal – Mikroteenuste ja veebirakenduste jaoks
  • Wasi - Modulaarne süsteemiliides
  • WasmTime - Kiire ja turvaline WebAssembly käitusaeg.
  • Wasmer
  • Lucet
  • wasmCloud – Pilvekeskkond
  • Krustlet – Kubernetes kublete Wasmi jooksmiseks, kirjutatud Rust.
  • WasmEdge - Pilve ja serva käituskeskkond

Järeldus

Oleme jõudnud WebAssembly ja selle andmetöötluse jaoks mõeldud teekonna lõppu. Ja nagu näete, on sellel palju lubadusi.

See on küll veel pooleli, kuid pidevas arengus. Ja huvi korral leiad lisainfot siin, siinja siin.

Nnamdi Okeke

Nnamdi Okeke

Nnamdi Okeke on arvutihuviline, kes armastab lugeda mitmesuguseid raamatuid. Ta eelistab Linuxit Windowsile/Macile ja on seda kasutanud
Ubuntu selle algusaegadest peale. Saate teda Twitteris tabada bongotrax

Artiklid: 299

Võtke vastu tehnilisi asju

Tehnilised suundumused, käivitamistrendid, ülevaated, veebisissetulek, veebitööriistad ja turundus üks või kaks korda kuus