De donde viene node.js

Historia de ECMAScipt

En febrero de 1996 Rob Pilatus, ex miembro caído en las drogas de Milli Vanilly era golpeado con un bate de baseball mientras intentaba robar un coche en Hollywood. Mientras el informático con aspecto de caracono Marc Andreessen que había programado Mosaic, el primer navegador Web propiamente dicho, y el científico y empresario James H. Clark estaban a punto de lanzar el navegador Netscape 2.0, que meses después (versión 2.0B3) soportaría JavaScript, lenguaje dicen creado en 10 días por Brendan Eich, en páginas Web. Querían añadir automatización y vida a las páginas por entonces estáticas pero crearon el embrión de algo que ninguno imaginaba que seria tan grande.

A los pocos meses solicitaron la estandarización del lenguaje a la entidad ECMA, que al verano siguiente se publicó como el estándar ECMA-262. De esta manera ECMA es el estándar que define el lenguaje, y Javascript su implementación hasta hoy. El estándar del lenguaje es uno (ECMAScript), pero las implementaciones tantas como quiera hacer cada fabricante. Por ejemplo, actualmente la última versión de ECMAScript es la 6.0 pero cada navegador implementa elementos de la versión 6, 5 o anteriores (y Chrome es quien está mas avanzado)

Motores Javascript: Trident, Gekko, Webkit

Cuando Microsoft se quiso dar cuenta todos sus ordenadores con Windows navegaban con Netscape (recomiendo ver algún artículo sobre “La Guerra de los Navegadores“), que en cada versión ofrecía más funcionalidades y más potencia. Microsoft usó todo su músculo financiero y de dominación del mercado para recuperar las posiciones perdidas a partir de ese momento.

Ahora el navegador era lo que se veía, pero el motor era lo que le daba potencia al mismo renderizando (dibujado) las páginas y soportando más características de JavaScript. Netscape llamó a su motor Gekko. No estaba pensado para crecer de esa manera, el código era complicado y aunque seguro era lento y tendía a “comer” memoria.

Microsoft contraatacó en 1997 con Internet Explorer 4 y llamó a su motor Trident. Aprovechó que la mayoría de ordenadores usaban Windows para que en sus navegadores utilizando Trident pudieran invocar a servicios nativos del Sistema Operativo con llamadas a COM con ActiveX (guerra sucia). Esto lo convirtió en inseguro y una manera fácil de que con los sucesivos agujeros de seguridad fuese posible infectar un ordenadores desde una página Web maliciosa. Ron Pilatus murió de sobredosis en 1998 sin acabar de ver el final de la guerra de los navegadores.

Con un esfuerzo sobrehumano por parte de Microsoft (y esquivando juicios antimonopolio) consiguió desbancar a Netscape que empezó a perder fuelle y quedar como un navegador para antisitemas como yo hasta morir con sus versiones 4.08 a mediados de los 2000. Antes, se liberó el código fuente de Gekko para que toda la comunidad de software libre pudiese colaborar y nació el navegador Firefox basado en el motor, junto con muchos otros. Pero la batalla estaba casi perdida: un usuario normal no se preocupa de instalar otro navegador si no le ofrece mucho más si igualmente no puede desinstalar Internet Explorer e igualmente lo ha de utilizar para tareas habituales actualizar Windows.

Otro actor en la escena que estaba escondido tras su apacible parque de ordenadores Apple fué Opera, que llamó a su motor WebKit (a su vez basado en el motor KHTML de los navegadores de la época para Linux). En 2005 también liberaron el código del motor.

Irrupción de Google: Engine V8

Corría el año 2008 y la guerra estaba ganada por Microsoft… por el momento. Google se habia convertido en el buscador Web de facto para casi todos.

Cualquier usuario usuario de Internet lo primero que hacia era acudir a Google para encontrar lo que buscaba. Pero Google pensó que ademas del contenido… ¿por que no ofrecer el navegador también? Lanzó el navegador Google Chrome con un motor creado a partir de WebKit. De hecho lo que se buscaba era conseguir el motor más potente para ver la Web más rápido y con más funcionalidades. Ahora JavaScript ya no sera un script que venia con el HTML e interpretaba el navegador para hacer funcionar las páginas. Ahora se compilaba al cargarlo y al interactuar con una página Web se ejecutaba, tan rápido como un programa escrito en lenguaje C, compilado y ejecutado en tu navegador. Era tan rápido que lo llamaron V8, por los motores de 8 cilindros en V de los coches de carreras.

La potencia era tal que Firefox parecía lento y gordo, y Internet Explorer ya en su versión 7 una caricatura de lo que es un navegador Web. El navegador Opera se rindió y empezó a utilizar el motor V8.

El paso siguiente: node.js

Durante años ECMAScript y su implementación en navegadores fue evolucionado. La manera de programar con este lenguaje era muy diferente, orientada a Callbacks (solicitar algo e indicar que función debe recoger el resultado en lugar de quedarse esperando), lo que se conoce como “non-blocking”, y para gente como yo acostumbrada a programar a la “vieja usanza” de clases, herencias e interficies cuesta un poco. Se soportaron objetos y como transmitirlos (JSON) y se fue enriqueciendo el lenguaje aunque seguía siendo liviano, al contrario de .Net o Java donde has de conocer multitud de frameworks y paradigmas para empezar a desarrollar un programa.

El siguiente paso lógico lo vio Ryan Dahl, un desarrollador americano afincado en Alemania: “Si tengo una manera de programar innovadora (JavaScript), y un motor que lo hace correr muy rápido, ¿Por qué limitarse solo a ejecutarlo en un navegador?” Fue en ese momento cuando se creó node.js. Node.js utiliza el motor V8 y permite ejecutar JavaScript no solo en un navegador, sino en un servidor, o en tu PC, o en tu móvil o en cualquier sitio donde se consiga portar un motor V8.

Y así se inicio una era en la que -de verdad- se podia ejecutar por ejemplo el mismo código en una página en el navegador o en el servidor que construye la página. Pero eso lo dejo para otro post.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.