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 empresarial se repensarán y volverán a implementar 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 combinación de pseudo-HTML / CSS / JS inválida más desordenada que he visto. Viola todas las reglas que aprendí en el desarrollo web. Además, reúne 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 ampliar esta salida cómodamente, ya sea peinando con CSS, agregando dulces 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 pobre abstracción de las tecnologías web básicas, paralizada e inútil al final. ¿Qué beneficios tengo? Ninguno, si lo piensas. Cientos de componentes? Veo diez mil fragmentos de HTML / CSS, diez miles de fragmentos de JavaScript y miles de complementos de jQuery además. Resuelve muchos problemas, no tendríamos si no usáramos JSF. O el patrón del controlador frontal en absoluto.
Y, por último, creo que tendremos que empezar de nuevo, digamos 2 años. No veo cómo puedo implementar toda nuestra primera maqueta de GUI (Además, no tenemos ningún experto JSF en nuestro equipo). Tal vez podríamos hackearlo de alguna manera. Y luego habrá más. Estoy seguro de que podríamos hackear nuestro hack. Pero en algún momento, estaremos atrapados. Debido a todo lo que está por encima del nivel de servicio, controla 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 MVC del lado del cliente. (o algún sabor de MVC ..) Por cierto; necesitaremos la API REST de todos modos, ya que también estamos desarrollando un front-end parcial de Android.
Dudo que JSF sea la mejor solución hoy en día. A medida que Internet está evolucionando, realmente no veo por qué deberíamos usar este 'rastrillo'.
Ahora, ¿qué 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?