Perché il webassembly è importante?

0
166
Shutterstock/Andrey Suslov

WebAssembly è un formato di istruzioni binarie che può essere eseguito nei browser web. Fornisce un ambiente di esecuzione in modalità sandbox con prestazioni quasi native, eliminando la maggior parte dei costi associati a JavaScript sulle pagine Web.

WebAssembly (Wasm) è un codice macchina di basso livello che viene eseguito in una macchina virtuale basata su stack . Ciò significa che è molto più vicino al tuo hardware rispetto a JavaScript. Deve essere analizzato e interpretato completamente prima di poter essere eseguito.

Creare Wasm è un po' più complicato che scrivere JavaScript. Sebbene sia possibile codificarlo manualmente in Wasm Text Format, questo è di basso livello ed è equivalente alla scrittura di codice assembly per l'esecuzione nativa. Più spesso, scriverai in un linguaggio di programmazione stabilito e compilerai in Wasm. (Ne parleremo più avanti.)

Perché Wasm è davvero importante?

Se l'aumento delle applicazioni Web avanzate è qualcosa da fare, gli sviluppatori, nel complesso, sono abbastanza a loro agio con la scrittura di JavaScript. Si è evoluto considerevolmente negli ultimi dieci anni con nuove funzionalità di sintassi e miglioramenti nelle prestazioni del browser. Questi lo hanno elevato da semplici script a un linguaggio in grado di supportare applicazioni complesse e autonome. Perché è necessario WebAssembly, allora?

Wasm non sostituisce JavaScript. È mirato a casi d'uso specifici in cui JavaScript è ancora un ostacolo e forse lo sarà sempre. Di questi casi, Wasm eccelle particolarmente nelle prestazioni.

I siti Web pesanti JavaScript hanno la tendenza a sentirsi lenti e a consumare la memoria. Ciò è particolarmente evidente sui dispositivi mobili, dove le app Web mancano ancora della “sensazione” delle loro controparti native.

Poiché Wasm è molto più vicino all'hardware, offre un livello di prestazioni che è appena distinguibile dalle app native. Questo apre il Web a una nuova classe di applicazioni critiche per le prestazioni. Se viene eseguito sul desktop, potrebbe essere eseguito nel browser senza alcun percettibile rallentamento delle prestazioni.

Abbiamo bisogno di maggiori prestazioni web?

Ci sarà sempre un argomento secondo cui alcune app sono semplicemente più adatte all'uso desktop. Tuttavia, il Web offre i suoi vantaggi, in particolare per quanto riguarda un'ampia distribuzione.

La pubblicazione della tua app sul Web ti offre il pubblico più ampio possibile. Chiunque può accedervi da qualsiasi dispositivo possegga. Ciò aumenta la comodità per i tuoi utenti e significa che hai una codebase da mantenere.

La vera domanda non è se abbiamo bisogno di più prestazioni web: dovremmo invece chiederci se abbiamo bisogno di più applicazioni sul web. Per rispondere a questa domanda, possiamo guardare a siti ricchi di funzionalità che hanno già adottato Wasm.

AutoCAD è un software di progettazione assistita da computer per architetti e ingegneri. L'ultima versione web ha debuttato al Google I/O nel 2018. Utilizza Wasm per consumare i componenti del codebase desktop esistente così com'è. Parte del codice risale a 35 anni fa, ma ora viene eseguito nel browser.

Un altro esempio è Figma, che già utilizzava il sottoinsieme JavaScript asm.js per ottimizzare le sue prestazioni. Passando a Wasm, Figma ha notato un miglioramento delle prestazioni di 3 volte. Anche Google utilizza Wasm, facendo affidamento su di esso per portare Google Earth sul Web per tutti.

Queste applicazioni altamente complesse non potevano esistere in precedenza sul Web. Se lo facevano, correvano con gravi penalizzazioni delle prestazioni rispetto alle loro controparti desktop. Wasm è l'architettura necessaria per completare la transizione del web da pagine orientate ai documenti a una piattaforma applicativa completa. Puoi persino giocare a Doom 3!

Aumento della scelta degli sviluppatori

Oltre alle prestazioni, WebAssembly è importante perché offre agli sviluppatori maggiore flessibilità e scelta. Escludendo l'eredità dei plug-in Flash, Java e ActiveX, JavaScript è stata la tua unica scelta durante la scrittura del codice per il browser.

Quella situazione ora è stata trasformata. WebAssembly è un formato di basso livello in cui vengono compilati altri linguaggi. C, C++, C#, Java, Python, Rust e molti altri sono in grado di generare moduli WebAssembly. Questo offre agli sviluppatori molte più opzioni durante la creazione di codice per il Web.

Hai ancora bisogno di JavaScript per caricare i tuoi moduli Wasm, ma questo è tutto. Puoi implementare tutte le funzionalità del tuo progetto utilizzando la lingua scelta, quindi compilarlo in Wasm per il browser.

Gli sviluppatori possono ora scrivere per il Web nella lingua più adatta a loro e alla loro applicazione. Potrebbe essere un linguaggio fortemente tipizzato, orientato agli oggetti o qualcosa incentrato sulla programmazione funzionale. Non sei più limitato alla digitazione sciolta di JavaScript e ai prototipi di oggetti.

Facilitare il riutilizzo del codice

WebAssembly offre vantaggi sostanziali quando arriva per il riutilizzo del codice. Puoi portare le tue librerie condivise sul Web senza reimplementarle in JavaScript. Ciò potrebbe farti risparmiare ore, giorni o settimane.

Utilizzando C# come esempio, potresti avere una DLL .NET che contiene metodi pratici utilizzati dal codice lato server e dall'applicazione desktop. In precedenza, avresti dovuto implementare questi metodi in JavaScript quando sarebbe arrivato il momento di creare la tua app web.

Con Wasm, puoi ricompilare la tua DLL utilizzando WebAssembly come destinazione. Lo stesso codice diventa accessibile nel browser. Wasm riduce gli sprechi e i duplicati ingegneristici consentendoti di utilizzare ciò che già possiedi.

Storicamente, questo è stato davvero possibile solo se il tuo backend utilizzava Node.js. Potresti astrarre la logica comune in una libreria JavaScript pronta per il riutilizzo nel frontend. Ora puoi lavorare con librerie scritte in qualsiasi lingua.

Funziona anche se rimarrai con JavaScript per la maggior parte della tua app web. Puoi interfacciarti con i moduli Wasm tramite JavaScript, quindi puoi comunque utilizzare la tua DLL di funzioni condivise. Le API asincrone ti consentono di scambiare dati con Wasm in modo da poter chiamare funzioni e ottenere i loro valori di ritorno.

Riepilogo

WebAssembly viene facilmente liquidato come una tecnologia oscura con scarsa rilevanza per le app Web di oggi. Wasm si rivolge davvero al Web di domani, dove le app di classe desktop verranno eseguite con prestazioni native.

È importante guardare anche oltre i vantaggi principali. Wasm non riguarda solo gli aumenti di velocità. Può anche ridurre i tempi di spedizione per i team di sviluppo, in particolare quelli che lavorano su più piattaforme o condividono la logica tra il client e il server. Parte dell'entusiasmo per WebAssembly deriva dalla trasformazione del Web in un obiettivo di compilazione, invece di essere una piattaforma completamente autonoma. Costruire per il browser non significa più scrivere JavaScript.

Qui, nel 2021, l'adozione di WebAssembly rimane relativamente bassa. I progetti che lo utilizzano hanno riportato successi—è sufficiente provare Figma o Google Earth per apprezzare lo standard di prestazioni Wasm. Probabilmente vedrai più Wasm nei prossimi anni man mano che le app, sia nuove che vecchie, verranno introdotte nel browser.