¿Qué marco web Java debo usar: Play, Wicket, Struts, JSF, Tapestry o Stripes?

¿Juego, Wicket, Struts, JSF, Tapiz o Stripes? Tengo una verdadera experiencia de desarrollador en Play !, Wicket, Struts JSF 1.2 y Tapestry 5. Intentaré darle lo que observé cuando tuve que trabajar en esos marcos.

Descargo de responsabilidad:
¡Soy un freelance y soy un gran fanático de Play! Marco de referencia. Hice algunas presentaciones de Play! en Ginebra JUG, París JUG y yaJUG. ¡Lancé un servicio alojado en PlayApps.net y lo escribí completamente con Play! Entonces no soy neutral. Sin embargo, intentaré expresar mi opinión.

Apache Wicket tiene un enfoque orientado a componentes, con una buena arquitectura. Lo que me gusta de wicket: no es necesario profundizar en el mundo JS / CSS, el enfoque de componentes es realmente sencillo e interesante. Lo que no me gusta: tan pronto como necesite cubrir un caso de uso específico en el lado de la GUI, debe crear su propio componente. Además, si lo compara con Tapestry, debe detener y reiniciar su servidor de aplicaciones con frecuencia. Puede evitar el paso de reinicio con una instalación JRebel adecuada en su Tomcat. Hay muchos libros muy buenos sobre Apache Wicket, entonces, ¿por qué no …

Struts: bueno, quizás la solución más barata, para un resultado barato. Es un buen marco. Pero en 2012 elegiría Spring MVC. Es uno de los mejores framework MVC para Java, con una buena productividad y una arquitectura muy poderosa. Para la capa de presentación, deberá agregar jQuery o cualquier biblioteca de componentes JS si desea tener una aplicación agradable y fácil de usar.

Apache Tapestry 5 es aún más productivo que antes. Hay un buen conjunto de libros y una gran comunidad. El tapiz es productivo. No es necesario detener e iniciar su aplicación. Me gusta su enfoque de plantilla. No es un marco basado en componentes, por lo que está más cerca de Spring MVC y Play!

No conozco Stripes, no tengo experiencia real, excepto algunos artículos que leí.

JSF 1.2 es un estándar, no un marco. Lo que usará es una implementación. Si elige Richfaces, es un buen marco orientado a componentes. JSF es una buena opción si no tiene capacidades de desarrollo web en su equipo. Algunos desarrolladores de Java no quieren aprender HTML / CSS / JS, por lo que JSF será una buena combinación. Personalmente, creo que esto es estúpido, pero así es como se organiza el mercado hoy en día cuando quieres contratar un recurso Java.
JSF 1.2 es detallado. El JSF 2 será una tecnología interesante. Pero para JSF 1.2 debe elegir un marco adicional como Spring Faces, más Spring Webflow. Esta es una pila poderosa, pero tenga en cuenta que cuando tiene múltiples marcos, es un poco más difícil encontrar lo que salió mal, cuando sucede algo malo. En términos de productividad, está bien. Tome un servidor Tomcat, una licencia JRebel, y será productivo.

El último marco es mi favorito para el desarrollo web puro. ¡El juego! Framework es un marco de desarrollo web que no se basa en la API de Servlet. Sin embargo, puede generar un archivo WAR y, por ejemplo, en mi proyecto, funciona en producción en un IBM Websphere 7. De hecho, funciona incluso mejor que la aplicación Richfaces. Tuvimos que adaptar el cargador de clases WAS y excluir jboss-el.jar para implementar nuestra aplicación JSF … lo cual es una mierda.

¡Jugar! Inconvenientes del marco: debe tener un desarrollador web java con un buen conocimiento de CSS / HTML / Javascript. Es muy similar a Ruby on Rails. Es altamente productivo. El modo de desarrollo en Play! vi algunos. Edita una clase java, no necesita compilar o usar maven, pulsa el navegador de recarga y funciona. Esto se debe a que Play! utiliza el compilador rápido integrado Eclipse IDT en tiempo de desarrollo. Puedes olvidar el patrón “maven – voy a tomar un café”.

Sin embargo, si no desea crear una aplicación web sino una aplicación enriquecida, preferiría un enfoque basado en componentes con Wicket o JSF.

Como decimos: ¡todo depende!

Esta pregunta es demasiado amplia para ser respondida objetivamente. No existe el mejor marco web: cada uno tiene sus fortalezas y debilidades. Todos implementan MVC, pero lo modelan de manera diferente. Aquí hay un resumen de estos marcos.

  • Struts: es, con mucho, el marco más utilizado, tal vez porque es el primero en descifrar la provisión de MVC, porque desarrollar aplicaciones web en servlets simples y JSP era una pesadilla. Los otros marcos existen hoy en día debido a Struts, por lo que puede decir claramente que hay muchas personas que lo odian. Desarrolla acciones , que pueden usar uno o más modelos y las vistas se implementan como JSP. Luego están los taglibs, pequeños componentes reutilizables, que se pueden rociar en sus JSP. Si eliges Struts, incluso aquellos que lo odian dirán qué funciona y qué no, por lo que estás seguro de cualquier manera.
  • Stripes and Wicket: adopte un enfoque ligeramente diferente para MVC. Desarrolla aplicaciones web esencialmente de la misma manera que Struts, pero estos marcos eliminan una gran cantidad de configuración externa requerida para que sus aplicaciones se ejecuten. También proporcionan características adicionales (por ejemplo, Wicket tiene integración con Springs, por lo que si está utilizando esta última en el desarrollo de su negocio, simplifica el desarrollo de su aplicación web) que puede interesarle.
  • Jugar: adopta un enfoque completamente diferente del desarrollo web y es algo que me gustó más. Sin embargo, es un framework de pila completa, lo que significa que viene con su propio servidor basado en Apache Mina. No es un marco basado en servlet. Por lo tanto, si desea que sus aplicaciones web se ejecuten en Tomcat u otros contenedores de servlets, Play no es lo que necesita. No pude usarlo precisamente por esta razón en mi trabajo.
  • JSF: es un marco basado en componentes y las vistas generalmente son proporcionadas por facelets, aunque puede usar JSP para lo mismo. Se suponía que era el marco de reemplazo para Struts, pero no estoy seguro de si alguna vez tuvo ese uso generalizado.
  • Tapiz: adopta otro enfoque para el desarrollo web. Le permite rociar etiquetas de tapiz en su HTML simple, que proporcionan la lógica / datos necesarios. Este es el segundo que más me gustó personalmente porque puedo trabajar en HTML directamente sin recurrir a JSP, etc.

Por lo general, las personas tienen opiniones sólidas sobre cómo deben desarrollarse las aplicaciones web, por lo que la elección de los marcos depende de esas opiniones. Cree un prototipo de una característica simple de su aplicación web en cada uno de estos marcos y seleccione la que más le guste a usted y a su equipo. Todos estos marcos tienen comunidades sólidas y maduran bien a lo largo de los años, por lo que la elección generalmente depende de qué tan fuerte sea su opinión de una manera u otra.