Node.JS: qué es, cómo funciona este entorno de ejecución de JavaScript y una guía para empezar

Introducción
Actualmente, la creación de aplicaciones se centra en arquitecturas escalables y la entrega de soluciones en tiempo real, además de prestar atención a la componenteización y la seguridad.
A este escenario se suma la revolución iniciada por los teléfonos inteligentes, con el uso cada vez más intenso de las redes sociales y el aumento de las soluciones IoT (Internet de las cosas). En este contexto, los paradigmas conocidos en el desarrollo de aplicaciones también han sufrido varios cambios que van desde el Front-end hasta el Back-end , donde cada vez pensamos más en una solución como un todo , teniendo en cuenta el consumo de datos y la disponibilidad de infraestructura .
Y es en esta coyuntura donde nace Node.js, emergiendo como una solución potente y económica para crear y mantener entornos tecnológicos con altas exigencias. Entonces, ¿vamos a conocer un poco sobre esta herramienta?
¿Qué es Node.JS?

JavaScript es hoy en día uno de los lenguajes más utilizados, y esto se debe en gran medida a que es un lenguaje base para decenas de frameworks gran popularidad y adopción en la comunidad de desarrollo.
Al ser un lenguaje popularmente conocido para construir aplicaciones web más interactivas, JavaScript tiene un fuerte enfoque en el Front-end ( lado del cliente ), es decir, se usa comúnmente para ejecutarse en el “lado del cliente” de la aplicación. Con la evolución de las tecnologías web, se hizo posible hacer que JavaScript también se ejecutara en el Back-end , y es en este momento de consolidación de tecnologías y soluciones que aparece Node.js.
Pero, al fin y al cabo, ¿qué es Node.js? Node.js es un entorno de ejecución de código JavaScript del lado del servidor , lo que en la práctica se refleja en la posibilidad de crear aplicaciones independientes (autosuficientes) en una máquina servidor, sin necesidad de un navegador.
La historia de Node.JS
Node.js nació en 2009 como respuesta a los intentos de ejecutar código JavaScript en modo del lado del servidor , ya que el objetivo principal del lenguaje era manipular el DOM ( Document Object Model ) y hacer que las aplicaciones web fueran más interactivas y dinámicas.
A esto se suma el hecho de que los desarrolladores de JavaScript trabajan con un lenguaje sencillo e interpretado que no requiere la instalación de complejas herramientas de desarrollo.
Estos son algunos de los factores que motivan al creador del proyecto Node.js, el ingeniero de software Ryan Dahl , responsable de este entorno de ejecución de código JavaScript fuera del navegador, en el lado del servidor.
Línea de tiempo
A continuación, tenemos una línea de tiempo de Node.js, desde su nacimiento hasta la actualidad:

Cómo instalar Node.JS: Linux, Windows y MacOS
Node.js es una herramienta gratuita y de código abierto . También es multiplataforma , lo que nos permite entregar una solución para ejecutarse en entornos Windows, Linux o MacOS , y su intérprete está basado en el V8 de Google (consultaremos más detalles al respecto a continuación).
Tenemos un excelente contenido que muestra en detalle la instalación de Node.js en diferentes plataformas, que es el artículo Cómo instalar Node.js en Windows, Linux y macOS .
Recomendamos leer este material para que comprendas cómo instalar y explorar las diferentes versiones de Node.js.
Tiempo de ejecución de JavaScript y V8

Node.js es la herramienta que nos dará la posibilidad de interpretar código JavaScript , de forma muy similar al navegador. Cuando ejecutamos un comando escrito en JavaScript, Node.js interpreta este comando y lo convierte al lenguaje de máquina para que lo ejecute la computadora. Por esta razón, Node.js también puede denominarse JavaScript Runtime o programa de ejecución de JavaScript.
Observe la secuencia de comandos de JavaScript en la terminal que se muestra a continuación:

Cuando iniciamos Node.js con el comando node
, iniciamos un proceso que abarca un intérprete de JavaScript y una utilidad CLI ( interfaz de línea de comandos ) , y es en este proceso abierto en la terminal donde se realizará la interpretación y ejecución del JavaScript Runtime.
Para este proceso de interpretación, Node.js hace uso de V8, más precisamente conocido como Chrome’s V8 JavaScript engine .
V8 es un intérprete de JavaScript muy potente desarrollado por Google y utilizado por Chrome. También se la conoce como máquina virtual JavaScript. Fue desarrollado utilizando el lenguaje C++ , es de código abierto y fue creado con la intención de acelerar la ejecución de aplicaciones desarrolladas en JavaScript.Debido a que proporciona un buen rendimiento , varias plataformas han adoptado Node.js como una solución tecnológica de back-end viable y efectiva, como el propio Google, Netflix, entre otras.
El motor V8 es uno de los componentes principales de la arquitectura Node.JS.
Entendiendo el motor
Es interesante señalar que existen otros “motores” para JavaScript, como SpiderMonkey , de Firefox, o WebKit , de Safari, pero el adoptado por Node.js es el V8. De forma general, el proceso de funcionamiento de estos motores se puede resumir en los siguientes pasos:
- El motor accede al código JavaScript, que proviene de la lectura de la etiqueta
script
de un archivo HTML o de la descarga de un archivo JavaScript; - Realiza el
Parser
, proceso de análisis y conversión; - Ensambla el AST (Árbol de sintaxis abstracta), un mapeo que identifica qué está haciendo cada parte del código;
- Y, finalmente, interpreta el AST. En esta etapa, al interpretar el AST, el motor V8 genera los códigos de bytes que ejecutará la máquina. En este proceso, todavía queda una etapa de optimización del código generado.
Imagine escribir la siguiente función en Javascript:
function soma(num1,num2) { return num1 + num2; }
En este proceso de análisis y conversión tendremos el siguiente AST :

Si deseas comprender más sobre AST y cómo se transforma el código: puede usar Explorador ASTy poner tu propio código para entender cómo se transforma.
En la imagen a continuación, tenemos una abstracción del proceso de ejecución del código JavaScript por parte del motor V8:

Al ejecutar esta secuencia de procesos presentada en el diagrama anterior, nuestro motor Javascript interpreta y compila el código en un bytecode optimizado para ejecutarse en la computadora.
Asíncrono, single thread y orientado a eventos
Una de las características de Node.js es que es un entorno de ejecución asíncrono . Con esto funciona para no bloquear la aplicación cuando se está ejecutando, dejando en segundo plano los procesos que más tiempo consumen.
Node.js se diferencia de otras plataformas de programación establecidas, como Java , PHP y .NET, debido a que es single-threaded , es decir, Node.js no inicia subprocesos en paralelo como otras plataformas. Al ser un sistema de un solo thread , Node.js no necesita administrar múltiples threads , optimizando así el proceso y el consumo de memoria de la aplicación .
La característica de Node.js que evita que sea lento o tarde mucho en procesar la cola de solicitudes es que no es bloqueante ; Esto tiene que ver con el sistema de devolución de llamadas de JavaScript y el bucle de eventos.
Características de Node.JS
A lo largo del artículo ya hemos hablado de algunas características de Node.js, pero cabe mencionar que se puede utilizar para:
- Desarrollar soluciones API Rest;
- Creación de chatbots;
- proyectos de Internet de las cosas (IoT); y
- Dar vida a soluciones de web scraping, servidores web e incluso aplicaciones de escritorio.
Node.js tiene una enorme versatilidad, a continuación vamos a dejar por aquí algunas otras características que no podemos dejar de mencionar:
- Escalabilidad: Node.js fue diseñado desde un principio para entregar soluciones para arquitecturas escalables, de ahí su adopción por parte de grandes empresas tecnológicas;
- Multiplataforma: podemos crear desde soluciones web hasta aplicaciones de escritorio;
- Código Abierto: como ya se mencionó, Node.js es de código abierto, lo que nos permite contribuir al proyecto e incluso realizar personalizaciones;
- Multiparadigma: con JavaScript podemos adoptar varias formas de codificación utilizando paradigmas como el orientado a objetos, el funcional y el orientado a eventos.
Para trabajar con Node.js es necesario conocer los conceptos básicos de JavaScript , que es un lenguaje muy receptivo, especialmente para principiantes, ya que tiene una curva de aprendizaje más fluida en comparación con otros lenguajes.
Módulos
Node.js trabaja fuertemente con el concepto de módulo , que tiene como objetivo organizar el código en partes pequeñas y especializadas, además de aplicar el principio de encapsulamiento “ocultando” el código y exponiendo solo lo necesario a otras partes de la aplicación.
Originalmente Node.js trabajaba con el sistema de modularización CJS (Common JS), ya que JavaScript no contaba con herramientas específicas para ello. Posteriormente se especificó el estándar "general" de módulos de JavaScript , EcmaScript Modules.
Node.js ha ido adoptando gradualmente ECMAScript Modules desde la versión 13, lo que trae muchas diferencias en relación con la forma “original” de Node.js, CJS.
Usando NPM

En el proceso de instalación de Node.js también se nos proporciona el NPM (Node Package Manager) , que nos permitirá compartir los módulos que creemos con la comunidad además de permitir la reutilización de módulos creados por otros desarrolladores.
Para verificar la instalación y versión de NPM, puede ejecutar el comando npm -v
:

A través de NPM podemos gestionar todas las dependencias de los proyectos JavaScript que estemos desarrollando, con él tenemos acceso a una enorme gama de librerías y frameworks JS, y también nos permite crear nuestros propios módulos y compartirlos con la comunidad. ¿Quieres saber cómo? Mira este súper artículo .
Certificaciones
Las certificaciones siempre son un punto de mucha discusión dentro de las comunidades tecnológicas, pero existe consenso en que ayudan a los profesionales a adquirir conocimientos en diferentes áreas .
Además, las certificaciones también son una gran oportunidad para demostrar al mercado que conoces los por menores de algunas tecnologías o lenguajes . Empresas como Microsoft, IBM, Google, Oracle y algunos institutos o fundaciones promueven certificaciones para profesionales de la tecnología.
¿Pero existen certificaciones en Node.js? Y la respuesta es ¡sí! A través de la Fundación OpenJS es posible obtener certificaciones en Node.js, la fundación ofrece dos opciones de certificación para desarrolladores. Ellos son:
- Desarrollador de servicios OpenJS Node.js (JSNSD);
- Desarrollador de aplicaciones OpenJS Node.js (JSNAD).
1) Desarrollador de servicios OpenJS Node.js (JSNSD)
Certifica a la persona como competente en la creación de API y Servicios Rest con especial atención a la implementación de seguridad

2) Desarrollador de aplicaciones OpenJS Node.js (JSNAD)
Esta certificación es para desarrolladores con capacidad de crear aplicaciones web con Node.js.

Resumen sobre las Certificaciones
En resumen, la certificación es una señal para el mercado tecnológico y la comunidad de que tu, como profesional, tienes habilidades capacitadas y conocimiento en una determinada tecnología, y pueden agregar un up
activo interesante a tu currículum.
Su uso en el mercado
La pregunta sigue siendo: "¿Qué pasa con el mercado donde se ejecuta Node.js?" . Por ser una tecnología flexible y escalable, hoy en día las grandes empresas utilizan Node.js como parte de su stack . Entre ellos podemos mencionar:
- GoDaddy: que migró e implementó varios proyectos frontend y backend en Node.js, incluido el abandono de tecnologías .NET en favor de Node.js;
- Netflix: este es un caso muy emblemático al ser la plataforma de streaming más grande en la actualidad. Se reemplazó Java con JavaScript para mejorar el rendimiento de sus solicitudes;
- NASA: Ingeniería de la NASA desarrolló una API con Node.js para trabajar en la integración de bases de datos en un servicio de nube;
- Slack: reconocida plataforma de comunicación personal o profesional, ejecuta sus aplicaciones y desarrolló su cliente de escritorio con Node.js;
- Uber: la aplicación que conecta a usuarios y conductores fue construida en base a Node.js.
Podemos mencionar varias startups e incluso gigantes tecnológicos como IBM que tienen soluciones desarrolladas con Node.JS. Es una tecnología en gran expansión , que abrió innumerables oportunidades laborales en varios paises.
Soporte de Node.js: repositorio para validaciones y ayuda del proyecto
En el contexto de este universo que es Node.JS, el proyecto mantiene un repositorio con varios ejemplos de implementaciones usando la tecnología, por lo que si deseas validar un concepto , o incluso ayudar con la implementación de un servidor usando Node.js, esta documentación es para ti, puedes ir al repositorio de ejemplos .
Obtenga más información: ¿Cómo ser un Profesional en T? Conociendo el Tech Guide
Aprende más sobre Node.JS : Formación Tu ruta completa de carrera con Node.js
Si quieres sumergirte en esta tecnología pero no sabes por dónde empezar a estudiar, no dejes de acceder a la Formación Tu ruta completa de carrera con Node.js , allí descubrirás las rutas de estudio que fueron creadas por Alura para ayudarte a comprender mejor sobre esta tecnologia y además aprenderas sobre otros temas como:
- JavaScript: tipos, variables y funciones
- JavaScript: Arrays
- JavaScript: objetos
- JavaScript I: algoritmos de ordenación
- JavaScript: profundizando en los algoritmos de ordenación y búsqueda
- Node.js: creando tu primera biblioteca
- JavaScript: programación orientada a objetos
- Node.js: creando una API rest con Express y MongoDB
Manuales — Tu un profesional en T
Con los manuales de tecnología de Alura sobre Programación , Front-End y Datos , avanza en tus estudios y desarrolla tu carrera en T.
Podrás profundizar en los siguientes temas:
- Desarrollo web con HTML, CSS y JavaScript;
- modelado de bases de datos y SQL ;
- Python y Orientación a Objetos;
- Java y Orientación a Objetos ;
- C# y Orientación a Objetos;
Elige con el que más te identifiques y descárgalo completo en: Guia de Carrera — Tech Guide
Conclusión
JavaScript es un lenguaje muy popular y en los últimos años hemos visto la aparición de varios frameworks que lo utilizan. Con Node.js es posible utilizar todo el poder de JavaScript en el backend , además de chatbots, IoT, desarrollo de aplicaciones de escritorio e incluso IA.
Para los desarrolladores , independientemente del idioma , hoy en día ya es una ventaja tener conocimientos en Node.js. ¿Quieres profundizar aún más? Aquí te dejamos algunas referencias que te serán de gran ayuda:
- Artículo Cómo instalar Node.js en Windows, Linux y macOS;
- Sitio web Nodejs.org.
Este articulo fue traducido y adaptado por Daysibel Cotiz.
André Bessa Soy programador e instructor de programación usando C# y .NET. Licenciado en Sistemas de Información. Ya he programado usando Java, PHP, C#, PostgreSQL y MySQL, además de haber trabajado con soporte. Siempre buscando aprender más sobre tecnologías. Mis pasatiempos son los cómics y las series.