Todo lo que necesitas saber de Nodejs

Nodejs es un increíble herramienta que nos permite usar javascript más allá del navegador.

– A qué te refieres con eso?

Según su web oficial Nodejs es:

“es un entorno de ejecución para JavaScript construido con el motor de JavaScript V8 de Chrome.”

Seguro te preguntaras algo como… Y que quiere decir esto?

Bueno veras, en el pasado javascript no era ni tan genial, ni tan abierto como lo es ahora. Javascript en su concepción fue desarrollado originalmente por Brendan Eich para netScape y estaba estrictamente ligado a los navegadores(browsers).

No fue sino hasta 2009 después de que Google dio al mundo su navegador Google Chrome que liberó a javascript de su prisión web gracias a su motor de JavaScript V8.

– Y que es el motor V8? (suena a bebida energética)

El motor es el software que interpreta el código JavaScript y que a su vez, ejecuta un script acorde a las instrucciones dadas. Todos los navegadores web tienen un motor de JavaScript, Safari usa JavaScriptCore, FireFox usa SpiderMonkey, Microsoft Edge usa Chakra y en este caso Google Chrome con V8, que también es en parte el motor de Nodejs.

Recurso de Rainer hahnekamp

El lanzamiento del V8 marcó un momento crucial en la historia de los motores. V8 reemplazó la relativamente lenta interpretación de JavaScript del navegador.

La razón detrás de esta mejora tan grande radica principalmente en la combinación de intérprete y compilador. Hoy en día, los cuatro motores utilizan esta técnica. El intérprete ejecuta el código fuente casi de inmediato. El compilador traduce el código fuente en código máquina que el sistema del usuario ejecuta de manera directa.

Tal vez  te preguntes…

–  A fin de cuentas tiene todo esto que ver con Nodejs?

Bueno, la relación es que un día Ryah Dahll, el creador de Nodejs, buscando una manera de crear servidores web que consideren las necesidades de la web actual, es decir una enorme cantidad de usuarios y todos accediendo en tiempo ral, encontró el motor V8 de google y lo hizo funcionar fuera del navegador, es decir en el sistema operativo, y desde este momento, nace Nodejs. y El cual lo presenta en la JsConf, una conferencia de Javascript.

Nodejs es especial porque según su web oficial:

“utiliza un modelo de I/O dirigida a eventos no bloqueantes que hace que sea ligero y eficiente, ideal para aplicaciones en tiempo real con intenso intercambio de datos a través de dispositivos distribuidos”

Como verás no es un concepto nada simple, más aún si estás empezando, así que empezaré detallando que es Nodejs:

Nodejs Es un entorno de ejecución de javascript que está construido con el motor v8 de google chrome que es un modelo de operaciones sin bloqueo y orientado a eventos.

bueno esto tampoco ayuda mucho, pero permíteme explicarte a partir de este enunciado.

Nodejs se basa en el motor V8 que Google creó para interpretar javascript en Chrome,  Aprovechando este motor Nodejs, compila el código JavaScript a lenguaje nativo, además de tener una gran velocidad de ejecución, la simplicidad de la interfaz que Nodejs nos provee es tan increíble, que iniciar un servidor nos lleva menos de 20 líneas de código, por ejemplo:

// Se carga el módulo de HTTP
var http = require("http");

// Creación del servidor HTTP, y se define la escucha
// de peticiones en el puerto 8000
http.createServer(function(request, response) {

   // Se define la cabecera HTTP, con el estado HTTP (OK: 200) y el tipo de contenido
   response.writeHead(200, {'Content-Type': 'text/plain'});
   
   // Se responde, en el cuerpo de la respuesta con el mensaje "Hello World"
   response.end('Hola Mundo!\n');
}).listen(8000);

// Se escribe la URL para el acceso al servidor
console.log('Servidor en la url http://127.0.0.1:8000/');

La particularidad de Nodejs reside en una pieza denominada EventLoop.

Veras Nodejs surge como respuesta a una problemática con la programación secuencial tradicional. En lenguajes como Java, C++ o C#, que se basan en hilos de ejecución, hay un máximo teórico que viene dado por la memoria que consume cada hilo de ejecución en la máquina en la que se despliega.

Nodejs en cambio es single thread(o de un solo hilo), este hilo de ejecución única se denomina EventLoop y su función es ejecutar código Javascript el cual es por naturaleza .

awdRecurso de Paradigma digital

Ante la llegada de operaciones de entrada/salida(Input/Output) delega la ejecución de las mismas en subsistemas específicamente preparados para que se procesen en segundo plano.

De esta forma no se bloquea el hilo de ejecución (non-blocking), mientras el EventLoop apunta la función que se ejecutará una vez que ese procesamiento offline termine (callback).

Una forma sencilla de entender qué es el EventLoop es imaginar que el sistema es como un restaurante, en el que tenemos un único trabajador: un camarero. Nuestro camarero se encarga de sentar a la gente en la mesa y tomarles la orden de comida (tarea asíncrona), si el camarero tuviese que preparar la comida estaríamos bloqueándole para que pudiese atender a la siguiente mesa.

En lugar de eso, el camarero manda la orden a la cocina (threadPool), en la que uno de los cocineros la prepara. Cuando la comida esté lista, llamará al camarero para que la lleve a la mesa, nuestro camarero tendrá apuntada la correspondencia entra la comida y el número de mesa para saber el sitio al que tiene entregar la comida (callback).

Espero que esta introducción haya sido suficiente para causar interés en aprender más sobre Nodejs. Para obtener más información y ejemplos de aplicaciones en esta plataforma pueden visitar la documentación oficial de Nodejs.