Apache Wicket ( http://wicket.Apache.org/ ) et Apache Tapestry ( http://wicket.Apache.org/ ) sont les deux frameworks Web orientés composants s - contrairement aux frameworks basés sur l'action comme Stripes - par la Fondation Apache. Les deux vous permettent de construire votre application à partir de composants Java. _ {Ils me ressemblent beaucoup tous les deux}.
Quelles sont les différences entre ces deux cadres? Est-ce que quelqu'un a de l'expérience dans les deux? Plus précisément:
Edit : J'ai lu la documentation des deux et j'ai utilisé les deux. Vous ne pouvez pas répondre suffisamment aux questions à la lecture de la documentation, mais à l’expérience de leur utilisation pendant un certain temps, par exemple, comment utiliser Wicket en mode sans état pour les sites hautes performances. Merci.
Quelques différences pertinentes telles que je les vois:
J'ai lu à quelques reprises maintenant que les gens pensent que Wicket fonctionne beaucoup par héritage. Je tiens à souligner que vous avez le choix. Il existe une hiérarchie de composants, mais Wicket prend également en charge la composition bien que des constructions telles que IBehavior (au-dessus desquelles le support Ajax de Wicket est construit). En plus de cela, vous avez des choses comme les convertisseurs et les validateurs, que vous ajoutez aux composants, globalement, ou même comme une préoccupation transversale en utilisant certains des écouteurs de phase fournis par Wicket.
RÉVISÉaprès avoir étudié Tapestry 5.
Le but de Wicket est une tentative visant à rendre un développement Web similaire à l'interface graphique de bureau one. Ils ont très bien réussi à le faire aux dépens de l'utilisation de la mémoire (HTTPSession).
Le but de Tapestry 5 est de rendre très optimisé (pour le processeur et la mémoire) framework web orienté composant.
Le très gros écueil pour moi était les réponses "Wicket supporte le composant sans état!" aux arguments "Wicket a besoin de mémoire". Bien que Wicket prenne effectivement en charge les composants sans état, ils ne constituent pas "un élément central du développement de Wicket". Par exemple, un bogue dans StatelessForm n'a pas été corrigé depuis très longtemps - voir StatelessForm - problème avec les paramètres après l'échec de la validation }.
Malheureusement, tutoriel sur Tapestry 5 } ne souligne pas que l'exemple de code Tapestry tel que 't: loop source = "1..10" ...' puisse être une mauvaise pratique. Il faut donc s’efforcer d’écrire les conventions/bonnes pratiques d’utilisation de Tapestry si votre équipe n’est pas très petite.
Mes recommandations :
Voici une comparaison assez complète de Developer Works d'IBM.
http://www.ibm.com/developerworks/Java/library/os-tapestrywicket/index.html?ca=drs
Mise à jour: le lien est mort, mais vous pouvez trouver la page sur http://web.archive.org/web/20131011174338/http://www.ibm.com/developerworks/Java/library/os-tapestrywicket/index .html? ca = drs
Je pense que Wicket est un framework plus simple à utiliser.
De plus, Wicket permet le rechargement de classe via le système de remplacement par code à chaud de votre IDE. C'est tout ce qui est requis pour que Wicket puisse exécuter des versions modifiées des classes d'une application en cours d'exécution. Les restrictions habituelles s'appliquent au remplacement de code à chaud, telles que devoir s'exécuter en mode débogage (Eclipse) et ne pas être en mesure de modifier les aspects structurels d'une classe (c'est-à-dire le nom de la classe, la modification des signatures de méthode, etc.).
Je n'aime pas le modèle de programmation Tapestry et je connais de nombreux développeurs qui quittent Tapestry à cause de trop de changements et d'incompatibilités de développement. Voir: http://ptrthomas.wordpress.com/2009/09/14/perfbench-update-tapestry-5-and-grails/
Essayez http://incubator.Apache.org/click/ . C'est un framework Web Java étonnant. Certains l'appellent «Wicket made right» ;-)
Wicket est un très bon framework web. Le meilleur de tout ce que je sais. Je l'utilise depuis la version 1.3 et j'obtiens toujours ce que je veux. Wicket possède une excellente intégration avec Spring - utilisez simplement l'annotation @SpringBean dans votre code pour injecter n'importe quel bean printanier dans vos classes.
Comme je l'ai dit quand 4.1 était la version stable officielle:
Avant de vous engager, vous devriez jeter un coup d’œil sur l’historique du développement de Tapestry. Tapestry a effectué de nombreuses mises à niveau non compatibles sans poursuivre la prise en charge des versions antérieures. Les correctifs de la version 4.1 ne sont plus traités dans un délai raisonnable. À mon avis, cela n’est pas acceptable pour la version officielle stable.
S'engager à utiliser Tapestry 5 signifie:
vous devriez devenir un committer; vous devez suivre tous les nouveaux développements, abandonner les anciennes versions aussi rapidement que possible; conserver vous-même des versions stables.