Qué es Node.js?
Node.js es simplemente (o no tan simple) un entorno de ejecución y una librería de javascript. Permite ejecutar aplicaciones javascript fuera del navegador. Ello implica por ejemplo que podamos tener y crear
nuestro propio servidor HTTP como lo es Apache.
Node.js fue creado en 2009 pero ha crecido espectacularmente, teniendo a día de este artículo (29.jun.2011), 46.700.000 millones de resultados en Google.
Desde que javascript es javascript, siempre se ha tenido que ejecutar mediante un navegador (IE, Firefox, Opera, Chrome o Safari). Ya era hora que diera el salto al lado del servidor como tantos otros lenguajes (Python, Perl...).
Node.js está basado en
V8 Javascript, el motor Open Source de Javascript de Google, y está estructurado en numerosas funciones y módulos.
La diferencia más sustancial, no sé si ventajosa o desventajosa, es que toda la ejecución se realiza mediante un solo y
único hilo (thread), es decir, su ejecución es concurrente, a diferencia, por ejemplo, del servidor web Apache que es multithread. Los detractores del multihilo nos dicen que esta forma de intepretar las peticiones (cada una con su hilo) no funciona bien con conexiones múltiples y duraderas ya que perjudica el rendimiento. Teniendo un único hilo y revisándolo continuamente mediante un
'event loop' podemos tener millones de conexiones concurrentes (me parece exagerado, pero es lo que he leído).
Ya que un servidor web recibe y sirve peticiones HTTP, vamos a ver un ejemplo de como crearlo con Node.js:
(archivo server.js)
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/html"});
response.write("Hola Mundo");
response.end();
}).listen(8888);
Para ejecutarlo, tan solo:
node server.js
Con esto tenemos un sencillo y básico servidor web que escuchará las peticiones en el puerto 8888.
Para probarlo solamente debemos abrir nuestro navegador y darle la URL
http://localhost:8888
Por el momento
Node.js está disponible para servidores Linux, pero recientemente se ha comunicado que Microsoft va a portarlo a sus versiones Windows Azure (en la nube) y otros servidores Windows como el 2003 (para más referencia mirar en los enlaces: 'Portando a Windows').
Enlaces:
Página oficial de
Node.js -
http://nodejs.org/
V8 Javascript -
http://code.google.com/p/v8/
Portando a Windows -
http://blog.nodejs.org/2011/06/23/porting-node-to-windows-with-microsoft%E2%80%99s-help/
Buena introducción a Node.js para iniciados -
http://www.nodebeginner.org/index-es.html
Artículo -
http://net.tutsplus.com/tutorials/javascript-ajax/learning-serverside-javascript-with-node-js/