Soy nuevo en StackExchange, pero pensé que podrías ayudarme.
Estamos creando una nueva aplicación Java Enterprise, reemplazando una solución JSP heredada. Debido a muchos cambios, la interfaz de usuario y partes de la lógica de negocios se replantearán y reimplementarán por completo.
Nuestro primer pensamiento fue JSF, ya que es el estándar en Java EE. Al principio tuve una buena impresión. Pero ahora estoy tratando de implementar un prototipo funcional y tengo algunas preocupaciones realmente serias sobre su uso.
En primer lugar, crea la peor mezcla pseudo-HTML / CSS / JS inválida y más abarrotada que he visto. Viola todas las reglas que aprendí en el desarrollo web. Además, se junta, lo que nunca debería estar tan estrechamente acoplado: diseño, diseño, lógica y comunicación con el servidor. No veo cómo podría extender esta salida cómodamente, ya sea peinar con CSS, agregar caramelos de UI (como teclas de acceso rápido configurables, widgets de arrastrar y soltar) o lo que sea.
En segundo lugar, es demasiado complicado. Su complejidad es sobresaliente. Si me preguntas, es una mala abstracción de las tecnologías web básicas, paralizadas e inútiles al final. ¿Qué beneficios tengo? Ninguna, si lo piensas. Cientos de componentes? Veo diez mil de fragmentos de HTML / CSS, diez mil de fragmentos de JavaScript y miles de complementos de jQuery además. Resuelve muchos problemas, no tendríamos si no usaríamos JSF. O el patrón del controlador frontal en absoluto.
Y por último, creo que tendremos que empezar de nuevo en, digamos 2 años. No veo cómo puedo implementar toda nuestra primera maqueta de GUI (además, no tenemos un experto en JSF en nuestro equipo). Tal vez podríamos hackearlo juntos de alguna manera. Y luego habrá más. Estoy seguro de que podríamos hackear nuestro hack. Pero en algún momento, estaremos estancados. Debido a que todo lo que está por encima del nivel de servicio está en control de JSF. Y tendremos que empezar de nuevo.
Mi sugerencia sería implementar una API REST, utilizando JAX-RS. Luego cree un cliente HTML5 / Javascript con el lado del cliente MVC. (o algún sabor de MVC ..) Por cierto; De todos modos, necesitaremos la API REST, ya que también estamos desarrollando un front-end parcial de Android.
Dudo que JSF sea la mejor solución en la actualidad. A medida que Internet está evolucionando, realmente no veo por qué deberíamos usar este 'rake'.
Ahora, ¿cuáles son los pros / contras? ¿Cómo puedo enfatizar mi punto de no usar JSF? ¿Cuáles son los puntos fuertes para usar JSF sobre mi sugerencia?