Avantages et inconvénients de diverses technologies de couche de présentation Web Java

StackOverflow https://stackoverflow.com/questions/538550

Question

Je travaille actuellement sur une application Web qui utilise fortement le JSF et les glaces. Nous avons eu quelques discussions sur le passage à une autre couche de présentation, et j'ai pensé que je prendrais la discussion dans SO et voir ce que les experts pensent.

Je suis curieux de savoir si quelqu'un pouvait peser sur les avantages et les inconvénients des différentes technologies de couche de présentation Java. Si vous n'avez travaillé avec un seul, dites pourquoi vous l'aimez ou le détestez. Si vous avez travaillé avec plusieurs, donnez vos impressions sur la façon dont ils s'accumulent les uns contre les autres.

Nos technologies à l'étude sont:

  • Glace
  • JSF (sans glace)
  • GWT (Google Web Toolkit)
  • Guichet
  • Tapisserie

Et si je manque quelque chose de ma liste, faites-le moi savoir.

Merci!

Était-ce utile?

La solution

Mes opinions sont assez biaisées vers le guichet parce que je l'utilise depuis un certain temps après avoir trébuché sur des mines JSP beaucoup trop de fois.

PROS PROSEMENTS:

  • True séparation de la mise en page et du code.
  • Basés sur les composants, ce qui signifie une réutilisabilité élevée des éléments du site; Par exemple, vous pouvez créer une forme Prettified avec des styles d'étiquetage automatique et CSS et tout et simplement en changeant son objet DAO dans le constructeur du composant, il est complètement réutilisable dans un autre projet.
  • Excellente prise en charge pour des choses comme Ajax, Portlets et divers cadres en général directement hors de la boîte et, plus important encore, il ne dépend de rien d'autre que SLF4J / LOG4J pour fonctionner, tout est facultatif!

Consieur du guichet:

  • Le développement a une certaine confusion sur les choses en général et les génériques de guichets sont un peu en désordre, bien qu'ils aient été beaucoup nettoyés en 1.4
  • Certains composants (comme Form.onSubmit()) nécessitent une sous-classe approfondie ou une méthode anonyme sous-estimée pour injecter facilement le comportement. Cela est dû en partie à la puissante conception d'événements de Wicket, mais malheureusement, cela signifie également qu'il est facile de faire un désordre de code avec le guichet.

Consients aléatoires: (c'est-à-dire que je n'ai pas utilisé mais ce sont mes opionsons et / ou des choses que j'ai entendues)

  • GWT est basé sur JavaScript qui me semble stupide. Le principal problème est qu'il me rappelle trop de JSP: S et ses classes autoogénérées qui sont horribles.
  • Tapestry ne sépare pas correctement le balisage et le code d'une manière qui pourrait être facilement validée entre les deux qui causeront des problèmes à l'avenir.

Autres conseils

J'ai utilisé GWT pour quelques petits projets. Voici quelques choses que j'aime:

  1. C'est ajax par défaut, donc je n'ai pas eu à Fabriquer Il fait de l'Ajax, il vient de venir en utilisant GWT.
  2. Il a une bonne séparation du code client par rapport au côté serveur.
  3. Je peux tester unité mon code client en utilisant JUnit
  4. Il vous permet de construire des applications nettes et accrocheuses, en grande partie parce que c'est Ajax.

Des choses que je n'aime pas:

  1. Certaines choses ne fonctionnent pas comme prévu. Par exemple, j'ai vu des cas où les événements de clic n'ont pas tiré comme prévu, j'ai donc dû faire une solution de contournement.
  2. Le déploiement automatique à Tomcat fonctionnant dans Eclipse cesse parfois de fonctionner, et je n'ai jamais pu comprendre pourquoi.

La plus grande question que je poserais est de savoir pourquoi changez-vous la couche de présentation? C'est un coût très cher et je peux voir les avantages d'une technologie l'emporter sur les autres autant que le coût de changement ...

Bref:

= Jsf =

AVANTAGES:

  • Architecture des composants;
  • de nombreuses bibliothèques et outils;
  • Support IDE un peu bon

LES INCONVÉNIENTS:

  • poids lourd, à la fois en processeur / mémoire et courbe d'apprentissage;
  • Quand quelque chose ne fonctionne pas comme prévu, il est difficile de déboguer

= Guichet =

AVANTAGES:

  • poids léger;
  • Système de modèles sensé;
  • bons tutoriels;

LES INCONVÉNIENTS:

  • La documentation de référence n'est pas aussi bien organisée et profonde que les tutoriels;
  • L'équipe de développement a eu de graves difficultés, en particulier lors du fait de devenir un projet incubé. Cela a conduit à la confusion sur des aspects importants du cadre, à ce moment-là, je devais passer à un autre cadre à cause de cela ...

Qu'en est-il de Rayures?

Mon choix serait Guichet. L'ont utilisé et donne une excellente réutilisabilité. Il a l'une des liste de forum / de diffusion les plus dynamiques. En tant que question et il sera répondu en quelques minutes. Il a un excellent soutien pour l'Ajax. L'un des inconvénients habituels attribués au guichet est la courbe d'apprentissage abrupte. Eh bien, c'était l'un des inconvénients de la vieillesse qui ne détiennent plus de valeur maintenant.

JSF: Mieux vaut rester à l'écart. Une autre équipe qui a développé un projet sur JSF pense maintenant à passer à un guichet après notre succès avec elle.

@Megadix: Comme vous l'avez dit, la documentation était médiocre au début, mais pas plus. Il y a un excellent livre intitulé Wicket in Action écrit par les développeurs de Wicket. L'exemple de code fourni sur le site est également un bon point de départ et d'apprentissage

Je me demanderais si vous avez une couche de service distincte du client Web, ce que les contrôleurs Web invoquent simplement pour faire leur travail.

Si vous le faites, le choix de la technologie d'interface utilisateur Web peut être découplé de l'arrière. S'il est exposé en tant que service Web Contract First, vous pouvez faire partager différentes applications. Tant que vos clients peuvent envoyer et recevoir du XML, ils peuvent interagir avec vos services. Vous voulez passer à Flex? Pas de soucis - pointez-le au service et rendez la réponse XML.

Voir ma comparaison du guichet et de la tapisserie 5: Différence entre Apache Tapestry et Apache Wicket.

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