Recuerdo hace varios años (4 al menos) cuando me ilusioné con la aparición de JSF,.
En aquel momento me pareció una propuesta bastante interesante, con componentes construidos, un modelo de programación orientado a componentes, posibilidad de crear componentes, separación del modelo de programación típico MVC (Struts)… de hecho incluso lo implanté en algún que otro cliente.
Con el paso del tiempo, la nueva versión 2 de JSF y la evolución de los frameworks web mi opinión es radicalmente distinta.
Van aquí unas breves reflexiones al respecto:
· Los componentes JSF no son realmente componentes: no se puede interactuar con ellos como con un componetne (hacer por ejemplo un combo.setEnabled(true) o fecha.setDate(new Date())) desde la parte de control (bueno, hay una forma pero no se usa). Un ejemplo de framework con componentes reales es GWT en el que puedes interactuar con ellos al estilo Swing (y otro mejor Jaxcent ;))
· La maquetación con JSF es un auténtico suplicio: el HTML que entrega el Maquetador debe modificarse por completo para meter los tags, hacer las plantillas, de modo que cualquier cambio de maquetación afecta sobremanera. En Flex, GWT y otras aproximaciones está completamente separado. En Flex por ejemplo el diseño hecho en Photoshop pasa casi directamente al programador y si hay que remaquetar en general podría servir con mantener los ids. En Jaxcent el maquetador entrega unos HTMLs sobre los que los programadores añaden ids y poco más.
· Desarrollo de componentes: uno de los grandes problemas de JSF. Es un infierno hacer un componente. Con Facelets puedes hacer composiciones pero siempre a partir de componentes ya hechos, modificar un componente (una tabla por ejemplo) de cualquier implementación es prácticamente inviable. Tanto GWT como Flex soportan un mecanismo para crear componentes radicalmente distinto y mucho más sencillo.
· Modelo de programación: ¿alguien que no esté sufriéndolo se recuerda el ciclo de vida JSF? Es más alguien lo ha necesitado? (estoy exagerando ;), yo lo he necesitado). En cualquier caso es mucho más complejo que cualquier otro modelo Web que imaginéis, por lo que está claro que si lo hacen otros…
· Integración de librerías: habéis probado a juntar 2 librerías porque necesitáis un componente de una y otro de otra…en la mayoría de los casos no es posible o al menos os tocará cambiar código fuente de la librería.
· Componentes: comparar los componentes que ofrece Flex o GWT con los de JSF (la mejor librería que se os ocurra) y ya me diréis. Por ejemplo una de las librerías de componentes más potentes Ext JS tiene 2 portings (no uno, dos) para GWT: Ext GWT y GWT-Ext, pero hay más y no hablemos de GWT…aquí Jaxcent no puede competir 😀
· Evolución de las tecnologías: GWT de la mano de Google está avanzando muy rápidamente (también es verdad que no sé cuál es la nomenclatura de versiones que usan en Google, si hubieran sido Linux irían por las 10 cifras :P) y no digamos Flex. JSF ha tardado varios años en incluir Facelets en el estándar y en simplificar partes del estándar.
· Facilidades para desarrollo: los entornos existentes para Flex sobre todo y también para GWT son mucho más amigables que los de JSF, aunque esto es más discutible.

Replica a ingeniods Cancelar la respuesta