Question

Je débattant si vous souhaitez utiliser Seam, Wicket, JSF ou GWT comme base de ma couche de présentation dans un projet Java.

Je plissant ma sélection de cadres Java Web jusqu'à ce sous-ensemble basé sur des considérations du marché du travail, la nouveauté de la technologie et des recommandations d'autres S.O. utilisateurs.

Quels sont les facteurs dois-je prendre en considération pour décider parmi ceux-ci?

Était-ce utile?

La solution

Le seul de ceux que je l'ai utilisé est JSF, je ne vais pas être en mesure de vous donner des commentaires sur les autres, mais voici mon avis sur JSF. Dans mon expérience, la minute nous avons converti de JSF en JSP JSF dans facelets, la vie est devenue beaucoup plus facile, donc je vais concentrer autour facelets. De plus, il semble que Seam et JSF ne sont pas mutuellement exclusifs.

Avantages:

  • Création facelets composants xhtml est simple, ce qui favorise la réutilisation.
  • capacités de matriçage décent en utilisant construit dans les balises comme ui: insert, ui: inclure, et ui: décorer
  • Accès facile aux haricots printemps à visages-config
  • XHTML basé afin que les développeurs web peu familiers avec Java peuvent encore être efficaces
  • bonne bibliothèque widget disponible dans Tomahawk / trinidad

Moins:

  • Publier des demandes seulement. Cela peut rendre difficile bookmarking.
  • Pas aussi intégré ajax-y comme GWT, mais cela peut être fixé si elle est utilisée avec Seam

Je ne suis absolument pas un expert en JSF / Facelets, donc je suis sûr qu'il y en a d'autres, je l'ai raté. Espérons que quelqu'un d'autre va également élaborer.

Mise à jour pour JSF 2.0:

Autres conseils

Je l'ai utilisé GWT depuis la version 1.4 et JSF depuis la spécification 2.0 est sorti.

GWT est un cadre côté client, il génère JavaScript à partir de Java. Votre architecture serait un pur client-serveur, ce qui signifie:

  • Il vaut mieux utiliser des services à gros grains
  • Tous les objets qui se déplacent sur le côté client doit être pleinement sérialisable (cela signifie qu'il n'y a pas de charge paresseux, ou un motif de OpenSessionInView)
  • Depuis GWT 2.0, vous pouvez concevoir votre interface en utilisant xhtml, ce qui est beaucoup plus facile en ce qui concerne le style et HTML structurant
  • GWT tend à favoriser une bonne architecture, si vous gâcher ce sera mauvais à refactorisons
  • Perfect Histoire, vous avez probablement à rouler vos propres, bien qu'il soit facile de pirater quelque chose avant droit vers le haut (le bouton retour du navigateur, urls Bookmarkable) support est dur

JSF est un cadre à base de composants, avec un design de vue-première (code-behind si vous le souhaitez):

  • Il est plus facile de faire un certain type de webapps (stateful, comme panier)
  • JSF + Seam ont suport pour les conversations (pensez pages assistant qui maintiennent l'état sur plusieurs pages)
  • Vous peut mettre en œuvre OpenSessionInView, en fonction de votre pile. Il est probablement pas recommandé si vous utilisez EJB pour le service / couche d'affaires
  • JSF2 a superbe soutien à AJAX et avec une suite de composants comme RichFaces vous pouvez construire de belles webapps
    • Mais si vous voulez un comportement javascript exquis, vous devez écrire javascript
  • JSF suit l'état actuel de l'interface utilisateur dans le client ou côté serveur. Ceci est un compromis entre le trafic réseau ou la mémoire du serveur.

Reprise:

  • GWT est plus adéquat pour le Web Applications (pensez gmail) qui exigent les meilleures performances côté client. Il est facile d'écrire des composants personnalisés (vous écrivez Java) et depuis votre côté serveur est juste une couche de service, vous pouvez être totalement sans état sur le côté serveur.
  • JSF est plus approprié pour les applications principalement CRUD qui sont mieux adaptés pour des choses orientée composants: pensez un hôtel / vol système de réservation, une boutique en ligne avec un panier d'achat, etc

Merci les gars pour Wicket en restant sobre et en gardant au cours de cette discussion. Je suis un utilisateur de portillons ou je l'aime. Mes principales raisons sont les suivantes:

  1. Son un __gVirt_NP_NN_NNPS<__ cadre de composants. J'aime travailler avec des composants, par opposition à des pages entières.
  2. Je peux laisser les concepteurs de travailler sur les modèles et les pages que je travaille sur les parties java

  3. Il n'y a rien de nouveau à apprendre. Son "juste java et juste HTML"

  4. J'aime son mécanisme ajax Fallback. Lorsqu'il n'y a pas de support javascript sur un navigateur en particulier sur les appareils mobiles, il revient à la version HTML brut et tout fonctionne.
  5. Son manque de configuration XML est un plus
  6. Il prend en charge tout ce que je voudrais dans une application Web. validation par exemple, l'internationalisation, le soutien et le bouton retour URL reposant entre autres

Mon expérience est GWT et JSF 1.0

Seam est un cadre d'application, pas vraiment une couche de présentation. Il a été développé à l'origine pour faire JSF moins douloureux, mais a évolué dans un cadre de fin d'injection de dépendance plus générale.

Je crois que vous pouvez utiliser avec JSF Seam, Wicket et GWT. le soutien JSF est primaire et excellente; Je ne sais pas comment les deux autres sont pris en charge.

Depuis la mise au point de vos critères semblent être les possibilités de commercialisation de vos compétences, je vous suggère d'essayer Seam et JSF via Facelets. JSF est une norme bien acceptée et est réellement agréable à utiliser si vous utilisez Facelets. Vous pouvez avoir des fonctionnalités AJAX et lisse via RichFaces Ajax4jsf. Seam est plus ou moins standardisées par le PCE.

Mon expérience est, dans l'ordre chronologique:

servlets Raw - (! Oui, beaucoup de travail dur, mais il était le début et nous étions zélés)

JSP - Je pensais que c'était Neez Beez au moment où il est sorti (si nous ne savions;))

Echo - cadre impressionnant, mais pas pour les pages qui doivent être les moteurs de recherche (même problème avec GWT)

Wicket - cadre impressionnant - les développeurs comprennent bien le concept de OO (contrairement à JSP et bien d'autres) et ont appliqué toutes les subtilités habituelles OO à ce cadre. Si vous appréciez « réutilisabilité », si vous appréciez l'encapsulation, si vous appréciez la séparation des préoccupations et si vous voulez lier votre modèle au code de l'interface utilisateur sans avoir à se soucier de triage d'objets et d'autres laideur, alors c'est le cadre pour vous!

Dans un scénario à long terme, je vous recommande d'utiliser des technologies soutenues par une spécification du Soleil. Cela a prouvé jusqu'à présent pour donner de multiples implémentations résultant dans le choix (souvent aussi des implémentations open source), ainsi que le comportement a tendance à être très bien défini.

Cela vous aidera dans un scénario de maintenance, qui - nous l'espérons - votre code finira aussi dans le temps. Code bien écrit vit toujours:)

Dans ce scénario particulier, je suggère JSF. Je n'ai essayé la mise en œuvre Apache 1.1, mais il de mal à être au-dessus de JSP. Nous devons revoir bientôt - je pense à regarder en ayant JSF sur facelets

.

Je l'ai utilisé Wicket et GWT assez fortement. Jamais vraiment appris à aimer Wicket.

Mon ego blog à ce sujet http://salk31.blogspot.com/ 2009/07 / guichet-ajax.html

En regardant uiBinder GWT 2.0 aujourd'hui m'a rappelé combien il était ennuyeux à Wicket devoir correspondre à l'arborescence des composants XML avec celui créé en Java. Le spin GWT sur cela semble bien meilleure pour moi.

Je n'ai pas utilisé Wicket depuis plus d'un an alors peut-être qu'ils ont fixé beaucoup de cela, mais étant donné navigateur moderne et le soutien JS je ne peux pas voir le point de faire tout cela sur le serveur (je sais, je sais données localité).

Si l'on considère que le marché de l'emploi, vous devez choisir JSF. Mais, je belive que l'avenir de l'AIR appartient à GWT et GWT comme les technologies côté client.

Je pense que la hausse la plus évidente de GWT, il est préférable que les technologies de échelonnable couche de présentation côté serveur tels que JSF, guichet. Parce que, serveur n'a pas besoin de stocker l'état du client et la puissance cpu client sont également utilisés aussi .. Il est un avantage énorme, vous ne avez pas besoin de sérialisation état client entre les ordinateurs serveurs à achive système à tolérance de panne.

Je sais qu'il est un peu tard, mais il y a déjà beaucoup de comparaison sur Framewrok, espcially celui-ci, Wich est survenue durinf Devox 2010 conf:

http://www.devoxx.com/display/Devoxx2K10/ En comparant + JVM + Web + cadres

Cela devrait vous aider à choisir:)

J'ai commencé avec JSF (1.1 et 1.2) et il était si douloureux que j'ai décidé de changer dans les prochains projets. Je fait des recherches sur un peu et j'ai décidé d'essayer Wicket, et ce fut donc un plaisir. Aussi j'ai essayé JSF 2, mais est toujours la même chose.

Les deux sont des cadres de composants, mais les choses avec Wicket sont faciles alors que JSF sont un désordre complet.

Wicket sur JSF:

  • Dans Wicket HTML sont HTML. JSF a ses propres balises de balisage. Le h: dataTable (pour les tables) est un non-sens. Croyez-moi, les ingénieurs de Sun devait être ivre quand conçue.
  • Dans les choses Wicket comme la sécurité,
  • Avec JSF la barre de navigation affiche l'URL précédente. Vraiment bizarre.
  • JSF me semble très lourd, et avec les bibliothèques comme Rich ou Prime encore plus.
  • Parfois, il semble impossible de savoir ce qui se passe. On finit toujours par crier à votre ordinateur parce que vous ne savez pas pourquoi JSF est en train de faire.

JSF sur Wicket:

  • Dans Wicket vous allez écrire plus Java (la liaison avec le langage HTML). Au moins, votre IDE fournira un soutien de refactoring et de validation.
  • Gestion des ressources en Wicket est un peu délicat.
  • Il y a beaucoup plus de documentation et de soutien pour JSF

Un défaut commun est que la taille de la session est sont le problème (parce que les composants graphiques sont stockés là-bas).

Dans l'ensemble, si vous devez décider seulement entre Wicket et JSF, il ne doute pas pour moi, Wicket .

JSF est dépréciée (JSF est même pas répertorié comme un cadre pour comparer quand évangélisateurs comparer ou parler de frameworks web en 2010).

Maintenant plein Fledge applications à grande échelle sont créées en utilisant GWT, YUI, JQuery etc.

Lisez quelques articles sur Google et ci-dessus sera évidente.

(tous les emplois sur JSF doivent soutenir les applications existantes).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top