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

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
Miglior Hosting per il tuo sito web o negozio
  • 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