Buscar
Social
Ofertas laborales ES
« Mañana y pasado se celebra el Sun Open Communities Forum | Main | OpenXava 3.1.3: Productividad y flexibilidad para Java EE »
miércoles
jun172009

Aplicaciones basadas en XUL. ¿Por qué no?

Ahora mismo estoy trabajando en dar soporte XUL a ItsNat.

XUL para el que no lo conozca es un sistema de componentes basado en markup que ha estado presente en el mundo web desde el renacimiento del Mozilla 1.0, en torno a 10 años, actualmente está presente en cualquier navegador Gecko y por supuesto en el FireFox. En XUL está desarrollado el "chrome" del propio FireFox, es decir el sistema de menues, botones, barras y diálogos está hecho con XUL. Por hacer una analogía XUL viene a ser una especie de sistema de componentes basados en tags como en JSF o ZK (de hecho ZK está inspirado en XUL), con la diferencia de que dichos tags son directamente entendidos por el navegador sin necesidad de traslación a HTML, por lo tanto a través de JavaScript podemos manipular dicho DOM XUL en el cliente y con CSS modificar la visualización por defecto, además XUL permite embeber elementos HTML sin problema. Un par de ejemplos online puedes encontrarlos aquí y aquí.

Soportar XUL en ItsNat es una tarea sencilla pues en el concepto "el navegador es el servidor" encaja muy bien la gestión de cualquier namespace que esté soportado por el navegador, de hecho ItsNat actualmente ya soporta SVG puro. Realmente XUL está ya soportado.

El soporte de XUL permitirá desarrollar aplicaciones cliente/servidor similares a las aplicaciones de desktop basadas en componentes XUL usando AJAX y siguiendo la filosofía Single Page Interface. Los componentes "free" de ItsNat se adaptan sin problema al markup de XUL como ya se hace en SVG, el problema surge con componentes por defecto interactivos tal y como checkbox o listbox, similares a los correspondientes en HTML (input checkbox y select), en estos elementos se puede usar las técnicas de eventos y transporte de datos de bajo nivel de ItsNat pero sería deseable crear componentes específicos que simplificaran su gestión desde el servidor usando data models, selection listeners etc.

XUL no es nuevo, como decía antes XUL ha estado presente desde la primera versión del motor Gecko en torno al año 2000. Buscando tutoriales, ejemplos de código XUL y aplicaciones basadas en XUL el resultado ha sido desolador, los resultados son escasos y mucha documentación y experiencias tienen bastantes años detrás. Esto es importante a la hora de dedicar recursos a una tecnología cuyo uso principal es el look and feel, menues y diálogos del propio FireFox.

Esto me ha llevado a plantearme ¿por qué apenas se usa XUL?, yo mismo he encontrado varias posibles respuestas:

1) Es una tecnología que sólo funciona en una sola familia de navegadores (Gecko).  

2) Es una tecnología web que aunque funciona también en modo remoto (código XUL cargado desde un servidor web) su propósito fundamental es aportar una experiencia de usuario similar a las aplicaciones de desktop. XUL no tiene un tag form aunque se podría usar el del HTML.

3) Los frameworks web servidor han ignorado totalmente el soporte de XUL. Un soporte básico se puede conseguir en los frameworks tipo "action" con libertad de diseño del template, pero desde luego el soporte es nulo con AJAX.

El apartado 1 a día de hoy no tiene una solución clara, o mejor dicho sí la tendría en ItsNat pero requería montones de trabajo, se trataría en navegadores no Gecko de generar HTML y JavaScript (para simular el comportamiento visual por defecto de los componentes XUL), y a través de la correspondencia de árboles DOM entre cliente y servidor, tratar de simular por ejemplo que un elemento XUL ha sido pulsado en el cliente cuando realmente ha sido un elemento HTML para dirigir dicho evento al elemento correcto en el servidor.

El apartado 2 que podría ser un problema antiguamente, hoy es una ventaja pues la tendencia actual es la de emular al desktop visualmente y a evitar la recarga de la página lo cual se consigue via AJAX.

El apartado 3 puede cambiar, ItsNat sería quizás el primer framework céntrico en el servidor que procesara AJAX de XUL.

En resumen, el apartado 1 es el principal problema no resuelto, una aplicación XUL sólo funciona a día de hoy en navegadores Gecko, lo que me hace pensar es que en tiempos en donde Flex y AIR, soluciones claramente propietarias, apuestan por conquistar el mundo de las aplicaciones (embebidas en HTML en el caso de Flex y en el desktop en el caso de AIR), ¿por qué XUL no es cada vez más una opción de primer orden?.

Flex se ejecuta a través de un plugin en el navegador, ¿qué impide a un Active X embeber FireFox en el Internet Explorer? esto no es nuevo, existe dicho Active X pero abandonado.

En el caso del escritorio el proyecto Prism pretende introducir aplicaciones basadas en FireFox en el escritorio "sin navegador", un claro competidor de AIR, dichas aplicaciones obviamente también podrían ser XUL.

¿XUL puede ser una nueva opción a la hora de desarrollar aplicaciones web?

¿Podría darse un renacimiento de XUL como un futuro estándar de componentes web que adoptaran otros navegadores?

 

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.
Comentarios deshabilitados
Comentarios deshabilitados en esta noticia.