IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Deno lance deno desktop, une nouvelle commande qui convertit les applications web en binaires natifs


Sujet :

JavaScript

  1. #1
    Chroniqueur Actualités
    Avatar de Anthony
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Novembre 2022
    Messages
    2 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Rédacteur technique

    Informations forums :
    Inscription : Novembre 2022
    Messages : 2 287
    Par défaut Deno lance deno desktop, une nouvelle commande qui convertit les applications web en binaires natifs
    Deno Desktop convertit les applications web en binaires natifs, en ciblant votre référentiel web existant, tel que Next.js, Astro, Remix ou SvelteKit, pour le compiler en un exécutable natif léger et autonome

    Deno a lancé la commande deno desktop, conçue pour transformer les applications Web en binaires natifs pour macOS, Windows ou Linux. Disponible dans la version 2.9.0 (canary) de Deno, cette fonctionnalité détecte automatiquement les frameworks web les plus courants, comme Next.js, Astro, Remix ou SvelteKit, et compile votre projet Deno en un binaire natif léger et autonome qui regroupe votre code, le runtime Deno et un moteur de rendu Web en un seul paquet par plateforme. Aucune modification du code n’est nécessaire pour porter un projet web existant sur le bureau.

    Deno est un moteur d'exécution pour JavaScript, TypeScript et WebAssembly, basé sur le moteur JavaScript V8 et le langage de programmation Rust. Deno a été co-créé par Ryan Dahl, le créateur de Node.js, et Bert Belder. Deno assume explicitement le rôle à la fois de moteur d'exécution et de gestionnaire de paquets au sein d'un seul exécutable, sans nécessiter de programme de gestion de paquets distinct. Deno se veut un environnement de script productif et sécurisé destiné aux programmeurs modernes. À l'instar de Node.js, Deno met l'accent sur une architecture orientée événements, en proposant un ensemble d'utilitaires d'E/S de base non bloquants, ainsi que leurs versions bloquantes. Deno peut être utilisé pour créer des serveurs web, effectuer des calculs scientifiques, etc. Deno est un logiciel open source sous licence MIT.

    Finie la lourdeur d'Electron, deno desktop convertit désormais les applications web en binaires natifs sans aucune configuration.

    Pendant une décennie, développer une application de bureau multiplateforme à l'aide de technologies web impliquait d'accepter un compromis technique impitoyable : Electron. On disposait certes de vues web standard, mais les utilisateurs se retrouvaient avec des binaires « hello world » de plus de 150 Mo et une consommation de mémoire effrénée.

    deno desktop, la nouvelle sous-commande native qui vient de sortir, redéfinit complètement les règles du jeu en matière de distribution pour ordinateurs de bureau. Au lieu d'encapsuler votre projet dans des couches IPC à forte friction et des frameworks lourds, deno desktop cible votre référentiel web existant (Next.js, Astro, Remix, SvelteKit, etc.) et le compile en un exécutable natif léger et autonome. Pas de réécriture de code, pas d'empreinte de dépendances massive, et une compatibilité totale avec Node/npm dès l'installation. Le paysage du développement pour ordinateur de bureau vient de changer pour de bon.

    deno desktop transforme un projet Deno (qu'il s'agisse d'un simple fichier TypeScript ou d'une application Next.js) en une application de bureau autonome. Le résultat est un binaire redistribuable qui regroupe votre code, le runtime Deno et un moteur de rendu Web en un seul paquet par plateforme.

    Nom : deno desktop javascript.png
Affichages : 4783
Taille : 78,7 Ko

    Pourquoi deno desktop ?

    Les technologies web constituent la boîte à outils d'interface utilisateur la plus répandue au monde. Les applications de bureau développées à partir de piles web (Electron, Tauri, Electrobun) tirent parti de cet atout, mais chacune présente des inconvénients avec lesquels il faut composer : des binaires volumineux, une prise en charge insuffisante de certaines plateformes, l'absence d'écosystème JavaScript, l'absence de mécanisme de mise à jour intégré et l'absence d'intégration de framework.

    deno desktop a une position bien définie sur ces compromis :

    • Petite taille par défaut, compatibilité totale avec Node. Le backend WebView par défaut utilise la WebView native du système d'exploitation pour obtenir des binaires légers, tout en permettant de continuer à bénéficier de l'intégralité de l'écosystème npm grâce à la couche de compatibilité Node de Deno. Les développeurs peuvent opter pour le backend Chromium (CEF) intégré lorsqu'ils ont besoin d'un rendu identique sous macOS, Windows et Linux.
    • Détection automatique du framework. Il suffit de pointer deno desktop vers un projet Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart, TanStack Start ou Vite SSR pour qu’il s’exécute : le serveur de production en mode « release », et le serveur de développement avec rechargement à chaud (hot reload) via l’option --hmr. Aucune modification du code n’est nécessaire pour porter un projet web existant sur le bureau.
    • Des liaisons intra-processus plutôt que l'IPC. La communication entre le backend et l'interface utilisateur s'effectue via des canaux intra-processus, et non via une IPC basée sur des sockets. Les valeurs sont toujours encodées lorsqu'elles franchissent la frontière d'appel, mais il n'y a pas d'allers-retours inter-processus entre le code Deno et la vue Web.
    • Compilation croisée à partir d'une seule machine. Une même machine permet de compiler pour macOS, Windows et Linux. Les backends sont téléchargés à la demande, et non compilés localement.
    • Mise à jour automatique intégrée via la comparaison de binaires. Il suffit de fournir un seul manifeste latest.json et des correctifs bsdiff ; le runtime interroge, applique et annule automatiquement les modifications en cas d'échec au démarrage.

    Hello, desktop

    Créer une application de bureau en un seul fichier (main.ts) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Deno.serve(() =>
      new Response("<h1>Hello, desktop</h1>", {
        headers: { "content-type": "text/html" },
      })
    );


    Le binaire compilé ouvre une fenêtre pointant vers un serveur HTTP local lié à votre gestionnaire Deno.serve(). Vous pouvez l'exécuter directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ./main      # macOS / Linux
    .\main.exe  # Windows

    Deno.serve() se connecte automatiquement à l'adresse vers laquelle la vue Web navigue ; il n'est donc pas nécessaire de spécifier un port ou un nom d'hôte.

    deno desktop est incluse dans Deno v2.9.0 et n'est pas encore disponible dans une version stable. Pour l'essayer, exécutez la commande deno upgrade canary afin d'installer la version canary. La commande, les clés de configuration et les API TypeScript sont susceptibles d'évoluer avant que la fonctionnalité ne soit stabilisée.

    Source : Deno

    Et vous ?

    Quel est votre avis sur le sujet ?
    Trouvez-vous cette nouvelle sous-commande de Deno utile et pertinente ?

    Voir aussi :

    Deno 2.6, la dernière version du runtime JavaScript et TypeScript moderne, est disponible avec l'outil dx, un contrôle plus granulaire des autorisations et une vérification des types TypeScript plus rapide

    Deno contre Oracle : Deno a déposé une demande d'annulation de la marque JavaScript d'Oracle, Oracle a jusqu'au 4 janvier 2025 pour agir, sinon la marque sera probablement annulée

    Pendant que Deno, le runtime de JS et TS, gagne en maturité, certaines entreprises tentent de l'utiliser en production, mais d'autres repartent non satisfaites à la suite des tests effectués
    Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

  2. #2
    Communiqués de presse

    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Avril 2025
    Messages
    819
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Rédacteur technique

    Informations forums :
    Inscription : Avril 2025
    Messages : 819
    Par défaut Deno 2.9 intègre un générateur d'applications de bureau natives et facilite la migration des projets Node.js
    Le moteur d'exécution pour JavaScript, TypeScript et WebAssembly Deno 2.9 est disponible, intégrant un générateur d'applications de bureau natives et facilite la migration des projets Node.js

    Deno 2.9 vient d'être publié en tant que dernière version de ce moteur d'exécution JavaScript open source très populaire. Cette mise à jour majeure introduit « deno desktop », un nouvel outil conçu pour rationaliser le développement d’applications de bureau natives à partir de projets web. Parallèlement à cette version, Deno 2.9 facilite l’adoption par les développeurs en permettant à la commande deno install de lire directement les fichiers de verrouillage npm, pnpm, Yarn et Bun. Cette mise à jour aligne Deno sur la dernière cible de compatibilité Node.js 26, ajoute la prise en charge de l’importation de fichiers CSS en tant que feuilles de style constructibles à l’aide d’attributs d’importation, et étend considérablement l’API Web Cryptography avec des algorithmes modernes et post-quantiques basés sur les propositions du NIST.

    Deno est un moteur d'exécution pour JavaScript, TypeScript et WebAssembly, basé sur le moteur JavaScript V8 et le langage de programmation Rust. Deno a été co-créé par Ryan Dahl, le créateur de Node.js, et Bert Belder. Deno assume explicitement le rôle à la fois de moteur d'exécution et de gestionnaire de paquets au sein d'un seul exécutable, sans nécessiter de programme de gestion de paquets distinct.

    Deno se veut un environnement de script productif et sécurisé destiné aux programmeurs modernes. À l'instar de Node.js, Deno met l'accent sur une architecture orientée événements, en proposant un ensemble d'utilitaires d'E/S de base non bloquants, ainsi que leurs versions bloquantes. Deno peut être utilisé pour créer des serveurs web, effectuer des calculs scientifiques, etc. Deno est un logiciel open source sous licence MIT.

    Récemment, Deno 2.9 vient d'être publié en tant que dernière version de ce moteur d'exécution JavaScript open source très populaire. Cette mise à jour majeure introduit « deno desktop », un nouvel outil conçu pour rationaliser le développement d’applications de bureau natives à partir de projets web. Au lieu de s’appuyer sur Electron ou Tauri, les développeurs pointent « deno desktop » vers n’importe quel script ou framework web, et celui-ci compile le code en un binaire unique et autonome. L’interface utilisateur s’exécute dans une vue web, tandis que la logique de l’application s’exécute dans Deno, ce qui donne lieu à une application native portable et distribuable.

    « deno desktop » redéfinit complètement les règles du jeu en matière de distribution pour ordinateurs de bureau. Au lieu d'encapsuler votre projet dans des couches IPC à forte friction et des frameworks lourds, deno desktop cible votre référentiel web existant (Next.js, Astro, Remix, SvelteKit, etc.) et le compile en un exécutable natif léger et autonome. Pas de réécriture de code, pas d'empreinte de dépendances massive, et une compatibilité totale avec Node/npm dès l'installation. Le résultat est un binaire redistribuable qui regroupe votre code, le runtime Deno et un moteur de rendu Web en un seul paquet par plateforme.

    Parallèlement à cette version, Deno 2.9 facilite l’adoption par les développeurs en permettant à la commande deno install de lire directement les fichiers de verrouillage npm, pnpm, Yarn et Bun. Cela simplifie la transition pour ceux qui migrent des projets Node.js vers Deno en limitant les étapes de migration à quelques commandes. Les performances ont également été améliorées au niveau du démarrage, de l’utilisation de la mémoire et du débit HTTP, ce qui profite à la plupart des projets.

    Cette mise à jour aligne Deno sur la dernière cible de compatibilité Node.js 26, ajoute la prise en charge de l’importation de fichiers CSS en tant que feuilles de style constructibles à l’aide d’attributs d’importation, et étend considérablement l’API Web Cryptography avec des algorithmes modernes et post-quantiques basés sur les propositions du NIST. Plusieurs commandes intégrées, notamment `deno compile`, `deno bundle`, `deno fmt` et `deno task`, ont été améliorées. Ces modifications en arrière-plan sont complétées par une meilleure gestion des dépendances, une sécurité renforcée de la chaîne d’approvisionnement, des outils de test et de couverture affinés, ainsi que des paramètres de traçage OpenTelemetry plus granulaires pour l’observabilité.

    Nom : 1.jpg
Affichages : 659
Taille : 37,0 Ko

    Voici un extrait de l'annonce de Deno 2.9 :

    Performances

    Deno 2.9 apporte des gains de performances significatifs en termes de temps de démarrage, d’utilisation de la mémoire et de débit HTTP. Les tests de performance Deno.serve ci-dessous exécutent trois charges de travail avec un niveau de concurrence de 100 : un « Hello, World ! » en texte clair, un corps de réponse de 1 Mio et une requête réaliste qui envoie via POST une charge utile JSON avec un en-tête d’authentification « Bearer » et la renvoie sous forme de JSON. Toutes ces mesures ont été effectuées sur une machine Linux x86_64 dédiée, en comparaison avec Deno 2.8.0 :

    Nom : 2.jpg
Affichages : 546
Taille : 63,3 Ko

    Démarrage. Un programme « hello-world » démarre désormais à froid en environ la moitié du temps nécessaire avec la version 2.8 (passant de 34 ms à 17 ms). Ce gain provient du chargement différé des variables globales de Node à partir du snapshot, de la limitation du démarrage précoce de Node aux workers Node, d’un cache de code V8 pour les modules ESM résiduels chargés de manière différée, et d’un snapshot minifié ; sous macOS, des corrections en chaîne réduisent encore le temps de pré-main.

    Mémoire. Le point marquant de ce cycle est la gestion de la mémoire sous charge. Dans la version 2.8, la taille de l’ensemble résident (RSS) augmentait avec la charge de travail, passant d’environ 94 Mo lors du service de texte en clair à 197 Mo lors de la diffusion en continu de corps de 1 Mio. Dans la version 2.9, elle reste pratiquement stable, se maintenant autour de 62 Mo quelle que soit l’activité du serveur. Cela se traduit par une RSS de pointe 2,2 fois inférieure pour la charge de travail en conditions réelles (passant de 142 Mo à 64 Mo) et 3,1 fois inférieure pour les corps de 1 MiB (passant de 197 Mo à 63 Mo) ; ainsi, une même machine peut exécuter beaucoup plus d’instances Deno.serve simultanées avant d’atteindre ses limites.

    Débit HTTP. Deno.serve est également plus rapide dans tous les cas de figure : la charge de travail en conditions réelles gagne 1,27 fois en débit, le texte en clair 1,11 fois et les corps de 1 Mio 1,18 fois, grâce à un nouveau chemin de service HTTP/1.1 propre à Deno.

    Plusieurs chemins critiques ont également été transférés de JavaScript vers Rust dans cette version : crypto.subtle et console / Deno.inspect.

    Importations de modules CSS

    Deno 2.9 prend en charge l’importation de fichiers CSS en tant que feuilles de style constructibles à l’aide d’attributs d’importation, conformément à la norme web relative aux scripts de modules CSS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import sheet from "./styles.css" with { type: "css" };
     
    document.adoptedStyleSheets = [sheet];


    L’importation donne lieu à une instance CSSStyleSheet, ce qui permet au même code de s’exécuter aussi bien dans Deno que dans le navigateur sans passer par une étape de regroupement. Cette fonctionnalité est activée via l’option --unstable-raw-imports dans la version 2.9. Une simple importation CSS n’a pas grand intérêt en soi, mais elle fait toute la différence entre un code front-end s’exécutant sous Deno et un code qui bloque le chargeur de modules : les composants et modules qui importent leurs propres feuilles de style se chargent désormais directement et font l’objet d’une vérification de types, ce qui facilite considérablement le test du code front-end dans Deno.

    Migration depuis npm, pnpm, yarn et Bun

    La migration d’un projet Node existant vers Deno est on ne peut plus simple : dans la plupart des cas, quelques commandes suffisent. Exécutez deno install pour récupérer vos dépendances, puis deno task dev pour lancer votre application, et vous êtes déjà sur Deno. Il n’y a rien à porter ni à réécrire. Deno lit le fichier package.json, le fichier de verrouillage et la structure de votre espace de travail existants. La version 2.9 corrige les derniers détails pour que même les espaces de travail pnpm et les outils qui font appel à Node via le shell fonctionnent sans intervention.

    Votre fichier de verrouillage vous suit. Le principal obstacle lors du changement de gestionnaire de paquets est la perte d’un graphe de dépendances soigneusement verrouillé. Avec la version 2.9, ce n’est plus le cas. Exécutez deno install dans un projet contenant un fichier package-lock.json, pnpm-lock.yaml, yarn.lock ou bun.lock, mais pas de deno.lock, et Deno génère un nouveau fichier deno.lock directement à partir de celui-ci, en conservant les versions résolues exactes et les hachages d’intégrité lors de cette première installation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ deno install
    Seeded deno.lock from package-lock.json


    Nom : 3.jpg
Affichages : 537
Taille : 69,0 Ko

    Il n’y a ni réévaluation ni mises à niveau inattendues : les versions que vous utilisiez sous npm sont celles que vous utilisez sous Deno. À partir de là, la commande deno install crée un répertoire node_modules avec lequel Deno peut fonctionner, et la commande deno task exécute les scripts de votre fichier package.json existants, ce qui permet au reste de votre équipe de continuer à travailler comme d’habitude.

    Les espaces de travail sont conservés, y compris ceux de pnpm. Deno reconnaît déjà le champ workspaces que npm, yarn et Bun stockent dans package.json ; ces monorepos fonctionnent donc tels quels. pnpm fait figure d’exception : il stocke la configuration de son espace de travail dans un fichier séparé, pnpm-workspace.yaml, que Deno ne lit pas, ce qui provoquait auparavant une erreur de résolution source de confusion. Désormais, Deno détecte ce fichier et migre ses paquets, son catalogue et ses catalogues vers votre fichier package.json (ou deno.json) sans modifier vos commentaires ni vos champs existants, puis vous invite à relancer l’opération. Associé au protocole catalog: adopté par Deno dans la version 2.8, vos versions de dépendances centralisées et partagées continuent de fonctionner après le transfert.

    Les outils qui s’attendent à trouver Node continuent de fonctionner. De nombreux outils de build font directement appel à un binaire Node, comme le pool de workers Turbopack de Next.js. Lorsqu’aucun véritable Node n’est installé, Deno place désormais un substitut dans le PATH qui redirige vers lui-même et traduit les arguments de la CLI de Node, afin que ces outils s’exécutent sans modification. Un véritable Node n’est jamais masqué, et l’option DENO_DISABLE_NODE_SHIM=1 permet de désactiver cette fonctionnalité.

    En résumé, vous pouvez intégrer Deno dans un projet Node, y exécuter vos scripts existants, puis décider de la suite à donner selon votre propre calendrier.

    Source : Annonce Deno 2.9

    Et vous ?

    Pensez-vous que cette annonce est crédible ou pertinente ?
    Quel est votre avis sur le sujet ?

    Voir aussi :

    Deno 2.6, la dernière version du runtime JavaScript et TypeScript moderne, est disponible avec l'outil dx, un contrôle plus granulaire des autorisations et une vérification des types TypeScript plus rapide

    Node.js 26 est disponible, activant l'API Temporal par défaut pour améliorer les opérations de date et d'heure, et apportant la mise à jour du moteur V8 et le client HTTP Undici

    Deno contre Oracle : Deno a déposé une demande d'annulation de la marque JavaScript d'Oracle. Oracle a jusqu'au 4 janvier 2025 pour agir, sinon la marque sera probablement annulée
    Publication de communiqués de presse en informatique. Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

Discussions similaires

  1. Réponses: 7
    Dernier message: 02/04/2026, 02h08
  2. [Lazarus] YHTML : une nouvelle façon de développer des applications web
    Par seroze dans le forum Lazarus
    Réponses: 23
    Dernier message: 30/04/2023, 19h54
  3. Réponses: 8
    Dernier message: 05/07/2020, 12h04
  4. Argument optionnel d'une nouvelle commande
    Par Fox213 dans le forum Débuter
    Réponses: 5
    Dernier message: 05/08/2008, 17h32
  5. Réponses: 3
    Dernier message: 22/04/2007, 14h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo