Deno : un environnement d’exécution pour JavaScript et TypeScript

Deno est un environnement d’exécution d’une simplicité redoutable pour JavaScript et TypeScript. Il propose à ses utilisateurs une méthode nouvelle et facile pour rédiger en JavaScript et TypeScript côté serveur. Cette plateforme n’en est encore qu’aux premières étapes de son développement, mais prouve déjà qu’elle pourrait remplacer, à terme, l’incontournable Node.js. Une étape qui ne se fera pas sans la communauté des développeurs JavaScript.

Il existe des produits qui, malgré leur imperfection, sont appréciés par la communauté. Le langage de script JavaScript en est un bon exemple. Ses lacunes évidentes ne l’empêchent pas d’être le langage le plus utilisé au monde avec d’innombrables frameworks et bibliothèques. Même Node.js, quasiment un prédécesseur de Deno, jouit d’une forte popularité auprès de la communauté. Avec son nouveau projet, Deno, le développeur Ryan Dahl veut tirer parti de la longue expérience de Node.js pour proposer une nouvelle plateforme, plus sûre et plus efficace. Dans cet article, nous regardons si et comment ce système fonctionne.

Nom de domaine
Votre domaine en un clic
  • Domaine .eu ou .fr + éditeur de site gratuit pendant 6 mois
  • 1 certificat SSL Wildcard par contrat
  • Boîte email de 2 Go

Qu’est-ce que Deno ?

Deno n’en est encore qu’à sa phase initiale. Ses choix en matière d’interface, d’architecture et de design ne sont pas encore gravés dans le marbre et vont sûrement évoluer au cours du développement. Sur certains points, il est donc difficile de le comparer à Node.js, évoqué plus haut. Un développeur propose une comparaison générale de ces deux plateformes dans la vidéo YouTube suivante :

mzfw9TwBiQc.jpg Pour afficher cette vidéo, des cookies de tiers sont nécessaires. Vous pouvez consulter et modifier vos paramètres de cookies ici.

Deno et Node.js sont très proches, et pas seulement par leurs noms. Leurs idées de base même sont identiques : ils proposent une plateforme pour exécuter des scripts JavaScript en dehors du navigateur et la possibilité de rédiger des scripts JavaScript (ou TypeScript) côté serveur. On les utilise donc pour des projets existants variés, il ne s’agit pas de solutions d’implémentation indépendantes et complètes. Pour l’exécution de JavaScript dans différents environnements, on privilégie en règle générale le moteur V8 de Google, déjà intégré dans les navigateurs Chrome et Edge. Côté serveur, tout comme Node.js, Deno se sert du moteur V8.

Ici s’arrêtent les similitudes. En effet, contrairement à Node, qui est rédigé en C++, Deno utilise le langage de programmation Rust de Mozilla Research, innovant et bien plus sûr. Deno permet ainsi d’écrire directement du code en typage statique, ce qui est presque un argument clé de vente.

Les caractéristiques de Deno : Out of the box

Deno a deux fonctions qui permettent de simplifier drastiquement les flux de travail : l’environnement d’exécution crée d’une part un système simple de modules, avec lequel chaque URL correspond à un module, et vice versa. D’autre part, Deno permet d’exécuter librement des codes Typescript.

Une plus grande liberté pour le développeur se traduit généralement par un risque de sécurité plus élevé pour l’application. En matière de sécurité, Deno est paré à toute éventualité, car il exécute par défaut les scripts dans un bac à sable indépendant du système d’exploitation. Les développeurs ont limité la possibilité d’ajouter d’autres fonctions.

En comparaison, Deno est bien plus orienté vers l’expérience utilisateur sur Internet : ce runtime verrouille par défaut l’accès au système d’exploitation. L’utilisateur doit autoriser une application à accéder au système, sans quoi les deux sont parfaitement isolés l’un de l’autre. Un principe comparable au comportement d’un navigateur qui demande l’autorisation, par exemple, d’accéder à la Webcam et au micro dans le cadre d’une vidéoconférence en ligne. Le logiciel accède aux ressources uniquement si l’utilisateur lui en donne l’autorisation. En bref, Deno se comporte comme un navigateur pour des scripts en ligne de commande.

De plus, Deno reprend la tendance la plus forte du développement avec JavaScript : le support natif de TypeScript.

Note

TypeScript se différencie du langage de programmation JavaScript par sa gestion du typage. JavaScript offre une (trop) grande liberté pour typer les variables et les fonctions. On n’attend aucun type particulier pour une variable ou une fonction, ce qui complique la lecture et la compréhension du code. TypeScript exige par défaut que chaque variable soit associée à un type. Les fonctions et les entrées sont typées au préalable. Par ailleurs, toute affectation erronée est signalée automatiquement.

Pour convertir et exécuter le code TypeScript généré avec Deno en JavaScript, il n’est plus nécessaire de passer par l’étape du compilateur. Dès que des données doivent être échangées, elles sont transmises par paquets. Par conséquent, Deno n’a besoin d’aucun paquet externe comme ts-node, par exemple, qui s’occupe du processus de compilation pour Node.js.

Deno crée aussi la surprise en matière de gestion de paquets. Node doit notamment son succès à son gestionnaire de paquets npm. À l’origine, npm appartenait à la communauté GitHub et n’était pas un composant standard de Node. Pourtant, l’association des deux fait figure de norme non officielle. À l’inverse, Deno est fourni sans aucun gestionnaire de paquets externe, puisqu’il est son propre gestionnaire de modules. Son système de modules peut récupérer des paquets à partir d’un chemin d’accès ou d’une URL et télécharger directement les ressources nécessaires.

Comment fonctionne Deno ?

Deno n’en est qu’à son commencement. L’accent est clairement mis sur la sécurité et sur les questions d’architecture fondamentales. On le ressent dès l’installation, qui ne repose pas sur un simple paquet d’installation, mais passe par GitHub et plus spécifiquement par les scripts shell ou le gestionnaire de paquets du système d’exploitation. Pour vérifier que l’installation est réussie, il faut entrer la commande Deno - version dans l’interface de ligne de commande (une solution old school s’il en est). Cette commande donne également une vue d’ensemble de la version Deno installée et des versions du moteur V8 et de TypeScript. Si vous ne souhaitez pas installer Deno sur votre système, le runtime peut aussi s’installer et s’exécuter dans un conteneur Docker.

Dès que Deno est installé, il propose deux modes d’exécution. L’environnement d’exécution peut s’utiliser en mode interactif en tant que shell ou pour éditer un fichier. La première option est intéressante pour les petites applications et pour expérimenter Deno en tant qu’alternative à Node.js. La seconde correspond à une utilisation plus courante de Deno : on indique le nom d’un fichier dans la plateforme avant de commencer à travailler.

Les mots-clés courants de JavaScript comme import, export, promise, etc., sont directement disponibles sous Deno et n’ont pas besoin d’être importés au préalable. Outre les objets standards, la plateforme propose aussi un objet global, que les développeurs ont baptisé, sans grande imagination, Deno. L’objet Deno constitue la base de toute application. Il se comporte comme une interface avec le système. Ainsi, les développeurs peuvent, par exemple, accéder au système de fichiers et sortir du bac à sable. Comme déjà mentionné, cette exception doit être activement autorisée afin de ne permettre à aucune application d’accéder au système sans que l’utilisateur n’en soit informé.

Deno propose tous les modules standards. Cependant, la communauté propose déjà des modules complémentaires, expérimentaux ou aboutis, pour augmenter l’étendue de ses fonctionnalités.

Deno : récapitulatif des avantages et inconvénients

Deno est-il ou deviendra-t-il meilleur que Node ? Son développeur, Ryan Dahl, en est convaincu. Les lourdeurs historiques, les erreurs et les compromis finiront par être résolus pour créer une plateforme moderne, stable et sûre supportant JavaScript et TypeScript côté serveur. Dans tous les cas, son potentiel est bien là, notamment grâce au choix d’utiliser le langage de programmation de Mozilla, Rust, dans le noyau, et de créer un système d’autorisation centralisé. Ce dernier offre une utilisation intuitive tout en empêchant aux applications dans le bac à sable d’accéder involontairement au système.

Ce processus de travail fortement simplifié présente (encore) quelques inconvénients : Deno n’est pas toujours compatible avec les écosystèmes existants. Ainsi, un module Node ne fonctionnera pas directement sur Deno – et inversement. Quoi qu’il en soit, si la plateforme fait ses preuves au fil du temps, à long terme, elle ne présentera plus de grave problème de compatibilité. À titre d’exemple, Deno dispose déjà d’une fonction require compatible avec Node.

En résumé

Deno n’est encore qu’au stade de projet. Cependant, les premières solutions à certains des problèmes majeurs de Node.js sont déjà dignes d’être soulignées.

Hébergement Web
Hébergement Web flexible, performant et sûr
  • Certificat SSL et protection DDoS
  • Sauvegarde et restauration des données
  • Assistance 24/7 et conseiller personnel
Cet article vous a-t-il été utile ?
Page top