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?
fuente
Respuestas:
Hay al menos una muy buena razón para considerar JSF.
Es una parte estándar de la pila de Java EE y, por lo tanto, estará disponible y funcionando en TODOS los contenedores de Java EE durante mucho, mucho tiempo. Y mantenido también, sin necesidad de hacerlo si se ha adherido estrictamente a la especificación Java EE.
Si esto le preocupa, entonces debe considerarlo. La mayoría del software vive más de lo que piensan sus diseñadores, especialmente si se toma en consideración al escribir.
fuente
Parece que ya has tomado una decisión sobre los contras, y tengo que saludarme con algunos de ellos (no separa el diseño y la lógica lo suficiente, y el HTML resultante a menudo es atroz), pero no estás de acuerdo con los demás (si usas Facelets, que recomendaría mucho, entonces la salida definitivamente debería ser válida).
Aquí hay algunos pros:
Pero ciertamente ninguna de estas ventajas es tan grande que debería usar JSF sobre algún otro marco con el que su equipo ya tenga experiencia.
fuente
JSF es un marco web con estado adecuado para Java que es un estándar, lo que significa que muchos proveedores importantes (incluidos los FOSS) lo admiten de inmediato. Tiene un fuerte soporte de biblioteca de terceros (PrimeFaces, IceFaces, etc.). Sin embargo, fundamentalmente 'rompe la red' debido a su naturaleza con estado (y muchas otras cosas). Vea la comparación de Matt Raible de los marcos web basados en JVM , JSF generalmente se acerca al último.
Editar, con JSF 2.2, puede comenzar a argumentar que no rompe la web tanto como antes. De hecho, su integración HTML5 no es del todo terrible :-).
fuente
Teníamos una aplicación JSP / Struts 1.0 heredada. Nos saltamos Struts 2, JSF y todo lo demás que ha sucedido desde Struts 1 y saltamos a Spring 3.0. Tiene soporte (y una comunidad activa) para nuestra lista de deseos: Eclipse IDE, MVC y REST. Además, abandonamos nuestro Javascript / ajax de cosecha propia para jquery.
YMMV pero Spring ha sido una migración sin problemas para nosotros.
fuente