2008/06/22

Concluido el primer prototipo de eZine: Aplicación Web dinámica con JSF (JavaServer Faces)


Hola a todos de nuevo. He estado algo ausente por aquí últimamente dado que estoy afinando detalles sobre mi tesis de Licenciatura (Sistemas Computacionales), la cual trata sobre el "Desarrollo de aplicaciones Web dinámicas usando el framework JavaServer Faces (JSF) basado en la plataforma J2EE". El caso práctico de desarrollo es una revista electrónica. . .

Aunque los avances en desarrollo representan aún el 50%, este primer prototipo me ha brindado la oportunidad de trabajar con JSF, efectuar pruebas, en fin, evaluar en términos generales el desempeño y sobre todo la facilidad (de la cual se habla mucho) para el desarrollo de aplicaciones Web dinámicas. Comparto con uds. mis conclusiones:



Al cumplir con mi objetivo general, demuestro, por uso personal que el framework JSF cubre satisfactoriamente sus principales objetivos y cumple con las características, bondades y ventajas que ofrece, particularmente, sobre la renderización de componentes que es la problemática principal que da origen a esta tesis. Para atender los problemas de renderización y re-utilización de componentes, he probado al menos tres librerías de componentes y las cuales son completamente compatibles con la implementación 1.1 de JSF.

Las librerías que he empleado para la renderización de los componentes son las siguientes:
• MyFaces Tomahawk 1.1.7
• MyFaces Sandbox 1.1.7
• MyFaces Trinidad 1.0.7

Las tres librerías listadas anteriormente pertenecen al grupo Apache. Tomahawk y Sandbox se comportan eficientemente aunque, el renderizado parcial de página (PPR por sus siglas en inglés, Partial Page Rendering) no lo considero estable y los resultados no son los esperados, lo que impide y/o dificulta el uso de tecnología AJAX sobre la aplicación.

Por su parte, la librería Trinidad 1.0.7, también de Apache, ofrece un comportamiento más estable y permite usar tecnología AJAX de manera más fácil y obteniendo siempre los mismos resultados, esto, a coste de una configuración de la aplicación (en el archivo faces-config.xml y en el descriptor de despliegue de la aplicación) completamente distinta y en general, más compleja que la requerida por Tomahawk y/o Sandbox.

Existen numerosas librerías de componentes para JSF, ya sean libres (entre las cuales puedo mencionar: JSF-Comp de Apache , Java BluePrints AJAX Components , Jenia , entre otros) o comerciales (WebGalileo Faces Components , NetAdvantage for JSF 2008 , Simplica’s Ecruiser , por mencionar algunos) y muchas de ellas pueden ser usadas en conjunto para ofrecerle al desarrollador Web una mayor flexibilidad y un desarrollo rápido de aplicaciones.

He optado por emplear las librerías de componentes Tomahawk 1.1.7 y Sandbox 1.1.7 del grupo Apache debido a su facilidad de uso y configuración así como de mayor disponibilidad de sitios de ayuda, foros y documentación en comparación con algunas otras librerías de componentes para JSF. Además, que en el desarrollo de los componentes se encuentran involucrados los socios de Apache, como lo es Sun, Google, Oracle, IBM y otros, por lo que la calidad y reputación de los mismos es indudable.

JSF no sólo cumple satisfactoriamente los requisitos de renderización y re-utilización de componentes, si no que, además, se ajusta perfectamente al patrón MVC para el desarrollo de aplicaciones, permitiendo así una separación entre las capas de datos, la capa lógica y capa de presentación, lo que, en conjunto con el uso de librerías de componentes permite un desarrollo rápido de aplicaciones.

El concepto de reglas de navegación (navigation rules) y beans administrados (manager beans) definidos en XML sin lugar a dudas ofrece una mejor administración y configuración de la navegación dentro de la aplicación Web.

Un alcance extra, logrado durante el desarrollo del primer prototipo de la revista electrónica es la opción de internacionalización. La internacionalización permite mostrar la aplicación según el idioma del usuario, más específicamente, en el idioma configurado de su navegador Web, además de permitir cambiar, en tiempo de ejecución entre un idioma y otro (en el caso del prototipo desarrollado, cambiar entre español e inglés).

Indudablemente (desde mi perspectiva) JSF ha revolucionado la forma de desarrollar aplicaciones para la Web, y aunque numerosos críticos quienes digan que Struts tiene una mayor madurez, es destacable considerar que JSF apenas va en su versión 1.2 y ya a estos niveles ofrece un gran potencial.

Prueba de la rápida evolución de este framework es que, hasta hace un par de años, cuando aún estaba surgiendo a la luz, no existía algún un IDE que diera soporte (ya sea de manera nativa o por medio de plug-ins) al desarrollo de aplicaciones con JSF, situación que hoy en día es todo lo contrario puesto que existen numerosos entornos de desarrollo con soporte para JSF, entre los cuales se encuentran: Eclipse, NetBeans, Exadel Studio Pro, Oracle JDeveloper.

El lector se preguntará: ¿y cuál es el mayor desafío en el uso de JSF para desarrollar aplicaciones Web dinámicas? Como todas las herramientas y lenguajes de programación el mayor desafío es, indudablemente la curva de aprendizaje requerida. JSF requiere el conocimiento, entendimiento y empleo del patrón MVC para desarrollar aplicaciones, si el programador Web no tiene experiencia con el modelo MVC, éste será su primer gran obstáculo.

También, como muchas otras cosas en el mundo de desarrollo de aplicaciones, la configuración del entorno (servidor de aplicaciones y configuración de archivos XML, en el caso de JSF, faces-config y el descriptor de despliegue) es uno más de los “problemas” que el programador Web debe de resolver...



Bueno, por el momento es todo, actualmente estoy trabajando con la segunda versión de la aplicación, en la cual buscaré emplear una librería de componentes estable y de fácil configuración para trabajar AJAX bajo JSF. La segunda versión también incluirá pruebas unitarias. Espero tener la segunda versión en un mes o menos.

Espero sus comentarios al respecto, muchas gracias.