06 diciembre, 2008

¿En tu servidor o en mi cliente?

John Resig ha estado echando un vistazo a Pyjamas, una librería que traduce código Python a Javascript para que pueda ser ejecutado en el navegador, de forma que un programador Python puede escribir aplicaciones web sin salirse de su lenguaje. Esta abstracción, que puede tener ciertas ventajas en apariencia, conlleva que el programador pierde la posibilidad de optimizar y depurar su código en el cliente, además de ignorar las posibilidades que Javascript ofrece para optimizar la experiencia del visitante en el navegador. Efectivamente, tanto Resig como otros discrepan sobre lo adecuado de estas soluciones.

Esto mismo es lo que hace GWT (Google Web Toolkit) con Java, Objective-J con Objective-C o, tal y como publica hoy Andrés Nieto, Harmony con PHP.

Sin duda, las mejoras en productividad de centrarse en uno de los lados (el servidor) e ignorar el otro, pueden ser importantes, pero todo depende del resultado que se quiera obtener, y perfeccionar la interfície que el usuario va a encontrarse debe formar parte de cualquier proyecto profesional.

Como todo código generado automáticamente, el generado por estas herramientas será relativamente ineficiente, aunque cuentan con la ventaja de las mejoras de rendimiento de los nuevos motores Javascript (V8, TraceMonkey o Presto).

En cualquier caso, yo optaría por el ideal para una aplicación web: que el grueso del código se ejecute en el navegador (Javascript) y se deje el resto (almacenar los datos y cuidar quién y cómo se accede a estos) al servidor usando métodos sencillos de comunicación como son JSON (datos), HTTP (canal) y REST o Comet (método). Y en todo caso, le veo mucho más sentido a llevar Javascript al lado del servidor (Helma, Jaxer, MooServer, etc.) para escribir esas pocas funciones que extender los otros lenguajes al cliente usando un sistema tan poco natural como lo son las abstracciones. Addendum: Más reacciones sobre este tema en Ajaxian.

0 comentarios:

Publicar un comentario



Últimos links en indiza.com