java - gui - vaadin framework demo
¿Cuáles son los pros y los contras de los diversos frameworks web Java? (24)
¡Mi elección es Wicket!
Estoy considerando crear mi propio sitio web usando Java y estoy tratando de decidir qué marco usar. Sin embargo, hacer una búsqueda rápida de frameworks Java devuelve más de 50 para elegir.
Mi sitio web va a ser para mi propio placer de construirlo al principio, pero si se vuelve popular, sería bueno que tenga cierta escalabilidad, o al menos poder rediseñar para eso.
¿Cuáles son las principales diferencias entre los marcos más populares? ¿Hay casos en que uno supera significativamente a los demás? Por ejemplo, aplicaciones empresariales de alto tráfico frente a aplicaciones pequeñas de poco tráfico. También me pregunto si algunos son mucho más fáciles de aprender y usar que otros.
¿Hay alguien que tenga experiencia con algunos de estos marcos y pueda hacer una recomendación? ¿El gran número de opciones solo sirve como una advertencia temprana para evitar el desarrollo web basado en Java siempre que sea posible?
ACTUALIZACIÓN: Tapestry 5.2 está fuera, por lo que no está abandonado, como parecía haberlo sido anteriormente. Mi experiencia es con Tapestry 4, no con 5, por lo que su kilometraje puede variar. Mi opinión sobre Tapestry ha cambiado a lo largo de los años; He modificado esta publicación para reflejarla.
Ya no puedo recomendar Tapestry como lo hice anteriormente. Tapestry 5 parece ser una mejora significativa, pero mi principal problema con Tapestry no es con la plataforma en sí misma; es con la gente detrás de esto.
Históricamente, cada actualización de la versión principal de Tapestry ha roto la compatibilidad con prejuicios extremos, mucho más de lo que cabría esperar. Esto parece deberse a la incorporación de nuevas técnicas de codificación o tecnologías que requieren reescrituras significativas.
Howard Lewis Ship (el autor principal de Tapestry) es ciertamente un desarrollador brillante, pero no puedo decir que me preocupe por su gestión del proyecto Tapestry. El desarrollo de Tapestry 5 comenzó casi inmediatamente después del envío de Tapestry 4. Por lo que puedo decir, Ship se dedicó a eso, dejando Tapestry 4 en manos de otros contribuidores, que siento que no son tan capaces como Ship. Después de haber hecho el doloroso cambio de Tapestry 3 a Tapestry 4, sentí que había sido abandonado casi de inmediato.
Por supuesto, con el lanzamiento de Tapestry 5, Tapestry 4 se convirtió en un producto heredado. No tendría un problema con esto si la ruta de actualización no fuera tan brutal de nuevo . Así que ahora nuestro equipo de desarrollo se encuentra en una posición poco envidiable: podríamos seguir utilizando una plataforma web esencialmente abandonada (Tapestry 4), hacer la actualización a Tapestry 5, o renunciar por completo a Tapestry y volver a escribir nuestra aplicación utilizando otra plataforma. Ninguna de estas opciones es muy atractiva.
Tapestry 5 está supuestamente escrito para reducir la probabilidad de que la actualización se rompa a partir de ahora. Un buen ejemplo es en las clases de página: en encarnaciones anteriores, las clases de página descendían de una clase base proporcionada por Tapestry; Los cambios incompatibles de API en esta clase fueron la causa de una gran cantidad de problemas de compatibilidad con versiones anteriores. En Tapestry 5, las páginas son POJOs que se mejoran en tiempo de ejecución con el "polvo de hadas mágico Tapestry" a través de anotaciones. Por lo tanto, siempre que se mantenga el contrato para las anotaciones, los cambios en Tapestry no afectarán sus clases de página.
Si esto es correcto, escribir una nueva aplicación usando Tapestry 5 podría salir bien. Pero personalmente, no tengo ganas de volver a poner mi mano en el quemador.
Creo que para sus modestos requisitos, solo necesita codificar servlets o páginas jsp simples que puede servir desde el servidor Tomcat. No creo que necesite ningún tipo de marco web (como puntales) para los datos personales del sitio web
Decir "usar JSF" es un poco simple. Cuando decide usar JSF, tiene que elegir una biblioteca de componentes encima. ¿Usará MyFaces Tomahawk, Trinidad y Tobago ( http://myfaces.apache.org/ )? O tal vez ICEfaces ( http://www.icefaces.org/ )? Ah, y si usa ICEfaces, ¿usará JSP o Facelets para sus vistas?
En mi opinión, es difícil de decir. Nadie tiene tiempo para evaluar todas las alternativas prometedoras, al menos en los proyectos en los que trabajo, porque no son lo suficientemente grandes como para realizar fases de evaluación de tres meses. Sin embargo, debes buscar a algunos que tengan una gran comunidad activa y no desaparezcan en un año. JSF está disponible desde hace un tiempo, y dado que es empujado por el sol, estará por más tiempo. No puedo decir si es la mejor opción, pero será una buena opción.
Después de un largo tiempo de probar varias soluciones, para mí resultó ser:
Spring MVC para la capa de presentación y controlador (NO Spring Webflow, porque mis flujos están basados en ajax)
jQuery para todas las cosas del lado del cliente
Spring Security para, bueno, aspecto de seguridad
Hibernate / JPA2
Embarcadero por el bien de las continuaciones (cometa)
Un mes de una curva de aprendizaje extraordinariamente empinada, pero ahora estoy feliz.
También me gustaría mencionar que estaba a un paso de saltear todas las cosas de Java y aprender Scala / LIFT en su lugar. En lo que a mí respecta, todo en Java que está relacionado con el desarrollo web de vanguardia (cometa, comunicación asincrónica, seguridad (sí, ¡incluso con Spring Security!)) Todavía es un poco hack (probámeme por evidencia, pleeease !). Para mí, Scala / LIFT parece ser una solución más lista para usar y todo en uno.
La razón por la que finalmente decidí no ir con Scala es
como líder de proyecto, debo considerar los recursos humanos y los desarrolladores de Java son mucho más fáciles de encontrar que los desarrolladores de Scala
para la mayoría de los desarrolladores de mi equipo, el concepto funcional de Scala, por excelente que sea, es difícil de entender
Saludos Er
He evaluado bastantes frameworks y Vaadin ( http://vaadin.com/home ) se ha filtrado hasta el final.
Al menos debería darle una breve evaluación.
¡Aclamaciones!
He usado Tapestry 3 , Wicket , Echo y JSF bastante extensamente. Realmente recomendaría que los revises y escojas el que te parezca más fácil y que se ajuste más a tu forma de trabajar.
De ellos, el más cómodo para mí fue Wicket , debido a la naturaleza liviana de la construcción de componentes y la simplicidad de la creación de plantillas. Eso va doblemente si estás usando tu propio código db en lugar de Hibernate o algún otro framework (nunca estuve del todo contento con Wicket Hibernate o Spring Integration).
Echo es genial si no te importa escribir todo tu diseño en Java. Sé que ahora es diferente, pero todavía creo que el producto cumple un nicho bastante limitado. Cambian el modelo de desarrollo con cada versión principal, así parece.
Tapestry es un gran producto, pero obviamente es muy diferente de los otros en términos de modelo de desarrollo, ya que está dirigido principalmente por un amigo. Howard Lewis Ship es sin duda bastante inteligente, pero estoy decepcionado con su decisión de olvidar básicamente la compatibilidad con versiones anteriores. De nuevo, sin embargo, para sus necesidades esto puede no importar, y siempre he encontrado que los productos Tapestry son agradables contra los que trabajar.
JSF ha estado fuera durante años, y todavía se siente como algo que un tipo de Struts construyó para solucionar todos los problemas de Struts. Sin entender realmente todos los problemas con Struts. Todavía tiene una sensación inconclusa, aunque el producto es obviamente muy flexible. Lo uso y tengo algo de cariño por él, con grandes esperanzas para su futuro. Creo que la próxima versión (2.0) que se entregará en JEE6 realmente lo hará suyo, con una nueva sintaxis de plantilla (similar a Facelets) y un modelo de componente simplificado (componentes personalizados en solo 1 archivo ... finalmente).
Y, por supuesto, hay un millón de marcos y herramientas más pequeños que obtienen sus propios seguidores ( Velocity para necesidades básicas, JSPs procesar, Struts, etc.). Aunque, en general, prefiero los marcos orientados a componentes.
Al final, recomendaría echar un vistazo a Tapestry, Wicket y JSF y elegir el que se sienta mejor para ti. Probablemente encuentres uno que se ajuste al modo en que te gusta trabajar muy rápido.
Mi elección sería Wicket (para proyectos grandes y una base de usuarios predecible), GWT (para proyectos grandes que son principalmente públicos) o solo un marco de servicios (como Jersey / JAXRS) junto con un kit de herramientas JavaScript (para proyectos pequeños a medianos) .
Mi favorito es Spring Framework. Con 2.5 Spring MVC es tan increíble, con nuevas anotaciones, convenciones sobre características de configuración, etc.
Si simplemente está haciendo algo súper simple, también podría intentar usar la API Servlet normal y no molestarse con un marco.
Mi forma favorita de aplicaciones realmente simples es Apache VelocityTools (VelocityLayoutServlet) con Velosurf ( http://velosurf.sourceforge.net ).
Para aplicaciones más complejas, Spring MVC o Struts 2.
No lo he probado yo mismo, pero creo
Tiene mucho potencial...
viniendo de php y asp clásico, es el primer framework web de Java que me parece prometedor ....
No puedo creer que nadie haya mencionado a GWT
Para una GUI rápida y elegante , puede usar JSF con la biblioteca Richfaces . Los componentes de interfaz de usuario de Richfaces son referencias fáciles de usar y útiles disponibles con demostración de código en el sitio de demostración. Probablemente más tarde, cuando su sitio tenga más datos para manejar y mucha información se tenga que tramitar en la base de datos, puede conectar cualquier marco de acceso a la base de datos (ORM) con ella.
Para sitios de mucho tráfico, utilizaría un marco que no gestiona el estado del cliente en el servidor: Wicket, JSF y Tapestry están administrando el estado del cliente en el servidor. Solo usaría esos marcos (Wicket es mi favorito) si la aplicación se pareciera más a una aplicación de escritorio. Pero intentaré utilizar un enfoque REST + AJAX más escalable y simple.
Spring MVC sería un candidato, pero desde Spring MVC 3 tiene un extraño modelo de programación sobrecargado de anotación que no utiliza los beneficios del tipado estático. Hay otros elementos desagradables como los parámetros de salida en los métodos combinados con un retorno normal, por lo que hay dos canales de salida de un método. Spring MVC también tiende a reinventar la rueda y tendrá más para configurar en comparación con otros marcos. Realmente no puedo recomendar Spring MVC aunque tiene algunas buenas ideas.
Grails es una forma conveniente de utilizar Spring MVC y otros marcos establecidos como Hibernate. La codificación es divertida y verás resultados rápidamente.
Y no olvide que la API Servlet con algunos pequeños ayudantes como FreeMarker para plantillas es muy poderosa.
Pruebe HybridJava, eso es mucho más simple que cualquier otra cosa.
Recientemente comencé a usar el Framework Stripes . Si está buscando un marco basado en solicitudes que sea realmente fácil de usar, pero que no impone ningún límite a lo que está haciendo, lo recomiendo encarecidamente.
Es similar a los puntales, pero va mucho más allá. Incluso hay algunos proyectos de complementos que le permiten usar hibernación o jpa con muy poca configuración.
Hay muchos buenos marcos, aunque he escuchado que el wicket también es bueno, pero no lo he usado.
Recomiendo Seam, especialmente si necesita persistencia.
Recomiendo el marco Wicket orientado a componentes. Le permite escribir su aplicación web en un simple código Java antiguo, puede usar POJO como modelo para todos los componentes y no necesita perder muchos archivos de configuración XML.
¡Desarrollé con éxito una aplicación de banca en línea con Struts cuando descubrí Wicket y vi lo fácil que puede ser el desarrollo de aplicaciones web!
También he escuchado cosas buenas sobre Spring Framework. En general, sin embargo, la mayoría de los frameworks web de Java que he visto no me han impresionado (especialmente, Struts).
Para una aplicación simple, definitivamente consideraría el uso de servlets y JSP "en bruto" y no me preocuparía adoptar un marco. Si los servlets están bien escritos, en el futuro debería ser sencillo ingresar a un marco si es necesario cuando la aplicación crezca en complejidad.
Todos ellos: ese es el problema ;-)
Vea algunos comentarios sobre algunos Frameworks de la aplicación Java (segundo párrafo):
http://swiss-knife.blogspot.com/2009/11/some-java-application-servers.html
http://zkoss.org - el bueno
Descargo de responsabilidad: trabajo en Vaadin (anteriormente IT Mill)
Si está haciendo algo RIAish, es posible que desee echar un vistazo a Vaadin . Es un framework AJAX orientado a la interfaz de usuario de código abierto que, para mí, es agradable de usar (yo mismo procedo de un fondo de PHP).
Hay un caso de estudio que compara hacer la misma aplicación (es decir, dos aplicaciones con el mismo conjunto de características) en Icefaces y Vaadin. En pocas palabras, afirma que el desarrollo de la interfaz de usuario fue considerablemente más rápido.
Aunque el estudio está alojado en la wiki de la compañía, puedo asegurar que es objetivo, genuino y veraz, aunque no puedo forzarte a creer en mí.