JSF (Una historia de amor y odio sin final todavía)

Conocí a JSF en medio de una relación. Llevaba un par de años con Struts. Al principio me había parecido (Struts) engorroso y pesado (venía de un largo affair con PHP), pero una vez conocí a sus parientes Validator y Tiles, me ganó. Me acabó convenciendo la potencia de utilizar ficheros de configuración para casi todo, y su orientación a las acciones me parecía una forma natural de programar en MVC.

En un viaje a la capital me presentaron a JSF, y mi impresión no pudo ser más tibia. Tenía la sensación de estar haciendo lo mismo, pero de otra manera, con ficheros de configuración que no me aportaban nada, y con etiquetas menos potentes que antes. Además, no vino solo, sino que iba acompañado de Spring e IBatis, haciendo que romper el hielo fuese todavía más difícil. ¿Qué me aportaba pensar en componentes en vez de en acciones?

De repente, un tercero se cruzó en mi camino y lo ví claro: Ajax. Todo cobraba sentido. Un campo de texto nunca más sería una caja vacía hasta que alguien pulsa el botón. Ahora, un campo de texto despliega sugerencias, se conecta al servidor para validarse de forma asíncrona, activa y desactiva partes de la página... Y si quieres programar esto de forma productiva, JSF es la elección.

Hasta aquí, la bonita historia de amor que se ve. Lo malo es cuando lees entre líneas. JSF es un estándar limitadísimo en términos de componentes (y no sólo lo digo yo). Es tan solo un framework sobre el que montar algo más interesante. Nació en el 2004 como la oferta de Sun ante el despropósito de J2EE al programar aplicaciones web, pero no ha sido hasta masificación de Ajax cuando se ha empezado a invertir en él.

Las implementaciones (MyFaces, Sun RI, Facelets...), frameworks (Ajax4JSF, ICEFaces, Tobago...) y librerías de componentes (RichFaces, Tomahawk, jMaki...) prometen mucho, pero en la práctica hacerlas funcionar es desesperante. Mala documentación, incompatibilidades, tener que recurrir a betas, sandboxes, nightshots...

Aún así, creo que ahora mismo la mejor opción para elegir un MVC si quieres Ajax es JSF. Concretamente, (MyFaces + Tomahawk (imprescindibles)) + (Ajax4JSF + RichFaces (potentes)). Los dos primeros proporcionan un conjunto base razonablemente estable y completo, y los dos segundos, toda la potencia de Ajax (aunque mezclar ciertos componentes con otras librerías es poco menos que imposible).

Se agradecerán sugerencias...

P.D.: MyFaces se mueve mucho. En el wiki hay un buen lote de artículos de JSF, MyFaces e incluso de integración con otras librerías

Actualización: leo en un blog un curioso gráfico del número de librerías Ajax existentes para diferentes tecnologías. La gráfica corrobora mi teoría de que, a pesar del caos de librerías, JSF es la opción para implementar aplicaciones Ajax.


Actualización 2: esa gráfica sale de una interesante comparativa de frameworks J2EE, muy actualizada

Posted by Juan Ignacio Sánchez Lara 15:30  

7 Comments:

  1. Anónimo said...
    Es una entrada antigua, pero me ha resultado útil. Andaba buscando AJAX para JSF y llegué aquí.

    Ahora me debato entre utilizar ICEFaces y RichFaces, porque me parece que combinar ambas es un suicidio ¿no? Realmente me interesan algunas cosas de una, y otras de la otra.

    En fin, si me decanto pronto y me acuerdo me pasaré por aquí para compartirlo contigo.

    Saludos (Raúl R.)
    Nacho said...
    En los foros de ambos te podrán asesorar mejor, pero creo que sí, efectivamente, es un suicidio, porque la capa javascript que gestiona componentes y ajax es incompatible (por lo que yo sé).

    Yo elegí RichFaces y A4J y no me arrepiento, está muy vivo, estable y bien documentado. No sé si ICEFaces estará tan bien.
    Raúl Recacha said...
    Si me decanto por ICEFaces será porque estoy utilizando MyEclipse y su integración sólo me supone pulsar un botón: "Add ICEFaces Capabilities".

    Agradezco que compartas la información.

    Un saludo de nuevo.

    Raúl R.
    Nacho said...
    Si puedes, utiliza Red Hat Developer Studio (ahora está en Beta 2), que tiene soporte integrado para casi todo (entre ello, RichFaces).
    Anónimo said...
    Hola,
    Estoy haciendo una aplicación con Spring + Hibernate + JSF (+Tomahawk). Hasta ahora todo bien, el problema viene a que quiero añadir funcionalidad Ajax a algunos de mis componentes.
    HE pensado en utilizar RichFaces, pero puff, no puedo ni arracar el servidor.

    Alguna sugerencia o documentación que me pueda ayudar?

    Gracias,
    Anónimo said...
    Hola solo quería saber algo bien explicado a cerca de: ¿que ventajas y desventajas tiene usar richfaes?

    Gracias,
    Saludos..
    Anónimo said...
    Qué tan pesado puede ser el uso de los componentes de RichFaces para una aplicación web..? Es decir hace más pesada o lenta la aplicación?

Post a Comment