Ci sono notizie molto tecniche che difficilmente emergono sulla stampa ma le cui conseguenze sono notevoli. Una di queste risale a pochissimi giorni fa: Stackblitz ha annunciato che i WebContainer adesso girano su Safari, e soprattutto su iOS e su iPadOS.
Cosa sono i WebContainer e perché è molto importante che funzionino su tutte le piattaforme Apple? Qui la storia si fa interessante e bisogna fare un passo indietro. Ma ne vale la pena.
La rivoluzione di Javascript e di Node.js
StackBlitz ha annunciato i WebContainer nel 2021. Si tratta di un micro-sistema operativo, basato su WebAssembly, progettato per eseguire un server Node.js all’interno del browser. Node nel browser!
JavaScript lo conosciamo e sfruttiamo tutti le sue capacità: è un linguaggio di programmazione utilizzato principalmente per lo sviluppo di applicazioni web. È un linguaggio di scripting ad alto livello, interpretato e orientato agli oggetti che viene eseguito dai browser web sui client.
Node.js, d’altra parte, è un ambiente di runtime JavaScript che permette l’esecuzione di codice JavaScript al di fuori dei browser web, ovvero su un server. Node.js utilizza il motore V8 di Google per l’esecuzione del codice JavaScript e fornisce un set di librerie e moduli predefiniti che rendono possibile l’esecuzione di operazioni di rete, gestione di file, creazione di server web e altro ancora. Una potenza in tasca.
Perché Javascript è importante oggi?
La differenza principale tra JavaScript e Node.js è che JavaScript è utilizzato principalmente per lo sviluppo di applicazioni front-end, mentre Node.js è utilizzato principalmente per lo sviluppo di applicazioni back-end, cioè lato server.
Node.js è importante perché permette agli sviluppatori di utilizzare JavaScript per lo sviluppo di applicazioni server- side, oltre che per lo sviluppo di applicazioni client-side. Ciò significa che gli sviluppatori possono utilizzare lo stesso linguaggio di programmazione per lo sviluppo di entrambi i tipi di applicazioni, semplificando così il processo di sviluppo. Inoltre, Node.js è molto potente ma soprattutto molto efficiente e scalabile, il che lo rende una scelta popolare per lo sviluppo di applicazioni web ad alta intensità di elaborazione e di traffico.
Entrano in scena i container, anzi i WebCointainer per le web app
Un’altra tendenza degli ultimi anni è stata la realizzazione di applicazioni all’interno di container, cioè di ambienti virtualizzati di dimensioni minimali che consentono l’esecuzione di singole applicazioni in singolo o in sciame, direttamente nel cloud. Molto utili ma richiedono un server sul quale girare. Fino ad ora.
Come dicevamo, StackBlitz ha annunciato i WebContainer nel 2021. I WebContainer di StackBlitz sono ambienti di esecuzione in cui è possibile eseguire applicazioni web in tempo reale direttamente dal browser, senza dover installare alcun software sul proprio computer. StackBlitz offre diversi WebContainer preconfigurati per diversi framework e tecnologie web, tra cui React, Angular, Vue, Svelte e altri ancora.
I WebContainer di StackBlitz sono basati su container Docker e forniscono un’infrastruttura completa per l’esecuzione delle applicazioni web, compresi server web, database e altre dipendenze. In questo modo, gli sviluppatori possono iniziare a scrivere il codice dell’applicazione immediatamente, senza dover preoccuparsi di configurare l’ambiente di sviluppo.
Inoltre, StackBlitz offre un’interfaccia utente facile da usare per la modifica del codice, l’esecuzione dell’applicazione, la visualizzazione dei log e la condivisione del progetto con gli altri. Grazie a questi strumenti, gli sviluppatori possono creare, testare e condividere le proprie applicazioni web in modo semplice e veloce, senza dover preoccuparsi della complessità dell’infrastruttura sottostante.
E tutto questo arriva su Safari!
Sinora Safari era rimasto fuori dall’ambito di sviluppo di StackBlitz perché il browser di Apple mancava, sia nella implementazione per Mac che in quella per iOS/iPadOS, delle caratteristiche giuste per poter eseguire i container web di StackBlitz. Ma con i recenti aggiornamenti del browser e del framework sottostante, che viene usato su iOS/iPadOS, adesso è possibile.
L’annuncio di StackBlitz è notevole perché apre la porta a un oceano di applicativi sviluppati direttamente per il browser, che vanno molto oltre le tradizionali app web (le cosiddette PWA, Progressive Web App, come sono state battezzate da Google) e apre la porta ad applicativi web molto più strutturati.
Ogni browser ha un proprio motore di rendering (Blink in Chrome, WebKit in Safari, Gecko in Firefox) responsabile del disegno del testo e delle immagini sullo schermo: in altre parole, lavora con HTML e CSS. Ogni browser ha anche un proprio motore JavaScript, che esegue il codice JavaScript. Questi sono: V8 per Chrome (utilizzato anche in Node.js), JavaScriptCore in Safari e SpiderMonkey in Firefox. Un fatto che forse non è noto a tutti è che ogni browser iOS di terze parti “deve utilizzare il framework WebKit appropriato e WebKit JavaScript“. Ciò significa che ogni browser utilizzato su iOS e iPadOS è di fatto una versione rielaborata di Safari.
La forza di WebAssembly
Per realizzare l’applicativo WebContainer che gira dentro il browser, quelli di StackBlitz hanno deciso di utilizzare WebAssembly. WebAssembly (abbreviato come wasm) è un formato di codice binario portabile progettato per essere eseguito in un ambiente web. È stato creato per aumentare le prestazioni delle applicazioni web, consentendo l’esecuzione di codice scritto in linguaggi di programmazione a basso livello come C, C++ e Rust, al di fuori dell’ambiente di esecuzione di JavaScript.
WebAssembly è stato sviluppato da un consorzio di browser web, tra cui Mozilla, Google, Microsoft e Apple, ed è supportato da tutti i principali browser web. Il formato di codice binario di WebAssembly è progettato per essere compatibile con l’architettura hardware moderna, il che lo rende estremamente efficiente in termini di velocità e dimensioni.
StackBlitz, scegliendo di partecipare al consorzio dietro a WebAssembly, anziché usare trucchi vari per poter far funzionare WebContainer dentro Safari fin dall’inizio ma con il rischio di vederlo diventare incompatibile a ogni aggiornamento del sistema operativo, ha fatto la mossa giusta. C’è voluto più tempo (e molto più lavoro “per il bene comune” di ottimizzazione di wasm) ma alla fine, come dicono quelli di StackBlitz, “abbiamo costruito il web che vogliamo“.
I risultati di questa neanche tanto piccola rivoluzione dietro le quinte, anzi sotto il cofano di Safari, si vedranno nei prossimi anni e saranno enormi, perché ridanno centralità alla piattaforma Apple in un momento in cui l’alleanza tra Google con Chrome e Microsoft con Edge (basato su Chrome) rischiava di marginalizzare il browser di Apple.