Deno è un runtime (un sistema di tempo di ese­cu­zio­ne) ra­di­cal­men­te semplice per Ja­va­Script e Ty­pe­Script il quale offre ai suoi utenti un modo nuovo e semplice di scrivere Ja­va­Script e Ty­pe­Script sul lato server. La piat­ta­for­ma è ancora all’inizio del suo sviluppo, ma si dimostra pro­met­ten­te già in una fase iniziale tanto da lasciar intuire di poter so­sti­tui­re il testato e col­lau­da­to runtime Node.js nel lungo termine. Tuttavia, anche la comunità di svi­lup­pa­to­ri Ja­va­Script deve eseguire questo passaggio.

Ci sono prodotti che sono amati dalla comunità anche se non sono perfetti. Il lin­guag­gio di scripting Ja­va­Script è un buon esempio al riguardo. No­no­stan­te chiari deficit, quello di Ja­va­Script è uno dei linguaggi più uti­liz­za­ti al mondo con in­nu­me­re­vo­li framework e librerie. Anche Node.js, il pre­de­ces­so­re di Deno, è molto popolare. Lo svi­lup­pa­to­re re­spon­sa­bi­le, Ryan Dahl, con il suo nuovo progetto Deno, vuole trarre vantaggio dalle espe­rien­ze acquisite con Node.js e offrire una piat­ta­for­ma nuova, più sicura e migliore. Nel nostro articolo vi spie­ghia­mo se e come funziona.

Acquista e registra il tuo dominio con il provider n°1 in Europa
  • Domain Connect gratuito per una con­fi­gu­ra­zio­ne facile del DNS
  • Cer­ti­fi­ca­to SSL Wildcard gratuito
  • Pro­te­zio­ne privacy inclusa

Cos’è Deno?

Deno si trova ancora nella sua fase iniziale. L’in­ter­fac­cia, le decisioni di ar­chi­tet­tu­ra e il design non sono ancora stati impostati e cam­bie­ran­no si­cu­ra­men­te nel corso dello sviluppo della piat­ta­for­ma. In alcuni punti è quindi difficile fare un confronto diretto con il Node.js sopra men­zio­na­to. Lo svi­lup­pa­to­re di entrambe le piat­ta­for­me ha proposto un confronto ap­pros­si­ma­ti­vo nel seguente video di YouTube:

mzfw9TwBiQc.jpg Per visualizzare questo video, sono necessari i cookie di terze parti. Puoi accedere e modificare le impostazioni dei cookie qui.

Deno e Node non sono solo simili nel nome. Anche la loro idea di base è la stessa: offrono una piat­ta­for­ma per eseguire Ja­va­Script dal browser e la pos­si­bi­li­tà di scrivere Ja­va­Script o Ty­pe­Script lato server. A questo scopo usano vari progetti già esistenti, ciò stando a si­gni­fi­ca­re che non si tratta pertanto di un’auto-im­ple­men­ta­zio­ne completa. Ad esempio, il motore Google V8, già integrato nei browser Chrome ed Edge, viene uti­liz­za­to come standard per l’ese­cu­zio­ne di Ja­va­Script 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 dif­fe­ren­za di Node, scritto con C++, Deno utilizza l’in­no­va­ti­vo e molto più sicuro lin­guag­gio di pro­gram­ma­zio­ne Rust di Mozilla Research. Deno consente quindi la scrittura diretta di un codice tipizzato sta­ti­ca­men­te, un punto di forza ed un elemento di vendita vincente.

Le ca­rat­te­ri­sti­che di Deno: pronto all’uso

Deno ha due funzioni che portano a un’estrema sem­pli­fi­ca­zio­ne 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 cor­ri­spon­den­za uno a uno. Dall’altro lato, Deno consente ai codici Ty­pe­Script di essere eseguiti li­be­ra­men­te.

Una maggiore libertà per gli svi­lup­pa­to­ri di solito comporta un maggior rischio per la sicurezza durante l’utilizzo. Tuttavia Deno è molto evoluto in termini di sicurezza. Gli script vengono ge­ne­ral­men­te eseguiti in una sandbox separata dal sistema operativo. La pos­si­bi­li­tà di ag­giun­ge­re ulteriori fun­zio­na­li­tà per gli svi­lup­pa­to­ri è limitata.

Deno è molto più vicino all’espe­rien­za dell’utente sul web: l’accesso al sistema è bloccato di default e l’utente deve prima con­sen­ti­re a un’ap­pli­ca­zio­ne di accedere al sistema, al­tri­men­ti i due sono per­fet­ta­men­te isolati l’uno dall’altro. Tale pro­ce­di­men­to è simile al com­por­ta­men­to di un browser quando, ad esempio, in una vi­deo­con­fe­ren­za richiede l’accesso alla webcam e al microfono. Le risorse sono ac­ces­si­bi­li 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 ri­spon­de­re alla tendenza più im­por­tan­te nello sviluppo di Ja­va­Script: il supporto nativo di Ty­pe­Script.

N.B.

Ty­pe­Script dif­fe­ri­sce dal lin­guag­gio di pro­gram­ma­zio­ne Ja­va­Script so­prat­tut­to nell’area della ti­piz­za­zio­ne. Ja­va­Script concede molta (troppa) libertà nella ti­piz­za­zio­ne di variabili e funzioni. Qui non sono previste spe­ci­fi­che su quale tipo debba essere una variabile o generare una funzione. Ciò rende più difficile la lettura e la com­pren­sio­ne del codice. In Ty­pe­Script è con­sue­tu­di­ne assegnare un tipo a ciascuna variabile. La funzione e l’output sono quindi tipizzati in anticipo. Anche un’as­se­gna­zio­ne errata viene im­me­dia­ta­men­te segnalata.

Non è ne­ces­sa­rio alcun passaggio ag­giun­ti­vo del com­pi­la­to­re per con­ver­ti­re ed eseguire il codice Ty­pe­Script generato con Deno in Ja­va­Script. I dati vengono sempre scambiati in pacchetti. Di con­se­guen­za, Deno non ha bisogno di un pacchetto esterno come ts-node, che si occupa, ad esempio, del processo di com­pi­la­zio­ne 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 in­te­gran­te di Node, ma la com­bi­na­zio­ne dei due è con­si­de­ra­ta uno standard non ufficiale. Deno, d’altra parte, non ha bisogno di un gestore di pacchetti esterno o è fon­da­men­tal­men­te il proprio gestore di pacchetti. Il sistema modulare può risolvere i pacchetti tramite percorsi o URL del file system e scaricare di­ret­ta­men­te le risorse ne­ces­sa­rie.

Come funziona Deno?

Come già accennato, Deno è ancora agli inizi. L’at­ten­zio­ne è dunque rivolta alla sicurezza e alle questioni ar­chi­tet­to­ni­che di base. Si inizia con l’in­stal­la­zio­ne, che non viene eseguita co­mo­da­men­te tramite un pacchetto di in­stal­la­zio­ne, ma può essere eseguita solo tramite GitHub o script di shell o il gestore pacchetti del sistema operativo. Per ve­ri­fi­ca­re se l'in­stal­la­zio­ne sia andata a buon fine, nella riga di comando va inserito il comando deno – version, il quale offre anche una pa­no­ra­mi­ca della versione Deno in­stal­la­ta e delle versioni di V8 e Ty­pe­Script. Se non si desidera in­stal­la­re Deno su un sistema, è possibile con­fi­gu­rar­lo ed eseguirlo in un con­te­ni­to­re Docker.

Una volta in­stal­la­to Deno ci sono due tipi di ese­cu­zio­ne. L’ambiente di runtime può essere uti­liz­za­to in modo in­te­rat­ti­vo come shell o con un file come input. Il primo è utile per ap­pli­ca­zio­ni più piccole e per spe­ri­men­ta­re l’al­ter­na­ti­va Node.js. Il secondo è l’utilizzo più comune che si fa di Deno. Il nome di un file viene quindi tra­sfe­ri­to sulla piat­ta­for­ma e il lavoro con Deno può iniziare.

Le famose parole chiave di Ja­va­Script come import, export, promise ecc. sono di­ret­ta­men­te di­spo­ni­bi­li in Deno e non devono essere importate. Oltre agli standard, la piat­ta­for­ma offre un oggetto globale, per il quale gli svi­lup­pa­to­ri non hanno dato un proprio nome, motivo per cui si chiama sem­pli­ce­men­te Deno. L’oggetto Deno co­sti­tui­sce la base per ogni ap­pli­ca­zio­ne. Funziona come un’in­ter­fac­cia per il sistema, ad esempio gli svi­lup­pa­to­ri possono accedere al file system e uscire dalla sandbox. Come già accennato in pre­ce­den­za, queste eccezioni devono essere con­fer­ma­te at­ti­va­men­te in modo da poter escludere attacchi inos­ser­va­ti da un’ap­pli­ca­zio­ne al sistema.

Deno offre tutti i moduli standard; la community dispone già di moduli ag­giun­ti­vi, spe­ri­men­ta­li o utili che espandono la gamma di funzioni.

Deno: vantaggi e svantaggi in sintesi

Deno è o sarà migliore di Node? Lo svi­lup­pa­to­re Ryan Dahl ne è convinto. Problemi ed errori del passato e com­pro­mes­si devono essere risolti, al fine di creare una piat­ta­for­ma moderna, stabile e sicura per Ja­va­Script e Ty­pe­Script lato server. Il po­ten­zia­le esiste in ogni caso, in par­ti­co­la­re grazie alla fase di af­fi­da­men­to al lin­guag­gio di pro­gram­ma­zio­ne Rust di Mozilla e alla creazione di un sistema di au­to­riz­za­zio­ne centrale. Questo non solo può essere uti­liz­za­to in modo intuitivo, ma impedisce anche il breakout in­de­si­de­ra­to di un’ap­pli­ca­zio­ne dalla sandbox.

Tuttavia il flusso di lavoro, sebbene no­te­vol­men­te sem­pli­fi­ca­to, presenta i suoi svantaggi: Deno non è sempre com­pa­ti­bi­le con gli eco­si­ste­mi esistenti. Un modulo di Node non funziona sem­pli­ce­men­te su Deno o viceversa. In tutti i modi, se la piat­ta­for­ma dovesse con­ti­nua­re ad af­fer­mar­si, si prevede che non ci siano seri problemi di com­pa­ti­bi­li­tà a lungo termine. Ad esempio, Deno ha già una funzione require com­pa­ti­bi­le 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
Diventa il n°1 della rete con il provider di hosting n°1 in Europa
  • Di­spo­ni­bi­li­tà garantita al 99,99%
  • Dominio, SSL ed e-mail inclusi
  • As­si­sten­za 24/7 in lingua italiana
Vai al menu prin­ci­pa­le