A blog about data, information and IT, by Mario Alberich

Apr 04
2011

El ecosistema javascript (Google chrome, V8 y nodejs)

Durante el tiempo en que Rhino ha estado en el escenario, el concepto de javascript en general se asociaba a bugs, inmadurez en las herramientas de desarrollo y testeo, y sobretodo lentitud.  En especial por lo último habría que hablar de Internet Explorer 6 (del que ahora, quizá un poco tarde, piden disculpas).


Vale la pena decir que esta lentitud no era tanto debida al propio javascript sino al DOM (la estructura que se genera a partir del HTML para que el navegador muestre las páginas web como se espera).  Pero para un usuario final eso da lo mismo (y con razón): si hay javascript y va lento, entonces javascript es lento.

Pero entonces llegó Chrome, su motor de Javascript con nombre de coches de carreras, y una visión clara: velocidad.  Su funcionamiento interno lo posicionaba para todo lo que se podíamos soñar para la web, pero que no podíamos realizar.  Cualquier prueba de rendimiento puede dar fe de su potencia.  Complementando V8 con el motor de renderizado de Webkit (el mismo de Safari), el resultado es un caballo ganador que ha entrado fuerte en la web (y se ha notado en las estadísticas).

Quizá conociendo el concepto de Javascript en el servidor derivado de Rhino, alguien decidió seguir sus pasos: si V8 es capaz de ejecutar JS a velocidades cercanas al C++, por qué no desarrollar en javascript para el cliente (navegador)  y también en el servidor?

Hay varias ventajas:

  • No hay que hacer un cambio de chip en un mismo proyecto en la parte cliente y servidor.  No hay lenguaje de cliente y lenguaje de servidor.
  • El intercambio de datos para aplicaciones Ajax tiene un formato ideal: JSON.  Un formato nativo del lenguaje es lo mejor que puede pasar para simplificar el intercambio.
  • Su ligereza y su simplicidad en el desarrollo (sobretodo en comparación con Java, pero también con otros de Scripting como PHP, Ruby, Python).
  • Para todos los desarrolladores de javascript en la web se abre un campo inmenso en el cual expandirse.


Y así fue que apareció nodejs.   No se trata de utilizar javascript sin más: incorpora los eventos como parte interna del lenguaje (y aparentemente evitando el bloqueo de I/O), permitiendo la devolución de respuestas de forma asíncrona y sin necesidad de trabajar con hilos de ejecución como por ejemplo lo hace java.

Todo esto sin considerar que puede ejecutar en el servidor lo último del HTML5 (web workers, web sockets, etc) sin las restricciones de seguridad de un navegador.

De ahí que estén surgiendo ideas para la computación distribuída utilizando V8 en el servidor (o conectando varios usuarios a una misma página, por ejemplo), o crawlers (se puede integrar jQuery y sus selectores en el javascript de nodejs).  Pero esto ya es un tema aparte.

El cambio de reglas que ha introducido nodejs ha provocado un crecimiento muy rápido de un ecosistema a su alrededor.  En poco tiempo ya tiene varios frameworks de desarrollo, motores de plantillas, e incluso un gestor de paquetes para facilitar la instalación de componentes en el servidor.

En la web el desarrollo se asienta por dos filosofías opuestas que se combinan en menor o mayor grado: los que buscan soluciones estables, verificadas, seguras (certificadas) sobre las que canalizar un negocio preexistente; y por otra los que quieren hacer algo sin preocuparse demasiado por aplicar técnicas formales de análisis y desarrollo de aplicaciones, desarrollando silver bullets y siguiendo el criterio del release early release often.

Pero sucedía una paradoja: mientras que los primeros han utilizado Java como tecnología principal y han creado un gran paquete de herramientas, los segundos trabajan con variedad de lenguajes, herramientas de soporte más simples (y quizá menos productivas).

Para los segundos, Javascript en el servidor me parece una apuesta arriesgada, pero con muy buenas perspectivas.  Eso sí, los nuevos conceptos obligan a practicar unas horas (depende del nivel de cada uno) antes de ponerse a fondo.

Si te ha picado la curiosidad, deja de leer y pruébalo ya ;-)

Tags

gestión documental 10     Recuperación información 11     Linux 7     Usabilidad 5     open source 3     Tagging 12     lógica borrosa 2     fuentes de información 12     Google 6     off-topic 6     spam 2     grafos 6     Web social 11     modelización 12     Productividad 11     buscadores 2     utilidades 17     Profesionales 9     SEO 5     estándares 3     veracidad 3     relevancia 2     lingüística 2     PLN 2     lenguajes documentales 2     apis-mashups 3     reseñas 7     Flash 7     Gráficos estadísticos 13     Publicidad 3     Innovación 5     muestreo estadístico 9     PHP 14     internet 2     testeo 12     desarrollo 3     visualizacion 36     javascript 16     datos abiertos 9     elecciones 2     simulación 5     html5 7     phing 9     ssh 2     seguridad 3     indicadores 2     demografía 3     media 2     algoritmos 7     shell 4     mysql 2     backup 2     big data 6     twitter 2     d3js 11     revealjs 2     metodología 6     data-journalism 6     smartcities 2     NYT 2     privacidad 3     benchmarking 4     recopilaciones 21     magento 5     formacion 2     github 2     HHVM 3     psicología 2     angularjs 3     grep 2     nodejs 5     promises 2     mapreduce 3     crossfilter 2     exploración de datos 2     machine learning 2    

© 2007 and beyond Mario Alberich, licensed under CC-BY-SA unless stated otherwise.