Question

J'envisage de créer mon propre site Web en utilisant Java et j'essaie de décider quel framework utiliser.Cependant, une recherche rapide de frameworks Java donne plus de 50 choix !

Mon site Web sera juste pour mon propre plaisir de le créer au début, mais s'il devient populaire, ce serait bien qu'il ait une certaine évolutivité, ou au moins qu'il puisse être repensé pour cela.

Quelles sont les principales différences entre les frameworks les plus populaires ?Y a-t-il des cas où l’un surpasse considérablement les autres ?Par exemple, les applications d'entreprise à fort trafic par rapport aux petites applications à faible trafic.Je me demande également si certains sont beaucoup plus faciles à apprendre et à utiliser que d'autres.

Y a-t-il quelqu'un qui a de l'expérience avec certains de ces frameworks et qui peut faire une recommandation ?Le grand nombre de choix sert-il simplement d’avertissement précoce pour éviter le développement Web basé sur Java lorsque cela est possible ?

Était-ce utile?

La solution

j'ai utilisé Tapisserie 3, Guichet, Écho, et JSF assez largement.Je vous recommande vraiment de les examiner et de choisir celui qui vous semble le plus simple et qui correspond le mieux à votre façon de travailler.

Parmi eux, le plus confortable avec lequel travailler était Guichet, en raison de la nature légère de la création de composants et de la simplicité des modèles de page.Cela est doublement vrai si vous utilisez votre propre code de base de données au lieu d'Hibernate ou d'un autre framework (je n'ai jamais été complètement satisfait de Wicket Hibernate ou de Spring Integration).

Écho est génial si cela ne vous dérange pas d'écrire toute votre mise en page en Java.Je sais que c’est différent maintenant, mais je pense toujours que ce produit dessert un créneau assez restreint.Il semble également qu’ils changent le modèle de développement à chaque version majeure.

Tapisserie est un excellent produit, mais il est évidemment très différent des autres en termes de modèle de développement car il est dirigé principalement par un seul mec.Howard Lewis Ship est sans aucun doute assez intelligent, mais je suis déçu de leur décision d'oublier la rétrocompatibilité avec chaque version.Encore une fois, cependant, pour vos besoins, cela n'a peut-être pas d'importance, et j'ai toujours trouvé les produits Tapestry agréables à utiliser.

JSF est sorti depuis des années et ressemble toujours à quelque chose qu'un Jambes de force gars conçu pour résoudre tous les problèmes de Struts.Sans vraiment comprendre tous les problèmes de Struts.Il a toujours un aspect inachevé, même si le produit est évidemment très flexible.Je l'utilise et j'en ai une certaine affection, avec de grands espoirs pour son avenir.Je pense que la prochaine version (2.0) qui sera livrée en JEE6 lui donnera vraiment tout son sens, avec une nouvelle syntaxe de modèle (similaire à Facelets) et un modèle de composant simplifié (composants personnalisés dans 1 seul fichier...enfin).

Et bien sûr, il existe un million de frameworks et d’outils plus petits qui ont leur propre public (Rapidité pour les besoins de base, brut JSP, jambes de force, etc.).Cependant, je préfère généralement moi-même les frameworks orientés composants.

En fin de compte, je vous recommande de jeter un œil à Tapestry, Wicket et JSF et de choisir celui qui vous convient le mieux.Vous en trouverez probablement très rapidement un qui correspond parfaitement à votre façon de travailler.

Autres conseils

Mon préféré est le Spring Framework.Avec 2.5 Spring MVC est tellement génial, avec de nouvelles annotations, des conventions sur les fonctionnalités de configuration, etc.

Si vous faites simplement quelque chose de très simple, vous pouvez également essayer d'utiliser l'API Servlet standard sans vous soucier d'un framework.

Je recommande le orienté composant Guichet cadre.Il vous permet d'écrire votre application Web dans du vieux code Java, vous pouvez utiliser des POJO comme modèle pour tous les composants et vous n'avez pas besoin de vous embêter avec d'énormes fichiers de configuration XML.

J'avais développé avec succès une application bancaire en ligne avec Struts lorsque j'ai découvert Wicket et constaté à quel point le développement d'applications Web peut être simple !

J'ai récemment commencé à utiliser le Cadre à rayures.Si vous recherchez un framework basé sur des requêtes qui est vraiment facile à utiliser, mais qui n'impose aucune limite à ce que vous faites, je le recommande vivement.

C'est similaire aux jambes de force, mais cela va bien au-delà.Il existe même des projets de plugins qui vous permettent d'utiliser hibernate ou jpa avec très peu de configuration.

Il existe de nombreux bons frameworks, même si j'ai entendu dire que Wicket était également un bon framework, mais je ne l'ai pas utilisé.

Je ne l'ai pas essayé moi-même, mais je pense

http://www.playframework.org/

a beaucoup de potentiel...

venant de php et d'asp classique, c'est le premier framework web java qui me semble prometteur....

MISE À JOUR:Tapestry 5.2 est sorti, il n'est donc pas abandonné, comme cela semblait l'être auparavant.Mon expérience concerne Tapestry 4, et non 5, votre kilométrage peut donc varier.Mon opinion sur Tapestry a changé au fil des années ;J'ai modifié ce message pour le refléter.

Je ne peux plus recommander Tapestry comme je le faisais auparavant.Tapestry 5 semble être une amélioration significative, mais mon principal problème avec Tapestry ne concerne pas la plate-forme elle-même ;c'est avec les gens derrière tout ça.

Historiquement, chaque mise à jour majeure de Tapestry a rompu la rétrocompatibilité avec des préjugés extrêmes, bien plus que ce à quoi on pourrait s'attendre.Cela semble être dû à l’incorporation de nouvelles techniques ou technologies de codage nécessitant des réécritures importantes.

Howard Lewis Ship (l'auteur principal de Tapestry) est certainement un brillant développeur, mais je ne peux pas dire que je me soucie de sa gestion du projet Tapestry.Le développement de Tapestry 5 a commencé presque immédiatement après la livraison de Tapestry 4.D'après ce que je peux dire, Ship s'est consacré à cela, laissant Tapestry 4 entre les mains d'autres contributeurs, qui, à mon avis, ne sont pas aussi capables que Ship.Après avoir effectué le passage douloureux de Tapestry 3 à Tapestry 4, j'ai eu le sentiment d'avoir été abandonné presque immédiatement.

Bien entendu, avec la sortie de Tapestry 5, Tapestry 4 est devenu un produit hérité.Cela ne me poserait aucun problème si le chemin de mise à niveau n'était pas si brutal encore.Alors maintenant, notre équipe de développement se trouve dans une position plutôt peu enviable :Nous pourrions continuer à utiliser une plate-forme Web essentiellement abandonnée (Tapestry 4), effectuer la mise à niveau odieuse vers Tapestry 5, ou abandonner complètement Tapestry et réécrire notre application en utilisant une autre plate-forme.Aucune de ces options n’est très attractive.

Tapestry 5 est censé être écrit de manière à réduire le risque de panne de mise à jour à partir de maintenant.Un bon exemple est dans les classes de page :dans les incarnations précédentes, les classes de pages descendaient d'une classe de base fournie par Tapestry ;Les changements d'API incompatibles dans cette classe étaient à l'origine d'un grand nombre de problèmes de compatibilité ascendante.Dans Tapestry 5, les pages sont des POJO qui sont améliorés lors de l'exécution avec la "poussière de fée magique Tapestry" via des annotations.Ainsi, tant que le contrat pour les annotations est maintenu, les modifications apportées à Tapestry n'affecteront pas vos classes de pages.

Si tel est le cas, l'écriture d'une nouvelle application à l'aide de Tapestry 5 pourrait s'avérer efficace.Mais personnellement, je n’ai pas envie de remettre la main sur le brûleur.

Avertissement :Je travaille chez Vaadin (anciennement IT Mill)

Si vous faites quelque chose de RIAish, vous voudrez peut-être jeter un œil à Vaadin.Il s’agit d’un framework AJAX open source orienté interface utilisateur qui, pour moi, est agréable à utiliser (je viens moi-même d’un milieu PHP).

Il y a un étude de cas qui compare le fait de faire la même application (c'est-à-diredeux applications avec le même ensemble de fonctionnalités) dans Icefaces et Vaadin.En un mot, il indique que le développement de l’interface utilisateur a été considérablement plus rapide.

Même si l'étude est hébergée sur le wiki de l'entreprise, je peux vous assurer qu'elle est objective, authentique et véridique, même si je ne peux pas vous forcer à me croire.

Après avoir longuement testé diverses solutions, il s'est avéré pour moi que c'était :

  • Spring MVC pour la présentation et la couche de contrôleur (pas de spring webflow cependant, car mes flux sont basés sur Ajax)

  • jQuery pour tous les trucs côté client

  • Spring Security pour l'aspect sécurité

  • Hiberner / JPA2

  • Jetée pour le bien des continuations (comète)

Un mois d’apprentissage extraordinairement raide, mais maintenant je suis heureux.

Je voudrais également mentionner que j'étais sur le point de sauter tous ces trucs Java et d'apprendre Scala/LIFT à la place.En ce qui me concerne, tout ce qui en Java est lié au développement web de pointe (comet, communication asynchrone, sécurité (oui, même avec Spring Security !)) est encore un peu un hack (prouvez-moi du contraire par des preuves, s'il vous plaît !).Pour moi, Scala/LIFT semble être une solution plus prête à l'emploi et tout-en-un.

La raison pour laquelle j'ai finalement décidé pas aller avec Scala est

  • en tant que chef de projet, je dois considérer les ressources humaines et les développeurs Java sont beaucoup plus faciles à trouver que les développeurs Scala

  • pour la plupart des développeurs de mon équipe, le concept fonctionnel de Scala, aussi excellent soit-il, est difficile à comprendre

À votre santé Er

J'ai également entendu de bonnes choses à propos du Spring Framework.En général, cependant, j'ai été déçu par la plupart des frameworks Web Java que j'ai consultés (en particulier Struts).

Pour une application simple, j'envisagerais certainement d'utiliser des servlets et des JSP "bruts" sans me soucier de l'adoption d'un framework.Si les servlets sont bien écrits, il devrait être simple à l'avenir de les porter vers un framework si nécessaire lorsque l'application devient de plus en plus complexe.

Mon choix est Wicket !!

Tous - c'est le problème ;-)

Je pense que pour vos modestes besoins, il vous suffit de coder des servlets ou de simples pages jsp que vous pouvez servir à partir du serveur Tomcat.Je ne pense pas que vous ayez besoin d'un framework Web (comme Struts) pour les données personnelles d'un site Web.

Dire "utiliser JSF" est un peu trop simple.Lorsque vous décidez d'utiliser JSF, vous devez choisir une bibliothèque de composants par-dessus.Utiliserez-vous MyFaces Tomahawk, Trinité, Tobago (http://myfaces.apache.org/) ?Ou peut-être ICEfaces (http://www.icefaces.org/) ?Oh, et si vous utilisez ICEfaces, utiliserez-vous des JSP ou des Facelets pour vos vues ?

À mon avis, c'est trop difficile à dire.Personne n'a le temps d'évaluer toutes les alternatives prometteuses, du moins dans les projets sur lesquels je travaille, car ils ne sont pas assez grands pour faire des phases d'évaluation de trois mois.Cependant, vous devriez en rechercher certains qui ont une communauté importante et active et qui n’ont pas disparu depuis un an.JSF existe depuis un certain temps, et comme il est poussé par le soleil, il le sera encore encore.Je ne peux pas dire si c'est le meilleur choix, mais ce sera le bon.

http://zkoss.org - le bon

Pour les sites à fort trafic, j'utiliserais un framework qui ne gère pas l'état du client sur le serveur - Wicket, JSF et Tapestry gèrent l'état du client sur le serveur.Je n'utiliserais ces frameworks (Wicket est mon préféré) que si l'application devait ressembler davantage à une application de bureau.Mais j’essaierais cependant d’utiliser une approche REST+AJAX plus évolutive et plus simple.

Spring MVC serait un candidat, mais depuis Spring MVC 3, il possède un étrange modèle de programmation surchargé d'annotations qui n'utilise pas les avantages du typage statique.Il y a d'autres choses laides comme les paramètres de sortie dans les méthodes combinées avec un retour habituel, il y a donc deux canaux de sortie d'une méthode.Spring MVC a également tendance à réinventer la roue et vous aurez plus à configurer par rapport aux autres frameworks.Je ne peux pas vraiment recommander Spring MVC même s'il contient de bonnes idées.

Grails est un moyen pratique d'utiliser Spring MVC et d'autres frameworks établis comme Hibernate.Le codage est amusant et vous verrez rapidement des résultats.

Et n'oubliez pas que l'API Servlet avec quelques petites aides comme FreeMarker pour les modèles est très puissante.

J'ai évalué pas mal de frameworks et Vaadin (http://vaadin.com/home) s’est infiltré jusqu’au sommet.

Vous devriez au moins lui donner une brève évaluation.

Acclamations!

Mon choix serait Wicket (pour les grands projets et une base d'utilisateurs prévisible), GWT (pour les grands projets qui sont principalement destinés au public) ou simplement un cadre de service (comme Jersey/JAXRS) avec une boîte à outils JavaScript (pour les petits et moyens projets) .

Je recommande Seam, surtout si vous avez besoin de persévérance.

Voir quelques commentaires sur certains frameworks d'applications Java (deuxième paragraphe) :

http://swiss-knife.blogspot.com/2009/11/some-java-application-servers.html

Pour rapide et raffiné Interface graphique avec laquelle vous pouvez utiliser JSF Visages riches bibliothèque.Les composants de l'interface utilisateur Richfaces sont faciles à utiliser et des références pratiques sont disponibles avec une démonstration de code sur le site de démonstration.Probablement plus tard, lorsque votre site aura plus de données à gérer et que de nombreuses informations devront être traitées dans la base de données, vous pourrez y connecter n'importe quel cadre d'accès à la base de données (ORM).

Je ne peux pas croire que personne n'ait mentionné GWT

Ma solution préférée pour les applications vraiment simples est Apache VelocityTools (VelocityLayoutServlet) avec Velosurf (http://velosurf.sourceforge.net).

Pour les applications plus complexes, Spring MVC ou Struts 2.

Essayez HybridJava – c'est beaucoup plus simple qu'autre chose.

je dirais vaadin ou guichet

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