In che modo gli sviluppatori sfruttano WebAssembly per potenti applicazioni browser
Una delle innovazioni più potenti degli ultimi decenni per Internet, WebAssembly è uno standard aperto che definisce un formato di codice binario portatile per i programmi eseguibili. Insieme a ciò, definisce anche un linguaggio assembly testuale associato e interfacce per consentire le interazioni tra tali programmi e il loro ambiente host. L’obiettivo principale di WebAssembly è facilitare le app ad alte prestazioni nei browser web, ma il formato è costruito per essere eseguito e integrato anche con altri ambienti.
Prima dell’avvento di WASM, era possibile scrivere codice Javascript e il browser era in grado di eseguire il codice utilizzando le API web. Il principale linguaggio di programmazione che abbiamo sul web oggi è Javascript , che è stato avviato come un minuscolo linguaggio di scripting. Quando si tratta di elaborazione, il linguaggio ha i suoi limiti ed è difficile per eseguire attività di basso livello senza creare un impatto sulle prestazioni. Man mano che utilizzi JS per file e app di grandi dimensioni, aumenta il ciclo di download-analisi-compilazione. Ciò richiede più tempo e ha un impatto sulle prestazioni.
Per superare questo problema, WebAssembly è venuto alla luce ed è stato creato nel 2015. È un linguaggio di tipo assembly di basso livello che ha un formato binario compatto, funziona con prestazioni quasi native e fornisce linguaggi come C ++ e Rust con una compilazione target in modo che possano essere eseguiti sul Web. Ciò significa che fondamentalmente WASM ti consente di eseguire app scritte in C ++ e altri linguaggi sul Web con prestazioni quasi native. Tutti i browser moderni supportano WASM. Consente agli sviluppatori di caricare i moduli WASM in un browser e consente loro di gestire la memoria e alcune istanze di tabella.
WebAssembly è diventato una raccomandazione del World Wide Web Consortium nel dicembre 2019 e, oltre a HTML, CSS e JavaScript, è la quarta lingua a funzionare in modo nativo nei browser. Per poter utilizzare WASM nei browser, gli sviluppatori utilizzano Emscripten SDK per compilare il codice sorgente C ++ (o qualsiasi altro linguaggio supportato da LLVM come D o Rust) in un file binario. Il file può quindi essere eseguito nella stessa sandbox del codice JavaScript convenzionale.
La capacità sandbox di WebAssembly offre agli utenti un ambiente multi-tenancy sicuro. Le applicazioni vengono assegnate come file WASM e possono essere caricate istantaneamente, quindi non è necessario avviare l’ambiente di runtime e il tempo di avvio a freddo viene ridotto drasticamente.
Qual è il grosso problema con WASM?
Ciò che cambia il gioco su WebAssembly è che porta le prestazioni delle applicazioni native sul Web in un modo completamente sicuro, pur consentendo una funzionalità completa prevista dai giochi, dalle applicazioni principali e dall’intero spettro di software che è possibile eseguire su un computer. Il problema principale che WebAssembly mira a risolvere è che, sebbene JavaScript sul Web, non è stato progettato per essere veloce per avviare un’applicazione di grandi dimensioni. WebAssembly è semplicemente costruito come formato binario e molto compatto da scaricare, e anche molto efficiente da compilare ed eseguire. Sono in arrivo un sacco di ottimizzazioni che lo guideranno ancora di più, consentendo il caricamento rapido di applicazioni enormi, anche su dispositivi mobili.
Inoltre, dovremmo ottenere vantaggi e produttività significativi. Significa che una volta che il codice è stato compilato, verrà eseguito più velocemente. WebAssembly colma il vuoto dell’esecuzione ad alte prestazioni senza la necessità di utilizzare alcun tipo di plug-in. Quindi ora con WebAssembly, possiamo avere tipi di dati interi a 64 bit reali. L’altra cosa è un maggiore controllo sulla gestione della memoria in generale, qualcosa che non potevamo fare prima.
Gli innovatori e gli sviluppatori open source aggiungono continuamente al set di funzionalità di WebAssembly fino a quando non siamo in grado di acquisire in modo efficiente tutte le principali lingue. Sono entusiasti dell’idea di avere un obiettivo di compilazione universale che potrebbe eventualmente sbloccare la capacità di qualsiasi linguaggio di indirizzarlo.
In che modo può avvantaggiare gli sviluppatori?
WebAssembly può essere utilizzato dagli sviluppatori come uno strumento sicuro, portatile ed efficace per distribuire i modelli ovunque, attraverso i browsere dispositivi. WebAssembly è migliore dei contenitori perché anche se i contenitori consentono il trasferimento di stack, pacchetti e modelli Python esistenti di un’azienda, ecc., I contenitori sono generalmente lenti e più complessi in termini di portabilità e distribuzione tra ambienti. D’altra parte, con WASM, le aziende possono avere modelli per essere molto più portabili e consentire ai data scientist di ricostruire i modelli quando li trasferiscono dai server ai dispositivi IoT ai telefoni cellulari ai browser web. Dopo aver generato un file binario .wasm, che segue lo standard WASI per renderlo completamente portatile, può essere eseguito ovunque, nel browser e su edge. Questo genera nuovi casi d’uso: modelli di riconoscimento di oggetti sui droni, esecuzione di modelli di raccomandazione sul browser dell’utente.
WebAssembly ora significa che gli sviluppatori di tutti i tipi possono portare le loro applicazioni C native e C ++ sul Web e ottenere le massime prestazioni e il set completo di funzionalità che hanno in esecuzione native su Windows o Mac solo in un browser Web, il che è rivoluzionario perché significa che ora gli utenti possono semplicemente accedere a una pagina Web e iniziare a utilizzare l’app. Nessun download, nessuna installazione, nessun rischio per la sicurezza. È un approccio davvero rivoluzionario. Ti avvicini alle tue prestazioni native, ma portabile, su più piattaforme, utilizzando un browser. Essere in grado di scrivere il codice in una lingua e quindi portarlo su tutte le piattaforme, questo è sicuramente un enorme vantaggio ingegneristico.
Casi d’uso
WASM è emerso come uno dei principali potenziamenti delle prestazioni per le app Web ed è ora disponibile sui principali browser. WASM consente agli sviluppatori di fornire potenti app sul Web e sui dispositivi mobili, cosa che non era possibile prima dell’avvento di questa innovazione.
Trattandosi di una macchina virtuale, è stata progettata per essere compilata facilmente per molte architetture con un’incredibile portabilità. Quindi, quando scrivi del codice in qualsiasi lingua e lo compili in WebAssembly, quel codice verrà compilato nel set di istruzioni di quella macchina virtuale. E poi quelle istruzioni vengono memorizzate in un formato binario, solitamente in un file .wasm. E poiché quella macchina virtuale è progettata per essere compilata facilmente su processori reali, questo file può ora essere importato da un runtime come il browser. Qui, un’importante applicazione ottenuta con WASM è l’apprendimento automatico nel browser.
Ad esempio, TensorFlow.jscombina machine learning e JavaScript e ora la libreria ML open source funziona con un back-end WebAssembly per vari casi d’uso. TensorFlow.js è stato progettato da Google per consentire agli sviluppatori JavaScript di entrare nel machine learning senza la necessità di apprendere programmazione avanzata o competenze tecniche. Il backend WASM per TensorFlow.js estende il supporto per il browser e Node.js ed è creato per aumentare le prestazioni sui dispositivi mobili di fascia bassa. WASM fornisce la decodifica nativa che è molto più veloce di quella che JavaScript può analizzare. Secondo gli esperti, il backend WASM diventerà più attraente man mano che i modelli di ML per il Web leggero per dispositivi edge diventeranno prevalenti. Il back-end Tensorflow WASM offre una nuova scelta per uno sviluppatore per eseguire l’inferenza direttamente su una CPU mobile e con prestazioni e portabilità migliori.
Il browser può trasformare quel file .wasm in codice macchina effettivo dalla macchina effettiva su cui è in esecuzione il browser, quindi eseguire quel codice. Alcune grandi aziende utilizzano WebAssembly per portare i loro prodotti esistenti, che probabilmente hanno scritto in C ++, ad esempio, sul web. Quindi, ad esempio, AutoCAD, che ha lavorato su AutoCAD per anni ed è un prodotto ben noto. Ma ora si sono impegnati a compilarlo in WebAssembly. E improvvisamente era in esecuzione nel browser, il che è un po ‘strabiliante se ci pensi.
Anche molti motori di gioco utilizzano WASM. Dopo che gli sviluppatori di giochi hanno creato un gioco, possono compilarlo su Playstation, Xbox o altri sistemi. E ciò che è impressionante è che il browser e WebAssembly sono in grado di fornire le prestazioni necessarie per eseguire questo tipo di giochi. Quindi qualsiasi codice scritto per essere eseguito su un sistema dovrebbe essere eseguito magicamente sul web.