framework java wicket web-frameworks tapestry

framework - magento java



Diferencia entre el tapiz de apache y mecha de apache (8)

Algunas diferencias relevantes como las veo:

  • Tapestry utiliza una estructura de página semiestática, en la que puede trabajar con condicionales y bucles para lograr un comportamiento dinámico. Wicket es completamente dinámico; puede cargar componentes dinámicamente, reemplazarlos en tiempo de ejecución, etc. Las consecuencias de esto son que Tapestry es más fácil de optimizar y que Wicket es más flexible en su uso.
  • Ambos marcos son aproximadamente igual de eficientes en la ejecución, pero Wicket se basa en el almacenamiento del lado del servidor (de manera predeterminada, la página actual en la sesión y las páginas anteriores en una ''caché de segundo nivel'', que es un archivo temporal en el sistema de archivos). Si eso le molesta, piense en cuántas sesiones simultáneas espera tener en las horas punta y calcule con aproximadamente 100kb por sesión (que probablemente esté en el lado alto). Eso significa que puede ejecutar aproximadamente 20k sesiones simultáneas para 2GB. Di 15k porque también necesitas esa memoria para otras cosas. Por supuesto, una desventaja de almacenar el estado es que solo funcionará bien con la afinidad de sesión, por lo que es una limitación cuando se usa Wicket. El marco le proporciona un medio para implementar páginas sin estado, pero si está desarrollando aplicaciones completamente sin estado, podría considerar un marco diferente.
  • El objetivo de Wicket es admitir la escritura estática en la mayor medida posible, mientras que Tapestry se trata más de guardar líneas de código. Por lo tanto, con Tapestry su base de código es probablemente más pequeña, lo que es bueno para el mantenimiento, y con Wicket, su tipografía estática, lo que facilita la navegación con un IDE y la verificación con un compilador, que también es bueno para el mantenimiento. Algo que decir para ambos imho.

Ya he leído varias veces que la gente piensa que Wicket trabaja mucho con la herencia. Me gustaría subrayar que tiene una opción. Hay una jerarquía de componentes, pero Wicket también admite la composición a través de construcciones como IBhavior (además de la cual, por ejemplo, se construye la compatibilidad con Ajax de Wicket). Además de eso, tiene cosas como convertidores y validadores, que agrega a los componentes, globalmente, o incluso como una preocupación transversal al utilizar algunos de los escuchas de fase que Wicket proporciona.

Apache Wicket ( http://wicket.apache.org/ ) y Apache Tapestry ( http://wicket.apache.org/ ) son marcos web orientados a componentes , a diferencia de los marcos basados ​​en acciones como Stripes, de la Fundación Apache. Ambos le permiten construir su aplicación a partir de componentes en Java. Ambos se parecen mucho a mí .

¿Cuáles son las diferencias entre esos dos marcos? ¿Alguien ha experimentado en ambos? Específicamente:

  • ¿Cómo es su rendimiento, cuánto se puede personalizar el manejo del estado, se pueden usar sin estado ?
  • ¿Cuál es la diferencia en su modelo de componente?
  • ¿Qué elegirías para qué aplicaciones?
  • ¿Cómo se integran con Guice, Spring, JSR 299?

Edición : He leído la documentación de ambos y he usado ambos. Las preguntas no pueden responderse suficientemente leyendo la documentación, pero sí por la experiencia de usarlas durante algún tiempo, por ejemplo, cómo usar Wicket en modo sin estado para sitios de alto rendimiento. Gracias.



Como dije cuando 4.1 era el lanzamiento oficial estable:

Debería echarle un buen vistazo al historial de desarrollo de Tapestry antes de comprometerse a usarlo. Tapestry ha hecho muchas actualizaciones no compatibles, sin la continuación del soporte de versiones anteriores. Los parches a 4.1 ya no se procesan dentro de un período de tiempo razonable. En mi opinión, esto no es aceptable para la versión estable oficial.

Comprometerse a usar Tapiz 5 significa:

debes convertirte en un comitente; necesita mantenerse al día con todos los nuevos desarrollos, abandonar las versiones antiguas lo más rápido posible; mantener versiones estables a ti mismo.


Creo que Wicket es un marco más simple de usar.

Además, Wicket permite la recarga de clase a través del sistema de reemplazo de código activo de su IDE. Esto es todo lo que se requiere para que Wicket ejecute las versiones modificadas de las clases de una aplicación actualmente en ejecución. Las restricciones habituales se aplican a la sustitución de código activo, como tener que ejecutar en modo de depuración (Eclipse) y no poder cambiar los aspectos estructurales de una clase (es decir, el nombre de la clase, cambiar las firmas de los métodos, etc.).


No me gusta el modelo de programación de Tapestry y conozco a muchos desarrolladores que abandonan Tapestry debido a demasiados cambios e incompatibilidades en el desarrollo. Consulte: ptrthomas.wordpress.com/2009/09/14/…



Wicket es un muy buen framework web. Lo mejor de todo lo que sé. Lo uso desde la versión 1.3 y siempre obtengo lo que quiero. Wicket tiene una excelente integración con Spring; simplemente use la anotación @SpringBean en su código para inyectar cualquier bean spring a sus clases.


REVISADO después de estudiar Tapiz 5.

El objetivo de Wicket es un intento de hacer que el desarrollo web sea similar a la GUI de escritorio . Lograron hacerlo realmente bien a expensas del uso de la memoria (HTTPSession).

El objetivo de Tapestry 5 es hacer un marco web orientado a componentes muy optimizado (para CPU y memoria) .

El gran escollo para mí fueron las respuestas: "¡Wicket admite componentes sin estado!" a los argumentos "Wicket tiene hambre de memoria". Si bien Wicket es compatible con componentes sin estado, no son "un foco del desarrollo de Wicket". Por ejemplo, un error en StatelessForm no se solucionó durante mucho tiempo. Consulte StatelessForm: problema con los parámetros después de que falla la validación .

  • En mi humilde opinión, el uso de Wicket es un poco ingenioso hasta que va a optimizar / ajustar los parámetros de la aplicación web
  • IMHO Wicket es más difícil de estudiar si ha programado aplicaciones web y quiere pensar en términos de procesamiento de solicitudes
  • Tapestry 5 recarga automáticamente las clases de componentes tan pronto como las cambia. Ambos frameworks recargan el marcado de componentes.
  • Wicket obliga a la marcación / separación de código , Tapestry 5 solo te da esta habilidad. También puede utilizar una sintaxis más detallada en Tapiz 5. Como siempre, esta libertad requiere que se tomen más precauciones.
  • El núcleo de Wicket es más fácil de depurar: los componentes de usuario se basan en la herencia, mientras que los componentes de usuario de Tapestry 5 se basan en anotaciones. Desde el otro lado, eso podría facilitar las transiciones a las futuras versiones para Tapestry y luego para Wicket.

Desafortunadamente, el tutorial de Tapestry 5 no hace hincapié en que el ejemplo de código de Tapestry como ''t: loop source = "1..10" ...'' puede ser una mala práctica. Por lo tanto, debe ponerse un poco de esfuerzo en escribir convenciones de uso de tapices / buenas prácticas si su equipo no es muy pequeño.

Mis recomendaciones :

  • Use Wicket cuando la estructura de sus páginas sea muy dinámica y pueda gastar 10-200 Kbs de memoria HttpSession por usuario (estos son números aproximados).
  • Utilice Tapestry 5 en los casos en que necesite un uso más eficiente de los recursos.