Node.js es una plataforma basada en el motor de JavaScript V8 de Google que es utilizado en el navegador Chrome. Está pensada para facilitar el desarrollo de aplicaciones basadas en red, rápidas y fiables. Node.js utiliza un modelo I/O (entrada/salida) orientado a eventos y basado en el ‘no-bloqueo’, que lo hace ligero y eficiente, ideal para aplicaciones en tiempo real que hagan uso de datos intensivos y que se ejecuten a través de dispositivos distribuidos.

Vamos a ver algunas características y conceptos de esta interesante plataforma.

1. ¿Por qué JavaScript?

JavaScript es un gran lenguaje para la programación asíncrona, ya que fue diseñado para ser usado en programación orientada a eventos en lugar de otro lenguajes orientados a objetos, como por ejemplo, Java. Es especialmente atractivo para realizar aplicaciones ‘no bloqueantes’ y de alta concurrencia y disponibilidad.

Al contrario que la mayoría del código JavaScript, en Node.js este código no se ejecuta en un navegador, sino en el lado del servidor. Node.js implementa algunas especificaciones de CommonJS. También incluye un entorno REPL para depuración interactiva.

Una aplicación para Node se programa sobre un solo hilo. Si en la aplicación existe una operación bloqueante (I/O), Node.js crea entonces otro hilo en segundo plano, pero no lo hace por cada conexión, como haría un servidor web como por ejemplo Apache o Nginx. En teoría, Node.js puede mantener tantas conexiones como número máximo de archivos descriptores (sockets) soportados por el sistema (el número de ‘MaxClients’ por defecto, es 256). En un sistema UNIX este límite puede rondar las 65.000 conexiones. Sin embargo, la cifra dependerá realmente de varios factores, como la cantidad de información que una aplicación sirva a los clientes. Una aplicación ‘tipo’ podría mantener entre 20.000-25.000 clientes a la vez sin haber apenas retardo en las respuestas.

Aquí van un par de pequeños ejemplos de aplicaciones con su código correspondiente:

Ejemplo Codigo Node

2. Plataforma madura y estable

Node.js fue creado por Ryan Dahl en 2009 y su evolución está apadrinada por la empresa Joyent. La plataforma está programada en C++ y JavaScript.

Quizás en sus primeras versiones encontrábamos cierta inestabilidad. En sus comienzos era frecuente encontrar problemas con módulos de terceros, pero actualmente estos problemas están ampliamente superados y la plataforma se encuentra en su versión 0.10.21. La versión 1.0 no debería tardar mucho en ver la luz.

3. Software libre

Node.js está liberado bajo la licencia MIT, y otros paquetes de licencias flexibles para componentes de software libre. Se puede descargar en forma de código fuente o instalador para Windows o Mac.

Su desarrollo por parte de la comunidad es muy activo. El código fuente está albergado en GitHub y cualquiera puede hacer un fork (bifurcación de código) desde allí.

Si te decides a probarlo, deberías tener en cuenta las instrucciones de instalación del entorno.

4. Ventajas

  • Rapidez. Tanto en la ejecución, como en el desarrolo o la ejecución de pruebas unitarias.
  • Mejora en la experiencia de usuario. Su uso proporciona una mejor experiencia en UX.
  • Ahorro en infraestructura. Especialmente en el número de servidores necesarios para las aplicaciones. Por ejemplo, cuando LinkedIn migró todo su backend desde Ruby on Rails hacia Node.js redució desde 30 hasta 3 su número de servidores.
  • Conjunción entre BackEnd y FrontEnd. Los equipos de BackEnd y FrontEnd móvil pueden ser combinados en un conjunto único.
  • Flexibilidad.
  • Fácil de usar. Sobre todo si tienes experiencia con JavaScript.

5. Soporta multitud de protocolos y módulos

Node.js es una plataforma bastante flexible en cuanto a los protocolos que puede manejar. Soporta los protocolos TCP, DNS y HTTP.

Hablando de módulos, Node.js pone a nuestra disposición gran cantidad de módulos propios y de terceros. Npm es la herramienta fundamental para el manejo de dependencias o módulos en Node.js. Su uso no es demasiado complicado, pero existen tutoriales que te ayudarán en su manejo.

Una gran virtud de Node.js es que es posible elegir bibliotecas de ‘manera arbitraria’ y combinarlas en el mismo programa sin tener que preocuparte demasiado por posibles incompatibilidades entre ellas.

6. Usos recomendados

Node.js está especialmente indicado para desarrollar aplicaciones de los siguientes tipos:

  • Aplicaciones web.
  • Aplicaciones para línea de comandos y scripts para administración de sistemas.
  • Aplicaciones de red.
  • Juegos online.
  • Gestores de correo online: de esta manera teniendo el navegador abierto podríamos ver notificaciones en tiempo real de nuevos correos recibidos.
  • Herramientas de colaboración.
  • Chats.
  • Redes sociales.
  • Herramientas de traducción en tiempo real.
  • Confección de APIs: APIs en lado del servidor para proporcionar rendimiento y escalabilidad. Debido a que permite ejecutar gran cantidad de peticiones.
  • Aplicaciones web que necesiten una conexión persistente con el navegador del cliente. Mediante una serie de técnicas llamadas Comet, puedes hacer una aplicación que envíe datos al usuario en tiempo real; es decir, que el navegador mantenga la conexión siempre abierta y reciba continuamente nuevos datos.

7. ¿Posibles inconvenientes en su uso?

Por la propia naturaleza de Node.js, en la que se han de realizar las peticiones de manera asíncrona, podría haber ciertas ocasiones en las que no interesaría hacerlo de esta manera. Si se quiere trabajar de manera síncrona, entonces estaríamos ‘obligados’ a instalar algunos módulos que de momento están poco maduros.

Debido a su arquitectura en la que se usa un sólo un hilo, sólo puede usar una CPU. Un método para usar múltiples núcleos sería iniciar múltiples instancias de Node.js en el servidor y poner un balanceador de carga delante de ellos.

8. Expressjs como framework

Expressjs no es sólamente un framework de gran calidad pare el uso de Node.js. Estamos ante el que es para muchos uno de los ‘marcos de trabajo’ más flexibles y fáciles de utilizar dentro de los aparecidos en los últimos tiempos.

Las aplicaciones desarrolladas con Expressjs son de una calidad indudable. Y para muestra un botón: Klout, Storify, Prismatic o la nueva versión de MySpace.

9. Comunidad

Node.js tiene una comunidad muy numerosa y activa. Desde su web tienes acceso a la documentación y API, tutoriales, foros o un útil blog.

10. Recursos

Una buena manera de familiarizarte con Node.js aparte de utilizar los recursos que nos proporciona Internet es el libro ‘Node.js in Action’ de la conocida editorial técnica Manning.

Uno de los puntos fuertes de Node.js es la disponibilidad de una gran cantidad de librerías y otros recursos interesantes. Estos son sólo algunos ejemplos:

11. Cada vez más demandado

No siempre es así, pero la importancia de un entorno, plataforma, framework o lenguaje de programación, se suele medir en la demanda profesional que suscita. Con respecto a Node.js, cada vez hay una mayor demanda de profesionales con experiencia en esta plataforma. Sólamente hay que darse una vuelta por los sitios más conocidos de reclutamiento en IT para darse cuenta. Desde la propia web de Node.js manejan una bolsa de trabajo específica.

12. Pero, ¿quién lo utiliza?

Como hemos vista en el punto anterior, su demanda está aumentando en las empresas. Pero, ¿quién lo utiliza? ..pues desde startups a empresas consolidadas como Yahoo, Microsoft, LinkedIn o eBay. Puedes ver una lista de las principales empresas que utilizan Node.js desde su web.

Por ejemplo, LinkedIn utiliza Node.js en combinación con HTML5 en su aplicación móvil para dotarla del máximo de rapidez posible.



Node.js forma ya un gran ecosistema, con una gran comunidad a su alrededor. Si tuviera que recomendar y apostar por una plataforma de programación versátil, de futuro y en la que emplear tiempo, Node.js sería sin duda una de las elegidas.

Probablemente Node.js acabe teniendo cierta importancia (de hecho, ya la tiene) en el desarrollo de aplicaciones que manejan grandes cantidades de accesos concurrentes a una gran cantidad de datos.

Que lejos quedan ya ‘aquellos maravillosos años’ de los Sockets y los Threads (‘hebras’ cómo dirían algunos) en los comienzos de Java. Precioso curso aquel que hice en Sun Microsystems en Barcelona. Pero eso fue hace ya muuuucho tiempo..



Imagen destacada confeccionada con una imagen del logo de Node.js y tratada con Meme Generator.


Unadocenade también está en Google Currents. Suscríbete.
Los post de Unadocenade se pueden republicar siempre que respetes nuestras condiciones de republicación.

Sobre Óscar Ray


Óscar Ray es consultor tecnológico especializado en integración de sistemas de información y desarrollo de software. Ha formado parte de equipos internacionales en proyectos para Deutsche Bank en Frankfurt, EADS en Madrid, BBVA en Bilbao, el Departamento de Tecnologías de la Información del Ayuntamiento de Vitoria-Gasteiz, EJIE (Sociedad Informática del Gobierno Vasco) u Osakidetza. Organizador y fundador de TEDx AlmendraMedieval, el primer evento con licencia oficial TEDx que se celebra en Vitoria-Gasteiz. Organiza e-Innobar, un evento socio-tecnológico mensual sobre innovación, TICs, redes sociales e internet. Colabora con Cadena SER en el programa 'Hoy por Hoy' en una sección sobre nuevas tecnologías. Apasionado por la I+D+i y su aplicación a las Tecnologías de la Información, aplica su formación científica y experiencia en el sector tecnológico en su faceta dedicada a la divulgación y comunicación en materia de innovación.