Una breve historia de Nodejs

Ismael Celis
Sueños graficos
Published in
4 min readMay 18, 2019

--

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

Photo by Jeremy Thomas on Unsplash

- 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 sacó 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 V8, que también es en parte el motor de Nodejs.

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, buscando una manera de crear servidores web que considerara las necesidades de la web actual, es decir una enorme cantidad de usuarios y todos accediendo en tiempo real, 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.

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 aquí:

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 8 líneas de código, por ejemplo:

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 asíncrono.

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.

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 nodeschool.io.

--

--