He podido trabajar con esta tecnología en los últimos proyectos en los que he participado y en la siguiente lista resumo lo que, en mi opinión, son los puntos fuertes de esta tecnología, desde mi experiencia práctica.
- Orientado a componentes (estilo Swing) a diferencia de Struts, que está orientado a comandos. Para mí, esta filosofia en el desarrollo de presentaciones web es mucho más intuitiva para un programador.
- Es un estandard REAL y no "de-facto" como Struts. De hecho JSF está incluido dentro de las especificaciones JEE 5. ¿Y qué aporta esto? Todas las grandes compañías tecnológicas y comunidades open source están apostando por JSF y han aportado o integrado librerías de componentes (Sun, BEA, IBM, Oracle, Apache, JBoss,...).
- Relacionado con el punto anterior, existen múltiples librerías de componentes complejos (AJAX, Drag'n'Drop,...) que facilitan la vida al programador una barbaridad a la hora de hacer paginas visualmente complejas (que por otro lado es lo que mercado empieza a demandar hoy en día). Además puedes utilizarlas simultáneamente (he llegado a integrar en un proyecto RichFaces, Ajax4JSF, Facelets, Tomahawk y MyFaces, y os aseguro que funciona).
- Existen herramientas WYSIWYG (editores visuales), aunque no proporcionan esa funcionalidad para todos los componentes. El RAD de IBM proporciona un pintador para componentes IBM, el JDeveloper para Oracle, MyEclipse y Eclipse Europa (3.3 + WTP 2.0) tienen pintador sólo para componentes básicos (MyFaces o RI de Sun). Que los pintadores sean para librerías concretas NO SIGNIFICA que no se puedan incluir otras librerías. A pesar de no existir pintadores genéricos, el tema "snippets" puede ser tan válido e incluso mejor que el pintador.
- Podría parecer que JSF está poco maduro pero opino todo lo contrario. A parte de que la diversidad en cuanto a librerías va aumentado continuamente, hace más de un año que apareció la especificación JSF 1.2. En ella, se mejora aspectos concretos de especificaciones anteriores y aporta soluciones específicas (gestión de frames, pop-ups, etc.).
Por todo esto y por la demanda en temas JEE que empieza a haber en las empresas, tengo la impresión que Struts va perdiendo importancia y se quedará como una tecnología "migrable" en el futuro (más trabajo para nosotros... ;) ). La cuestión es cual será la próxima tecnología en presentación: ¿ JSF, FLEX, GWT , JavaFX, Silverlight,...? El tiempo dirá!