¿DENO SUSTITUIRÁ A NODE JS?

Por: THANIA JESSICA JIMENEZ REYES
  1. ¿DENO SUSTITUIRÁ A NODE JS?
    1. 1.- INTRODUCCION
    2. 2.- DESARROLLO
      1. 2.1- NODE.JS
      2. 2.2.- DENO
      3. 2.3.- TECNOLOGIAS APROVECHADAS POR DENO
      4. 2.4 COMPARACIONES DE NODE Y DENO
        1. 2.4.1 SIMILITUDES
        2. 2.4.2 DIFERENCIAS
    3. 2.5 COMPATIBILIDAD DE DENO CON NPM Y NODE.JS
    4. 2.6 LIMITACIONES DE DENO SOBRE NODE.js
    5. 3.- CONCLUSIÓN
    6. 4. – BIBLIOGRAFÍA

1.- INTRODUCCION

Existen diferentes plataformas para ejecutar código de JavaScript que proporcionan un entorno de desarrollo y ejecución, siendo Node JS la herramienta más popular para crear aplicaciones web y backend, sin embargo, la constante evolución de la tecnología ha dado lugar a nuevas alternativas y enfoques, uno de los cuales es Deno, que se desarrolló en la búsqueda de abordar y superar las limitaciones y desafíos que surgieron con la adopción masiva Node.js.

El creador de ambas plataformas, Dahl, durante una de sus conferencias [2] expuso los errores de diseño que tiene Node y el cual no se podría corregir, porque forma parte de su funcionamiento.

En ese sentido Deno plantea cuestiones fundamentales sobre el futuro del desarrollo backend en JavaScript. ¿Podría Deno reemplazar a Node.js como el estándar dominante en el desarrollo del lado del servidor?

Esta investigación se centra en explorar y analizar los aspectos clave de Node.js y Deno, con el objetivo de proporcionar una visión completa de sus diferencias, similitudes, fortalezas y limitaciones. Para poder tener una idea clara y poder dar respuesta a esa interrogante.

2.- DESARROLLO

2.1- NODE.JS

Node JS, fue creada por Ryan Dahl en 2009, con el objetivo de permitir que JavaScript se ejecute en el lado del servidor y cree aplicaciones web rápidas y escalables.

“El objetivo original de Node era obligar a los desarrolladores a construir fácilmente servidores óptimos, obligándolos a usar solo I/O asíncrono, aunque no fue 100 por ciento así, ya que hay I/O síncrono en el Node, pero en gran medida está obligado a usar I/O sin bloqueo.” Ryan Dahl (Canal JavaScriptConferences, 2023, 1m04s).

Como bien lo dijo Ryan Dahl en una de las ultimas conferencias, una aplicación de Node.js se ejecuta en un solo proceso (Figura 2), sin crear un nuevo hilo para cada solicitud [1], se puede configurar un tiempo de espera, controlado por eventos y no crea subprocesos (Figura 1), por lo cual no habría bloqueos de texto y no hay ninguna posibilidad de que se detenga la ejecución. Incluye un bucle de eventos como runtime de ejecución en lugar de una biblioteca. [7]

Cuando Node.js realiza una operación de E/S, como leer de la red, acceder a una base de datos o al sistema de archivos, en lugar de bloquear el subproceso y desperdiciar ciclos de CPU en espera, Node.js reanudará las operaciones cuando regrese la respuesta. [1] (Figura 2)

Esto permite que Node.js maneje miles de conexiones simultáneas con un solo servidor sin presentar la carga de administrar la concurrencia de subprocesos, lo que podría ser una fuente importante de errores. [1] (Figura 1)

2.2.- DENO

Deno es una plataforma para la ejecución de código JavaScript fuera del navegador que permite realizar aplicaciones en cualquier ámbito, como podría ser los programas de consola, servicios web o aplicaciones de backend en general. [8]

Deno continua con la búsqueda de los mismos objetivos, pero con una perspectiva ampliada de lo que implica un servidor optimo simple. [4]

Deno está escrito en Rust, y corre en V8, allí se realizan las llamadas de enviar y recibir, que están vinculadas en V8, además puede enviar y recibir Protobuf (Protocol Buffers).

Hay un despachador que envía mensajes a varios módulos diferentes, estos módulos pueden ser en ambos lados del tipo privilegiado y no privilegiado, haciendo una sincronización de límites.

Del lado de Rust puede manejar el sistema de llamada y le devuelve la solicitud en un tiempo establecido para después dormir, y en V8 tiene un sistema modular similar.

Dentro del V8 tiene el compilador TypeScript, integrado en todo el ejecutable. [2] (Figura 3)

2.3.- TECNOLOGIAS APROVECHADAS POR DENO

Tabla 1.

TABLA DE TECNOLOGÍAS IMPLEMENTADAS EN DENO.

V8:  Para interpretar y ejecutar el código JavaScript y TypeScript.Wgpu: Para WebGPU.
Rust: lenguaje de programación de sistemas moderno y seguro.(Node usa C++)Tungstenite: Para websockets.
Tokio: Un framework de E/S asíncrono para rust. Equivalente a libuv en Node.Trust-dns: Para consultas DNS asíncronas.
Compilador TypeScriptRustyline: Facilita la lectura interactiva de entradas desde la línea de comandos en aplicaciones de consola.
Swc:  Biblioteca de transpilación de JS/ TS de alto rendimiento.Notify: Para la notificación de cambios en el sistema de archivos.
Rustls: Biblioteca de seguridad y una implementación de TLS. Equivalente a OpenSSL en Node.LsPower: un marco de servidor de idiomas para hablar con IDES (VS Code).
Hyper y Reqwest, servidor HTTP y bibliotecas de cliente.Dprint: Formatea automáticamente el código fuente en varios lenguajes de programación.
Nota: Elaboración propia, en base al video de la conferencia de Deno. [3] 

2.4 COMPARACIONES DE NODE Y DENO

2.4.1 SIMILITUDES

Tanto Deno como Node.js son runtimes basados en el motor V8 de Google. Ambos tienen event loops, proporcionan interfaces de líneas de comando para ejecutar scripts, además de una amplia gama de utilidades de sistema.

2.4.2 DIFERENCIAS

Deno principalmente se diferencia de Node.js en los siguientes aspectos: [9]

  1. Usa el módulo ES como el sistema de módulo por omisión, en vez de CommonJS.
  2. Usa URLs para cargar dependencias locales o remotas, similar a los navegadores.
  3. Incluye un manejador de paquetes interno para la bajada de recursos, sin necesidad de NPM.
  4. Soporta TypeScript nativamente.
  5. Mejor compatibilidad con navegadores con una amplia gama de APIs Web.
  6. Permite controlar el sistema de archivos y el acceso de red para correr código en entorno de pruebas (Sandbox).
  7. Redefinición del API para utilizar Promesas, ES6 y características TypeScript.
  8. Minimiza el tamaño del API básico, mientras proporciona una biblioteca estándar grande sin dependencias externas.
  9. Utiliza canales de paso de mensajes para invocar APIs del sistema con privilegio y utilizar ligaduras (bindings).

2.5 COMPATIBILIDAD DE DENO CON NPM Y NODE.JS

En el primer prototipo, no estaba pensado en la compatibilidad con NPM y Node, pero más adelante tuvo que incorporarlos.

“Todo el ecosistema JavaScript esta en NPM y es muy útil poder llegar a ese ecosistema y hacer uso de módulos, por esa razón Deno tiene un soporte incorporado para NPM” (Canal JavaScriptConferences, 2023, 9m35s). [4]

 “El soporte de Node, hay este Nodo de barra STD que implementa algunas de las Apis del Nodo, no está completo, pero está creciendo en paridad con notas” (Canal Deno, 2022, 28m38s). [3]

A partir de la versión 1.15, Deno proporciona un modo de compatibilidad de nodos que permite ejecutar un subconjunto de programas creados para Node.js directamente en Deno.

En la página oficial, se pueden encontrar la biblioteca STD/Node y los Módulos integrados de Node.js [6]

2.6 LIMITACIONES DE DENO SOBRE NODE.js

Como se pudo ver en el punto 2.3 Deno tiene más ventajas que limitaciones en comparación a Node, pero lo que podría resaltar es:

  1. Es una plataforma que aún está en la fase de desarrollo y mejoras. (Es comprensible porque es una herramienta tecnológica nueva.)
  2. No es al 100 % compatible con Node y NPM, por ende, tampoco lo es con los softwares que utilizan el mismo.

3.- CONCLUSIÓN

Aunque Deno ofrece muchas cosas que Node carece u otras a lo que su creador llama errores, actualmente la plataforma Deno aún no es estable y todavía está propensa a cambios significativos.

Deno está orientado más hacia los nuevos desarrolladores y a las nuevas tecnologías usadas, con eso en mente, pienso que en un futuro Deno superará en gran medida a Node, no solo por su rapidez, sino también por su diseño, seguridad, mejor aprovechamiento de las tecnologías y los códigos de terceros, que le permitirán hacer grandes avances rápidamente.

El cambio será gradual, dependiendo del grado de madurez y estabilidad que obtenga, sus características, la popularidad que gane y la compatibilidad de Deno con los softwares o servicios que utilizan Node.

4. – BIBLIOGRAFÍA

[1] Introduction to Node.Js. (s/f). Introduction to Node.Js. Recuperado el 8 de agosto de 2023, de https://nodejs.dev/en/learn/

[2] JSConf. (2018, 6 de junio).  10 Cosas de las que me arrepiento de Node.js – Ryan Dahl – JSConf EU [Video]. YouTube. https://www.youtube.com/watch?v=M3BM9TB-8yA

[3] Deno. (2022, 2 de agosto). Ryan Dahl’s «What is Deno?» Talk at JS Israel 2021 [Video]. YouTube. https://www.youtube.com/watch?v=dzfW7Q57O8E

[4] JavaScript Conferences by GitNation. (2023, 3 de mayo). Deno 2.0 – Ryan Dahl, Node Congress 2023 [Video]. YouTube. https://www.youtube.com/watch?v=NWkobLM8LIw

[5] Introduction. (s/f). Deno. Recuperado el 8 de agosto de 2023, de https://deno.land/manual@v1.36.1/introduction

[6] The std/node library. (s/f). Deno. Recuperado el 8 de agosto de 2023, de https://deno.land/manual@v1.14.2/npm_nodejs/std_node

[7] Acerca | Node.js. (s.f.). Node.js. Recuperado el 8 de agosto de 2023, de https://nodejs.org/es/about

[8]Blanch, A. (2021, abril 21). Deno: qué es y cuándo usar esta evolución para NodeJs. Blog de arsys.es; Arsys Internet. https://www.arsys.es/blog/deno [9] Wikipedia contributors. (s/f). Deno (software). Wikipedia, The Free Encyclopedia. https://es.wikipedia.org/w/index.php?title=Deno_(software)&oldid=152660177

Deja un comentario

Diseña un sitio como este con WordPress.com
Comenzar