Deno: il runtime per JavaScript e TypeScript

Deno è un runtime (un sistema di tempo di esecuzione) radicalmente semplice per JavaScript e TypeScript il quale offre ai suoi utenti un modo nuovo e semplice di scrivere JavaScript e TypeScript sul lato server. La piattaforma è ancora all’inizio del suo sviluppo, ma si dimostra promettente già in una fase iniziale tanto da lasciar intuire di poter sostituire il testato e collaudato runtime Node.js nel lungo termine. Tuttavia, anche la comunità di sviluppatori JavaScript deve eseguire questo passaggio.

Ci sono prodotti che sono amati dalla comunità anche se non sono perfetti. Il linguaggio di scripting JavaScript è un buon esempio al riguardo. Nonostante chiari deficit, quello di JavaScript è uno dei linguaggi più utilizzati al mondo con innumerevoli framework e librerie. Anche Node.js, il predecessore di Deno, è molto popolare. Lo sviluppatore responsabile, Ryan Dahl, con il suo nuovo progetto Deno, vuole trarre vantaggio dalle esperienze acquisite con Node.js e offrire una piattaforma nuova, più sicura e migliore. Nel nostro articolo vi spieghiamo se e come funziona.

Registra subito un dominio .it in offerta speciale!

Registra ora il tuo dominio .it con un consulente personale incluso!

Semplice
Sicuro
Assistenza 24/7

Cos’è Deno?

Deno si trova ancora nella sua fase iniziale. L’interfaccia, le decisioni di architettura e il design non sono ancora stati impostati e cambieranno sicuramente nel corso dello sviluppo della piattaforma. In alcuni punti è quindi difficile fare un confronto diretto con il Node.js sopra menzionato. Lo sviluppatore di entrambe le piattaforme ha proposto un confronto approssimativo nel seguente video di YouTube:

Per tutelare la vostra privacy il video si caricherà dopo aver cliccato.

Deno e Node non sono solo simili nel nome. Anche la loro idea di base è la stessa: offrono una piattaforma per eseguire JavaScript dal browser e la possibilità di scrivere JavaScript o TypeScript lato server. A questo scopo usano vari progetti già esistenti, ciò stando a significare che non si tratta pertanto di un’auto-implementazione completa. Ad esempio, il motore Google V8, già integrato nei browser Chrome ed Edge, viene utilizzato come standard per l’esecuzione di JavaScript in diversi ambienti. Lato server, Deno si basa quindi su V8 come Node.js.

Tra i due programmi vi sono vari elementi comuni, ma a differenza di Node, scritto con C++, Deno utilizza l’innovativo e molto più sicuro linguaggio di programmazione Rust di Mozilla Research. Deno consente quindi la scrittura diretta di un codice tipizzato staticamente, un punto di forza ed un elemento di vendita vincente.

Le caratteristiche di Deno: pronto all’uso

Deno ha due funzioni che portano a un’estrema semplificazione del flusso di lavoro: da un lato, l’ambiente di runtime si basa su un semplice sistema di moduli, in cui gli URL e i moduli sono in corrispondenza uno a uno. Dall’altro lato, Deno consente ai codici TypeScriptdiessere eseguiti liberamente.

Una maggiore libertà per gli sviluppatori di solito comporta un maggior rischio per la sicurezza durante l’utilizzo. Tuttavia Deno è molto evoluto in termini di sicurezza. Gli script vengono generalmente eseguiti in una sandbox separata dal sistema operativo. La possibilità di aggiungere ulteriori funzionalità per gli sviluppatori è limitata.

Deno è molto più vicino all’esperienza dell’utente sul web: l’accesso al sistema è bloccato di default e l’utente deve prima consentire a un’applicazione di accedere al sistema, altrimenti i due sono perfettamente isolati l’uno dall’altro. Tale procedimento è simile al comportamento di un browser quando, ad esempio, in una videoconferenza richiede l’accesso alla webcam e al microfono. Le risorse sono accessibili solo con il consenso dell’utente. In parole povere, Deno si comporta come un browser per gli script da riga di comando.

In più, Deno non manca di rispondere alla tendenza più importante nello sviluppo di JavaScript: il supporto nativo diTypeScript.

N.B.

TypeScript differisce dal linguaggio di programmazione JavaScript soprattutto nell’area della tipizzazione. JavaScript concede molta (troppa) libertà nella tipizzazione di variabili e funzioni. Qui non sono previste specifiche su quale tipo debba essere una variabile o generare una funzione. Ciò rende più difficile la lettura e la comprensione del codice. In TypeScript è consuetudine assegnare un tipo a ciascuna variabile. La funzione e l’output sono quindi tipizzati in anticipo. Anche un’assegnazione errata viene immediatamente segnalata.

Non è necessario alcun passaggio aggiuntivo del compilatore per convertire ed eseguire il codice TypeScript generato con Deno in JavaScript. I dati vengono sempre scambiati in pacchetti. Di conseguenza, Deno non ha bisogno di un pacchetto esterno come ts-node, che si occupa, ad esempio, del processo di compilazione in Node.js.

Deno riserva delle sorprese anche nella gestione dei pacchetti: uno dei fattori di successo di Node è il gestore dei pacchetti npm. Npm fa parte della community GitHub e non è quindi parte integrante di Node, ma la combinazione dei due è considerata uno standard non ufficiale. Deno, d’altra parte, non ha bisogno di un gestore di pacchetti esterno o è fondamentalmente il proprio gestore di pacchetti. Il sistema modulare può risolvere i pacchetti tramite percorsi o URL del file system e scaricare direttamente le risorse necessarie.

Come funziona Deno?

Come già accennato, Deno è ancora agli inizi. L’attenzione è dunque rivolta alla sicurezza e alle questioni architettoniche di base. Si inizia con l’installazione, che non viene eseguita comodamente tramite un pacchetto di installazione, ma può essere eseguita solo tramite GitHub o script di shell o il gestore pacchetti del sistema operativo. Per verificare se l'installazione sia andata a buon fine, nella riga di comando va inserito il comando deno – version, il quale offre anche una panoramica della versione Deno installata e delle versioni di V8 e TypeScript. Se non si desidera installare Deno su un sistema, è possibile configurarlo ed eseguirlo in un contenitore Docker.

Una volta installato Deno ci sono due tipi di esecuzione. L’ambiente di runtime può essere utilizzato in modo interattivo come shell o con un file come input. Il primo è utile per applicazioni più piccole e per sperimentare l’alternativa Node.js. Il secondo è l’utilizzo più comune che si fa di Deno. Il nome di un file viene quindi trasferito sulla piattaforma e il lavoro con Deno può iniziare.

Le famose parole chiave di JavaScript come import, export, promise ecc. sono direttamente disponibili in Deno e non devono essere importate. Oltre agli standard, la piattaforma offre un oggetto globale, per il quale gli sviluppatori non hanno dato un proprio nome, motivo per cui si chiama semplicemente Deno. L’oggetto Deno costituisce la base per ogni applicazione. Funziona come un’interfaccia per il sistema, ad esempio gli sviluppatori possono accedere al file system e uscire dalla sandbox. Come già accennato in precedenza, queste eccezioni devono essere confermate attivamente in modo da poter escludere attacchi inosservati da un’applicazione al sistema.

Deno offre tutti i moduli standard; la community dispone già di moduli aggiuntivi, sperimentali o utili che espandono la gamma di funzioni.

Deno: vantaggi e svantaggi in sintesi

Deno è o sarà migliore di Node? Lo sviluppatore Ryan Dahl ne è convinto. Problemi ed errori del passato e compromessi devono essere risolti, al fine di creare una piattaforma moderna, stabile e sicura per JavaScript e TypeScript lato server. Il potenziale esiste in ogni caso, in particolare grazie alla fase di affidamento al linguaggio di programmazione Rust di Mozilla e alla creazione di un sistema di autorizzazione centrale. Questo non solo può essere utilizzato in modo intuitivo, ma impedisce anche il breakout indesiderato di un’applicazione dalla sandbox.

Tuttavia il flusso di lavoro, sebbene notevolmente semplificato, presenta i suoi svantaggi: Deno non è sempre compatibile con gli ecosistemi esistenti. Un modulo di Node non funziona semplicemente su Deno o viceversa. In tutti i modi, se la piattaforma dovesse continuare ad affermarsi, si prevede che non ci siano seri problemi di compatibilità a lungo termine. Ad esempio, Deno ha già una funzione require compatibile con Node.

In sintesi

Deno è ancora un progetto in via di sviluppo. Tuttavia, le prime soluzioni ad alcune delle maggiori debolezze di Node.js sono già notevoli al giorno d’oggi.

Web hosting con consulente personale!

Web hosting veloce e scalabile + consulente personale con IONOS!

Dominio gratis
SSL
Assistenza 24/7

Abbiamo una proposta per te:
Web hosting a partire da 1 €/mese!

Dominio gratis
Certificato SSL Wildcard incluso
Assistenza clienti 24/7
A partire da 1 €/mese IVA escl. per un anno,
poi 8 €/ mese IVA escl.