webleads-tracker

Date

28 juin 2021

Catégorie

Recrutement tech

Tout savoir sur Deno, le runtime Javascript qui monte

Tout savoir sur Deno, le runtime Javascript qui monte

En 2018, à la Conférence de la Communauté JavaScript (ou JSConf), Ryan Dahl, évoque les 10 erreurs de conception de Node.js, 10 ans après sa création. En 2020, il lance officiellement Deno, pensé pour corriger ces lacunes et proposer un nouvel environnement de développement en JavaScript plus performant. 
Mais qu’est-ce que Deno et qu’offre-t-il de mieux que Node.js ? Est-il amené à le supplanter ? Voici un focus sur ces deux runtimes. Quels sont leurs points communs et leur différence et pourquoi l’un risque-t-il de remplacer l’autre ?

Deno, qu’est-ce que c’est ?

Bien que Deno soit une anagramme de l’indéboulonnable runtime Javascript Node.js et qu’il ait été conçu par le même créateur, il ne s’agit pas d’un fork de ce dernier. Lancé en 2020, Deno est au contraire un nouvel environnement de développement productif (ou runtime), sécurisé, pour JavaScript et avec un support natif de Typescript. 

L’exécution de code TypeScript avec Deno n’exige pas d’étape de compilation: cela se fait automatiquement. Basé sur le moteur JavaScript V8 de Google, son noyau est construit en langage Rust (contrairement à Node.js qui est en C++). Par ailleurs, il utilise Tokio pour sa boucle d’évènements, elle aussi rédigée en Rust.

Deno bénéficie ainsi des technologies open source les plus performantes et offre une solution complète dans un même petit fichier exécutable. Il s’avère tout particulièrement efficace pour créer des serveurs web très sécurisés.

Quels sont les points communs entre Deno et Node.js ?

Deno et Node.js ont bien plus que leur créateur en commun. Deno étant conçu pour pallier les points faibles de son prédécesseur, les deux partagent de nombreuses similitudes et affichent un objectif commun même si leur fonctionnement n’est pas toujours basé sur des mécanismes identiques. 

  • Deno et Node.js sont tous deux des runtime en lignes de commande qui permettent d’exécuter du code JavaScript ou TypeScript.
  • Ils fonctionnent tous les deux sur le moteur V8 de Chrome : le moteur d’exécution JavaScript de Google.
  • Ils présentent une grande souplesse et une facilité de prise en main pour le développement côté serveur avec JavaScript.
  • Leur interface en ligne de commande est développée à partir du langage Rust.

Deno vs Node.js : les différences clés

Conçu pour combler les lacunes de Node.js., Deno présente aussi de ce fait de réelles différences avec son prédécesseur. 

∙ Leur langage

Node.js est écrit en langage C++ et JavaScript alors que Deno utilise Rust et TypeScript. Ces derniers affichent de nombreux avantages par rapport à d’autres langages de programmation.

  • Rust garantit aux développeurs une belle productivité, mais aussi une sécurité accrue grâce à un traitement particulier des erreurs. Il est également très fiable et assure une gestion de la mémoire optimisée ainsi qu’une grande vitesse d’exécution.  
  • La prise en charge native de TypeScript par Deno est un atout considérable. Le développeur n’a plus besoin de passer par un long processus pour faire fonctionner TypeScript, le compilateur TypeScript étant déjà intégré. Il faut noter que TypeScript est de plus en plus populaire, et ceci tout particulièrement chez les développeurs front-end travaillant sur des technos comme Angular et React. Exigeant de la rigueur, TypeScript permet d’aboutir à un code robuste et moins enclin aux bugs. La maintenance est de ce fait plus aisée. Le compilateur intégré permet aux développeurs de ne pas avoir à déboguer les erreurs de frappe TypeScript et de s’épargner une chaîne de construction complexe.

∙ Du JavaScript moderne

Node a été conçu en 2009. Depuis, de nombreuses mises à jour et améliorations de JavaScript ont eu lieu. Par conséquent, le fait que Deno utilise la syntaxe moderne d’importation des modules est un gros atout par rapport à Node. 

Alors que ce dernier recourt aux  modules CommonJS comme système de modules par défaut, Deno emploie les modules ES. Sa manière d’importer ces derniers est de ce fait bien plus efficace. En effet, dans cet  environnement le développeur peut charger uniquement les parties dont il a besoin à partir d’un package ce qui lui permet d’économiser de la mémoire. De plus, pour Deno le chargement est asynchrone contrairement à Node, ce qui est synonyme de gain de performance.

∙ Des dépendances

Node.js fait souvent l’objet de critiques concernant sa gestion compliquée des dépendances. Construits nécessairement avec le Package Manager “npm”, certains paquets Node.js intégrent parfois du code malveillant, et peuvent poser problème lors des mises à jour automatiques. 

Avec Deno, le développeur gère les dépendances autrement. Il n’est plus tributaire de npm, il n’y plus de «package.json.». Le développeur spécifie chaque module de dépendance sous la forme d’une URL. 

∙ Des outils complémentaires

Installation de scripts, formatage, débogage, regroupement, ou encore test, etc. Deno prend nativement en charge ces tâches qui sont réalisées par des outils tiers comme WebPack dans le cas de Node.js.

∙ La sécurité

Lors du développement d’un projet avec Node.js, le développeur télécharge des dépendances qui sont liées au projet. On parle de « node modules ». Ces packages ne sont pas vérifiés et des failles de sécurité peuvent s’y trouver. Le changement notable avec Deno vient ici de l’utilisation de Rust : de ce fait, la sécurité est omniprésente lors de l’exécution des scripts. Chaque opération exige une autorisation au niveau du runtime ce qui a pour résultat de bien sécuriser l’environnement d’exécution. Le développeur ne peut ni lire ni écrire un fichier sans en avoir préalablement obtenu l’autorisation.

∙ La compatibilité avec les versions antérieures de Node.js :

La librairie livrée avec Node.js est modifiée très régulièrement. Par conséquent, il est courant qu’un développeur souhaitant migrer son application sur la dernière version du runtime se retrouve confronté au non-fonctionnement de celle-ci sur cette cette nouvelle version. Il est alors nécessaire de remettre son application aux nouveaux standards, ce qui est peut être chronophage et coûteux.

Deno va-t-il supplanter Node.js ?  

Vient enfin le temps de la question que tout le monde se pose. Deno sonne-t-il le glas de Node.js ? Sans doute la réalité n’est-elle pas aussi tranchée. 

Deno est un runtime encore jeune, mais en développement très intensif depuis son lancement. Pour le moment, il est un peu tôt pour que les entreprises l’adoptent massivement. Encore faut-il d’abord que Deno tienne toutes ses promesses et qu’il parvienne à rattraper l’énorme écosystème Node.js.

Toutefois, dans la mesure où il vient résoudre une bonne partie des inconvénients majeurs de Node.js, il y a fort à parier qu’il le remplacera bel et bien un jour. Plus stable, plus performant, avec une gestion des dépendances mieux pensée, Deno dispose de tous les atouts pour séduire développeurs et entreprises. Il figure assurément parmi les technologies montantes à suivre de très près.

Date

28 juin 2021

Tags
Rédigé par
Thomas Motti
Thomas Motti

Partager