Ukoliko se do sada niste susreli sa WebAssembly-jem definitivno vredi da odvojite malo vremena i proučite šta sve ovaj alat može da ponudi.
Ukratko, WebAssembly je nastao 2017. godine sa ciljem da se ponudi alternativa JavaScript-u (koji, iako je među najpopularnijim programskim jezicima, ima veoma izražene mane) prilikom pisanja frontend koda (koda koji se ne izvršava na serverima već na korisnikovoj mašini).
Glavna razlika između WebAssembly-a i JavaScript-a je u tome što WebAssembly omogućava izvršavanje koda napisanog u drugim jezicima, kao što su C/C++ ili Rust, dok je JavaScript specifičan jezik za web i već se izvršava u pretraživačima (browser-ima). WebAssembly pruža veću brzinu izvršavanja i sigurnost, dok JavaScript nudi jednostavnost i široku podršku.
Od 2017. godine, kada je i nastao, nastalo je dosta alata koji omogućavaju da se kod pisan u drugim programskim jezicima umesto u običan asemblerski kod - kompajlira u WebAssembly kod, čime postaje dostupan za korišćenje iz pretraživača.
Ljudima je, osim ideje da prave nove aplikacije i prevode ih u WebAssembly, palo na pamet da pokušaju da u njega prebace i neke postojeće programe - tako smo čak dobili i verzije nekih od ranije veoma popularnih video igrica koje možemo pokrenuti iz svog pretraživača (kao što su DOOM iz 1993. godine, Fallout 2, SimCity 2000 itd).
Koje su to prednosti koje WebAssembly nudi?
Efikasnost izvršavanja: WebAssembly je dizajniran da se izvršava brže od JavaScripta. Wasm kod se prevodi u binarni format koji se izvršava u virtualnoj mašini pretraživača. Ovaj binarni format je dizajniran da bude efikasan i brz za izvršavanje, omogućavajući optimizacije koje se mogu postići na niskom nivou.
Bliskost mašinskom jeziku: WebAssembly koristi mašinski jezik specifičan za virtualnu mašinu pregledača, što omogućava da se kod izvršava na nižem nivou od JavaScripta. To znači da se kompleksne operacije i algoritmi mogu izvršavati brže jer je pristup hardverskim resursima direktniji.
Kontrola memorije: WebAssembly omogućava programerima precizniju kontrolu nad memorijom u poređenju s JavaScript-om. Ovo je posebno korisno za aplikacije koje zahtevaju rad s velikim količinama podataka ili izvođenje zahtevnih algoritama. Precizna kontrola memorije omogućava efikasnije upravljanje podacima i izbegavanje nepotrebnih alokacija i dealokacija.
Primeri framework-ova koji omogućavaju jednostavan rad sa WebAssembly-jem:
Blazor: Blazor u suštini nudi prevođenje C# u WebAssembly, a kao i sam C# jezik, razvio ga je i održava ga Microsoft. Blazor nudi dvije glavne varijante: Blazor Server i Blazor WebAssembly. Blazor Server koristi SignalR za održavanje veze sa serverom i omogućava dinamičko ažuriranje korisničkog interfejsa, dok Blazor WebAssembly izvršava C# kod direktno u pregledaču, što omogućava offline funkcionalnost i nezavisnost od servera.
Rust sa Yew-om: Yew je Rust-ov frontend framework inspirisan React-om koji omogućava razvoj web aplikacija koristeći Rust jezik. Yew koristi WebAssembly za izvršavanje Rust koda u web pretraživaču. On se ističe po performansama, sigurnosti i Rust-ovoj filozofiji "zero-cost abstractions". Yew koristi virtualni DOM (Document Object Model) za efikasno ažuriranje korisničkog interfejsa samo u delovima koji su se promenili. Takođe nudi mogućnost razvoja po komponentama, rukovanja događajima i rad s asinhronim zahtevima.
U poređenju sa već poznatim JavaScript framework-ovima, Yew i Blazor imaju manji ekosistem, manje su prihvaćeni od strane inženjera i zahtevaju učenje novog jezika (Rust ili C#). Takođe, izvršavanje putem WebAssembly-a može imati neočekivane poteškoće u odnosu na JavaScript, jer mogu zahtevati dosta više koda da bi se neke jednostavne stvari uradile.
0 komentara