Deno - credits Pixabay
8 avril 2022

Deno, le challenger de Node.js ?

Partager l'article

Annoncé par Ryan Dahl, dix ans après participé à la création de Node.js, Deno veut corriger les erreurs de conception de son grand frère tout en proposant un environnement de développement JavaScript plus performant et un support natif de Typescript.

Il y a quatre ans, Ryan Dahl, l’un des principaux développeurs à l’origine du framework JavaScript, Node.js, lançait un pavé dans la marre en évoquant en 2018 les 10 erreurs de conception de Node.js à la conférence de la Communauté JavaScript (JSConf). Deux ans plus tard, il sortait Deno, pensé pour corriger les lacunes de Node.js. Or le fait d’être une anagramme, Deno n’est néanmoins pas un fork de l’indétrônable runtime JavaScript, Node.js.

Mais au juste, qu’est-ce que Deno ?

Lancé en 2020, Deno se présente comme un nouvel environnement de développement JavaScript, sécurisé, supportant nativement Typescript. Programmé en langage Rust (à la différence de Node.js qui est codé en C++), il se base sur la version 8 du moteur JavaScript de Google. Il utilise également Tokio pour sa boucle d’évènements et bénéficie de technologies open source. À noter que l’exécution de code Typescript avec Deno n’exige pas d’étape de compilation, tout se réalise automatiquement.

Node.js et Deno, des points communs, mais pas que !

L’ambition avouée de Ryan Dahl est clairement d’apporter une nouvelle solution pour pallier aux faiblesses structurelles de Node.js. Les deux runtime partagent tout de même de nombreuses similitudes avec des mécaniques de fonctionnement toutefois différentes :

  • Node.js et Deno sont tous deux des runtime en lignes de commande qui offrent la possibilité d’exécuter du code JavaScript et Typescript ;
  • Ils se basent tous deux sur le moteur d’exécution JavaScript en version 8 de Google ;
  • Leur interface en ligne de commandes est développée à partir du langage de programmation Rust ;
  • Ils sont tous les deux intuitifs disposants d’une grande souplesse et d’une relative simplicité de prise en main.

Mais les points communs s’arrêtent là, Deno, n’est pas Node.js, bien au contraire !

Des différences conséquentes avec Node.js

Deno tranche radicalement dans sa conception avec son prédécesseur :

  • Deno est codé intégralement en langage Rust, apportant une sécurité accrue via un traitement particulier des erreurs ;
  • Il est plus rapide dans son exécution avec une fiabilité à toute épreuve et une meilleure gestion de la mémoire ;
  • Il prend en charge nativement TypeScript, le compilateur est intégré ;
  • Deno gère les dépendances différemment de Node.js. Il n’y a plus de « package .json », évitant les codes malveillants. Le développeur gère les modules de dépendance sous forme d’une URL ;
  • Installation de scripts, formatage, débogage, regroupement, ou encore test, etc. Deno prend nativement en charge ces tâches. Node.js, non !
  • Du fait de son codage en langage Rust, Deno se veut plus sécurisé dans l’exécution des scripts. Chaque opération nécessite une autorisation au niveau de la runtime…

Encore jeune, Deno sur le papier est prometteur. Quant à savoir s’il va supplanter un jour Node.js, la question se pose. Cette runtime progresse régulièrement depuis son lancement en 2020 et rattrape progressivement l’important écosystème qui a fait le succès de Node.js. Comblant une bonne partie des problèmes récurrents de Node.js (dont vous pouvez découvrir à travers cette formation Node.js), il pourrait un jour, le remplacer du fait de ses performances et de son architecture bien pensée notamment au niveau des dépendances. Une technologie montante à suivre de près.

 

Nos dernières formations JavaScript

Partager l'article