Quels sont les avantages et les inconvénients des cadres Java web assortis? [fermé]
j'envisage de créer mon propre site Web en utilisant Java et j'essaie de décider quel framework utiliser. Cependant, faire une recherche rapide pour les cadres Java revient plus de 50 à choisir!
Mon site est aller juste pour mon propre plaisir de la construction au début, mais si elle devient populaire, il serait bon pour elle d'avoir une certaine évolutivité, ou au moins être en mesure de refonte.
Quelles sont les principales différences entre le plus populaire des cadres? Sont il des cas où l'on significativement surpasse 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.
Est-il quelqu'un qui a de l'expérience avec certains de ces cadres et pouvez faire une recommandation? Est-ce que le simple nombre de choix sert juste d'avertissement précoce pour éviter le développement web basé sur Java où possible?
24 réponses
j'ai utilisé Tapisserie 3 , de Guichet , Echo , et JSF assez largement. J'aimerais vraiment vous recommandons de les lires et de choisir celui qui semble le plus simple pour vous, et pour mieux s'adapter à la façon dont vous préférez travailler.
D'entre eux, le plus confortable pour moi de travailler avec était Wicket , en raison de la nature légère de la construction de composants et simplicité du modelage de la page. Cela va doublement si vous utilisez votre propre code db à la place de Hibernate ou un autre cadre (Je n'ai jamais été complètement heureux avec Wicket Hibernate ou intégration de ressort).
Echo est génial si vous ne vous gênez pas pour écrire toute votre mise en page en Java. Je sais que c'est différent maintenant, mais je pense toujours que le produit sert une niche assez étroite. Ils changent le modèle de développement avec chaque version majeure ainsi il semble.
Tapisserie est un bon produit, mais il est évidemment très différent des autres en termes de modèle de développement est principalement traduite par un mec. Howard Lewis Ship est sans doute très intelligent, mais je suis déçu de leur décision d'oublier la compatibilité avec chaque version. Encore une fois, Cependant, pour vos besoins cela peut ne pas avoir d'importance, et j'ai toujours trouvé les produits de tapisserie agréable à travailler contre.
JSF est disponible depuis des années, et se sent encore comme quelque chose qu'un Struts guy construit pour résoudre tous les problèmes de Struts. Sans vraiment comprendre tous les problèmes avec les entretoises. Il a encore une sensation inachevée à elle, bien que le produit soit évidemment très flexible. - Je l'utiliser et avoir une certaine tendresse pour elle, avec de grands espoirs pour son avenir. Je pense que la prochaine version (2.0) à être livrée en JEE6 va vraiment l'apporter à son compte, avec un nouvelle syntaxe de template (similaire à Facelets) et un modèle de Composant simplifié (composants personnalisés dans un seul fichier... enfin.)
et, bien sûr, il y a un million de cadres et d'outils plus petits qui obtiennent leur propre suite ( vélocité pour les besoins de base , raw JSPs , Struts, etc). Je préfère généralement les cadres orientés composants moi-même, cependant.
à la fin, je recommande juste de jeter un oeil à Tapestry, Wicket, et JSF et juste choisir celui qui se sent le mieux pour vous. Vous en trouverez probablement un qui s'adapte à la façon dont vous aimez travailler très rapidement.
mon préféré est le cadre à ressorts. Avec 2.5 ressort MVC est sooooo kick ass, avec de nouvelles annotations, la convention sur les fonctionnalités de configuration, etc.
si vous faites juste quelque chose de très simple, vous pouvez aussi essayer d'utiliser l'API Servlet régulière et ne pas vous embêter avec un framework.
je recommande le cadre orienté composants Wicket . Il vous permet d'écrire votre application web dans le vieux code Java simple, vous pouvez utiliser POJOs comme modèle pour tous les composants et n'ont pas besoin de jouer avec d'énormes fichiers de configuration XML.
j'avais développé avec succès une application bancaire en ligne avec Struts quand j'ai découvert Wicket et vu comment le développement d'application web peut être facile!
j'ai récemment commencé à utiliser le Stripes Framework . Si vous êtes à la recherche d'un framework basé sur les requêtes qui est vraiment facile à utiliser, mais qui n'impose aucune limite à ce que vous faites, je le recommande vivement.
c'est similaire à struts, mais ça va bien au-delà. Il y a même des projets de plugin qui vous permettent d'utiliser hibernate ou jpa avec très peu de configuration.
Il ya beaucoup de bons cadres sur j'ai entendu dire que wicket était bon aussi, mais je ne l'ai pas utilisé.
N'ont pas essayé moi-même, mais je pense que
http://www.playframework.org /
a beaucoup de potentiel...
venant de php et de classic asp, c'est le premier framework java web qui me semble prometteur....
mise à jour: Tapestry 5.2 est sorti, donc il n'est pas abandonné, comme il semblait l'être auparavant. Mon expérience est avec Tapestry 4, Pas 5, donc votre kilométrage peut varier. Mon avis de la Tapisserie a changé au fil des années; j'ai modifié ce post.
Je ne peux plus recommander Tapestry comme je l'ai fait auparavant. Tapestry 5 semble être une amélioration significative, mais mon principal problème avec Tapestry n'est pas avec la plate-forme elle-même, il est avec les gens derrière elle.
historiquement, chaque mise à jour majeure de Tapestry a rompu la compatibilité avec les préjugés extrêmes, bien plus qu'on pourrait s'y attendre. Ceci semble être dû à l'intégration de nouvelles techniques de codage ou de technologies qui nécessitent d'importantes réécrit.
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 Tapestry 4 expédié. De ce que je peux dire, Ship s'est assez dévoué à ça, laissant Tapestry 4 entre les mains d'autres contributeurs, qui je pense ne sont pas aussi capables que Ship. Après avoir fait le passage douloureux de la tapisserie 3 à la tapisserie 4, j'ai senti que j'avais été abandonnée presque immédiatement.
bien sûr, avec la sortie de Tapestry 5, Tapestry 4 est devenu un produit hérité. Je n'aurais pas de problème avec ça si le chemin de mise à jour n'était pas si brutale nouveau . Notre équipe de développement est donc dans une position peu enviable: nous pourrions continuer à utiliser une plate-forme web essentiellement abandonnée (Tapestry 4), Faire l'odieuse mise à niveau vers Tapestry 5, ou renoncer entièrement à Tapestry et réécrire notre application en utilisant une autre plate-forme. Aucune de ces options n'est très attrayante.
Tapestry 5 est censément écrit de manière à réduire la probabilité de rupture de mise à jour à partir de ce point. Bon exemple dans les classes de page: dans les incarnations précédentes, les classes de page descendaient d'une classe de base fournie par Tapestry; les changements D'API incompatibles dans cette classe étaient la cause d'un grand nombre de problèmes de rétrocompatibilité. Dans Tapestry 5, les pages sont des POJOs qui sont améliorés à l'exécution avec le "Magic Tapestry fairy dust" via des annotations. Ainsi, tant que le contrat pour les annotations est maintenu, les changements à Tapestry n'affecteront pas vos classes de page.
si c'est bien, alors écrire une nouvelle application en utilisant Tapestry 5 pourrait bien tourner. Mais personnellement, je n'ai pas envie de remettre ma main sur le brûleur.
clause de non-responsabilité: je travaille à Vaadin (auparavant Moulin)
si vous faites quelque chose RIAish, vous pourriez vouloir regarder Vaadin . C'est un framework AJAX open source orienté vers L'UI qui, pour moi, est agréable à utiliser (je viens d'un fond PHP moi-même).
il y a une étude de cas qui compare faire la même application (c.-à-d. deux applications avec le même ensemble de features) dans Icefaces et Vaadin. En résumé, il affirme que l'évolution de L'assurance-chômage a été beaucoup 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, bien que je ne puisse pas vous forcer à me croire.
après un long temps de tester diverses solutions, pour moi il s'est avéré être:
-
MVC à ressort pour la présentation et couche de contrôle (pas de flux de ressort cependant, parce que mes flux sont basés sur ajax)
-
jQuery pour tous les côté client trucs
-
Printemps de la Sécurité pour le bien, l'aspect " sécurité
-
hibernation / JPA2
-
Jetée pour l'amour de continuations (comet)
un mois d'une courbe d'apprentissage extraordinairement raide, mais maintenant je suis heureux.
je voudrais également mentionner que j'étais juste un petit pas loin de sauter tous ces trucs Java et apprendre Scala/LIFT à la place. En ce qui me concerne, tout en Java qui est lié à la pointe web développement (comet, communication async, sécurité oui, même avec la sécurité de printemps!)) est toujours un peu un hack (prouver que j'ai tort par des preuves, pleeease!). Pour moi, Scala / LIFT semble être une solution plus Out-of-the-box et tout-en-un.
la raison pour laquelle j'ai finalement décidé pas d'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 facile à trouver que les développeurs Scala
-
pour la plupart des développeurs de mon équipe, le concept funcional de Scala, aussi excellent soit-il, est difficile à comprendre
santé Er
j'ai aussi entendu de bonnes choses au sujet de la charpente du ressort. En général, cependant, j'ai été sous-impressionné par la plupart des cadres Web Java que j'ai regardé (struts esp).
pour une application simple, j'envisagerais certainement d'utiliser des servlets "raw" et des JSPs et je ne me soucierais pas d'adopter un framework. Si les servlets sont bien écrits, il devrait être simple à l'avenir de porter à un cadre si nécessaire lorsque l'application se développe dans la complexité.
je pense que pour vos besoins modestes, vous avez juste besoin de coder servlets ou pages JSP simples que vous pouvez servir à partir du serveur Tomcat. Je ne pense pas que vous avez besoin de tout type de web-framework (comme les struts) pour les données personnelles du 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 en plus. Voulez-vous utiliser MyFaces Tomahawk, Trinidad, Tobago ( http://myfaces.apache.org / )? Ou peut-être des glaces ( http://www.icefaces.org / )? Oh, Et si vous utilisez ICEfaces, utiliserez-vous JSPs ou Facelets pour vos vues?
À mon avis, c'est difficile à dire. Personne n'a le temps d'évaluer toutes les des alternatives prometteuses, du moins dans les projets sur lesquels je travaille, parce qu'elles ne sont pas assez grandes pour faire des phases d'évaluation de trois mois. Cependant, vous devriez chercher des gens qui ont une grande communauté active et qui ne sont pas partis depuis un an. JSF est là depuis un certain temps, et puisqu'il est poussé par le soleil, il sera là pour un peu plus. Je ne peux pas dire si c'est le meilleur choix, mais il sera un bon.
pour les sites à fort trafic, j'utiliserais un framework qui ne gère pas l'état client sur le serveur - Wicket, JSF et Tapestry gèrent l'état client sur le serveur. J'utiliserais seulement ces cadres (Wicket est mon préféré) si l'application devrait être plus comme une application de bureau. Mais j'essaierais d'utiliser une approche plus évolutive et simple REST+AJAX.
MVC printemps serait un candidat, mais depuis le printemps MVC 3 il a une annotation étrange programmation surchargée modèle qui n'utilise pas les avantages de la dactylographie statique. Il y a d'autres choses laides comme les paramètres de sortie dans les méthodes combinées avec un retour habituel, donc il y a deux canaux de sortie d'une méthode. Le ressort MVC a aussi tendance à empêcher la roue et vous aurez plus à configurer que d'autres cadres. Je ne peux pas vraiment recommander MVC printemps bien qu'il ait quelques belles idées.
Grails est un moyen pratique d'utiliser printemps MVC et d'autres cadres établis comme hibernation. Le codage est amusant et vous verrez rapidement les résultats.
et n'oubliez pas que L'API Servlet avec quelques petits helpers comme FreeMarker for templating est très puissante.
j'ai évalué pas mal de cadres et de Vaadin ( http://vaadin.com/home ) a percolé jusqu'au sommet.
vous devriez au moins lui donner une brève évaluation.
santé!
mon choix serait Wicket (pour les grands projets et une base d'utilisateurs prévisible), GWT (pour les grands projets qui sont la plupart faisant face au public) ou tout simplement un cadre de service (comme Jersey/ JAXRS) avec une boîte à outils JavaScript (pour les projets de petite à moyenne taille).
je recommande Couture, surtout si vous avez besoin de persistance.
voir quelques commentaires sur certains cadres D'application Java (deuxième paragraphe):
http://swiss-knife.blogspot.com/2009/11/some-java-application-servers.html
pour quick and fancy GUI vous pouvez utiliser JSF avec Richfaces bibliothèque. Les composants D'interface Richfaces sont faciles à utiliser et des références pratiques sont disponibles avec une démonstration de code dans le site de démonstration. Probablement plus tard quand votre site a plus de données à traiter et beaucoup d'informations doivent être traitées dans la base de données, vous pouvez brancher n'importe quel cadre d'accès à la base de données (ORM) avec elle.
ma méthode préférée pour les applications vraiment simples est Apache VelocityTools (VelocityLayoutServlet) avec Velosurf ( http://velosurf.sourceforge.net ).
pour les applications plus complexes, MVC printemps ou Struts 2.
essayez HybridJava - c'est beaucoup plus simple que tout le reste.