Java EE 6 vs. Spring 3 stack [fermé]

je commence un nouveau projet. Je dois choisir les technologies. J'ai besoin de quelque chose de léger, donc pas D'EJB ou de couture. D'un autre côté, j'ai besoin de JPA (hibernation ou alternative) et de JSF avec des IceFaces.

pensez-vous qu'une telle pile sur le Spring 3 déployée sur Tomcat soit un bon choix? Ou une application Web Java EE 6 pourrait être mieux? J'ai bien peur que Java EE 6 soit une nouvelle technologie, pas encore bien documentée. Tomcat semble plus facile à entretenir que Glassfish 3.

Qu'en pensez-vous? Avez-vous des expériences?

87
demandé sur Piotr Nowicki 2010-03-23 14:09:34
la source

16 ответов

j'ai besoin de quelque chose de léger, donc pas D'EJB ou de couture.

voulez-vous expliquer ce qui rend EJBs lourd depuis EJB3? Tu te rends compte que nous ne sommes plus en 2004? Je voudrais vraiment lire votre définition de la lumière et vos arguments (et je vais mettre à jour ma réponse avec plaisir parce que je suis assez sûr que j'aurais quelques choses solides à dire).

d'un autre côté j'ai besoin de JPA (Hibernation ou alternative) et JSF avec des IceFaces.

Java EE 6 Web Profile which includes JSF 2.0, JPA 2.0, Bean Validation, EJB 3.1 Lite, CDI,... serait parfait pour cela et vous pouvez utiliser profil Web de GlassFish v3 pour exécuter une application construite avec le profil Web Java EE 6.

pensez-vous qu'une telle pile au printemps 3 déployée sur Tomcat soit un bon choix? Ou une application Web Java EE 6 pourrait de mieux?

eh Bien, je comme l'idée d'exécuter mon code sur une non-propriétaire "plate-forme de 1519220920" (Java EE) plutôt que sur un propriétaire "conteneur 1519220920" (le Printemps). Et je pense que Java EE 6 est assez bon (et c'est un euphémisme, EJB 3.1 (Lite), JPA 2.0, JSF 2.0, CDI kick ass). Notez que j'étais un sceptique JSF mais j'ai regardé à nouveau et JSF 2.0 avec le CDI est tellement différent que je ne peux même pas comparer. Et si vous n'avez pas regardé le CDI, laissez-moi vous dire qu'il déchire.

je crains que Java EE 6 soit une nouvelle technologie, pas encore bien documentée.

Java EE semble assez bien documenté pour moi. Cela sonne comme gratuit demande. Et, croyez-moi ou non, i commencent à trouver le printemps se complique tandis que Java EE devient plus facile.

Tomcat semble plus facile à entretenir que Glassfish 3.

avez-vous essayé quelque chose? Avez-vous rencontré des problème particulier? Encore une fois, cela ressemble à une revendication libre.

101
répondu Pascal Thivent 2013-04-14 13:34:06
la source

Je n'ai pas utilisé Javae6.

cependant, j'ai été assez malmené par toutes les versions précédentes de JavaEE et EJB que je ne lui ferai pas confiance jusqu'à ce qu'il s'établisse comme la norme de facto, pas seulement la norme de jure. Pour l'instant, le ressort reste la norme de facto.

dupe-moi une fois, honte à toi. Fool moi deux fois, honte sur moi. Trompe-moi trois fois, EJB.

certains diront que le printemps est propriétaire. Je dirais que les implémentations des fournisseurs des spécifications JavaEE ont été tout aussi propriétaires, Si ce n'est plus.

je suis passé par une conversion majeure récemment de déplacer un tas d'Applications Java de JBoss à Weblogic. Toutes les applications Spring / Hibernate ont été portées sans aucune modification, car elles disposaient de toutes les bibliothèques nécessaires. Toutes les applications qui ont utilisé JPA et EJB et JSF ont été un désastre pour le port. Différences subtiles dans les interprétations de L'app, EJB, et JSF entre les serveurs d'applications ont causé toutes sortes de bogues désagréables qui ont pris une éternité à corriger. Même quelque chose d'aussi simple que le nom JNDI était complètement différent entre les applications.

Spring est une implémentation. JavaEE est une spec. C'est une énorme différence. Je préférerais utiliser une spécification si la spécification était 100% étanche et n'a donné absolument aucune marge de manœuvre dans la façon dont les fournisseurs mettent en œuvre cette spécification. Mais la spécification JavaEE n'a jamais été cela. Peut-être que JavaEE6 est plus hermétique? Je n'ai pas savoir. Plus vous pouvez empaqueter dans votre guerre, et moins vous dépendez des bibliothèques AppServer, plus votre application sera portable, et cela, après tout, est la raison pour laquelle J'utilise Java et pas Dot-NET.

même si la spécification était étanche, il serait agréable de pouvoir mettre à niveau l'applserver sans avoir à mettre à niveau toutes mes piles de technologie dans toutes mes applications avec elle. Si je veux passer de JBoss 4.2 à JBoss 7.0, je dois considérer l'impact de la nouvelle version de JSF sur toutes mes applications. Je n'ai pas à tenir compte de l'impact sur mes applications Spring-MVC (ou Struts).

32
répondu Beaker 2011-08-11 18:49:40
la source

ça n'a pas d'importance. Java EE 6 est assez bon et à cause des profils, il n'est pas "lourd" - vous allez juste utiliser le profil web.

personnellement, je préfère le printemps. Mais je suis à court d'arguments rationnels contre Java EE 6 :)

(comme me l'a rappelé un commentaire - vous pourriez essayer RichFaces , ainsi que ICEfaces et / ou PrimeFaces - selon quels sont les composants dont vous avez besoin).

23
répondu Bozho 2014-01-15 21:18:55
la source

récemment, l'une de mes tâches de client consistait à évaluer la pile Spring Vs la pile custom framework Vs une norme Java EE. Après un mois d'évaluation et de prototypage, j'ai été non seulement heureux, mais aussi époustouflé par L'ensemble de fonctionnalités Java EE 6. Pour toute nouvelle architecture de projet" enterprise " en 2011 et à l'avenir, J'utiliserais Java EE 6 et des extensions potentielles comme Seam 3 ou le prochain projet D'extensions Apache Jsr299. L'Architecture Java EE 6 est rationalisée et intègre le meilleur de nombreuses idées de logiciels libres qui ont évolué au cours des dernières années.

considèrent les fonctionnalités suivantes hors de la boîte: gestion D'événements, contextes et DI, intercepteurs, décorateurs, RESTful webservices, tests intégrés avec conteneur intégrable, la sécurité, et bien plus encore.

la plupart de mes résultats sont publié dans mon blog expliquant les concepts clés de Java EE 6 que vous pourriez trouver utile.

de bien sûr, il n'y a pas de règle dure et rapide pour choisir un cadre. Java EE 6 pourrait être bien gonflé pour des "sites Web" plus simples qui ne nécessitent pas un État de session conversationnel riche. Vous pourriez aussi bien choisir Graal ou Jouer! Framework. Mais pour les applications web conversationnelles, Je ne peux pas voir un meilleur argument pourquoi Java EE 6 n'est pas un bon ajustement.

17
répondu pritam 2013-04-14 13:36:21
la source

maintenant, après un certain temps, j'ai de l'expérience avec les piles:

  • Java EE 5 + Seam + GraniteDS + Flex
  • Printemps 3 + Vaadin (sur GWT)
  • printemps 3 + JSF 2.0 (PrimeFaces)

Mon colclusions sont:

  • Spring 3 est beaucoup plus simple que la couture (presque Java EE 6) et fonctionne sur Tomcat et Jetty! (Jetty pour le développement avec Maven plugin est un trasure).
  • j'aime Flex (j'ai été en fait un développeur Flex pendant longtemps donc je suis partial) et si vous avez besoin d'interface riche et peut acheter FlashBuilder utiliser ce, mais utiliser ce printemps + GraniteDS ou BlazeDs backend. Si vous ne pouvez pas acheter FlashBuilder ne perdez pas votre temps.
  • Vaadin est grand!. Le processus de développement est plus simple que Flex, mais vous pouvez créer une application riche facilement sans HTML mess. Tu n'écriras pas une seule ligne JS. Vous avez juste besoin de quelques CSS (dans Flex vous en avez besoin). Donc, si votre interface d'application va se comporter comme une application de bureau et vous ne pouvez pas (ou ne voulez pas) utiliser Flex - utiliser Vaadin. Avertissement! Vaadin a de gros JS pour navigateur.
  • si vous créez une application plus simple ressemblant à un site Web, utilisez JSF2.0 (avec le dos du ressort comme ci-dessus). Vous aurez besoin de se battre avec HTML (je déteste) et la création d'interface riche sera plus difficile que Vaadin (surtout layouts). Vous obtiendrez du HTML léger pour ralentir browsers / compuetrs. J'aime PrimeFaces - c'est simple et bien documenté. La deuxième place est IceFaces
  • si vous créez un site Web (pas une application web) où vous avez besoin de mettre la vie dans HTML (au lieu de créer une application d'entreprise qui s'adapte dans le navigateur) utilisez Wicket (si vous préférez basé sur le composant, pull attitude) ou SpringMVC (si vous préférez basé sur le modèle, push attitude) ou tout simplement utiliser le jeu! Framework. Rappelez-vous que la création de composants riches basés sur des données sera beaucoup plus difficile, mais vous aurez le contrôle sur chaque balise html (HTML/designer Graphique amour)
15
répondu Piotr Gwiazda 2013-04-14 13:34:39
la source

Lire Adam Bien l'Avenir De l'Enterprise Java ...Est Clair (Java EE avec/sans Ressort et Vice-Versa) , y compris les commentaires pour obtenir les deux côtés de la médaille. Je vais choisir de Printemps, pour plusieurs raisons, et la suite est l'un d'entre eux (reproduisant l'un des commentaires du post)

' Je ne suis pas sûr de quel serveur Java EE 6 vous parlez. Il est certifié Glassfish et TMAX JEUS. Cela prendra un certain temps (Lire: années) Jusqu'à ce que Java EE 6 les versions conformes de WebSphere, WebLogic, JBoss etc sont en production et peuvent être utilisées pour une application réelle. Spring 3 n'a besoin que de Java 1.5 et J2EE 1.4 et peut donc être utilisé dans presque tous les environnements

8
répondu Adi 2012-09-08 05:18:18
la source

mon opinion est basée sur quelque chose non mentionné par d'autres, à savoir que le code à mon travail ont tendance à vivre pendant des décennies (litéralement), et donc que l'entretien est très important pour nous. Maintenance de notre propre code et des bibliothèques que nous utilisons. Notre propre code que nous contrôlons, mais il est dans notre intérêt que les bibliothèques que nous utilisons, sont maintenues par autres dans les décennies mentionnées ci-dessus ou plus.

Pour faire une longue histoire courte, j'ai conclu que l' la meilleure façon d'y parvenir est d'utiliser des implémentations open source des spécifications Sun jusqu'à la JVM brute.

des implémentations open source Apache Jakarta a prouvé maintenir leurs bibliothèques, et récemment Sun a fait beaucoup de travail dans la production d'implémentations de haute qualité pour Glassfish v3. En tout cas, nous avons aussi la source de tous les modules, donc si tout le reste échoue, nous pouvons maintenir eux-mêmes.

Soleil les spécifications sont généralement très stricte signification que les mises en œuvre conformes à la spécification peuvent être interchangées facilement. Il suffit de jeter un oeil aux conteneurs servlet.

dans ce cas particulier, je suggérerais d'avoir un regard sur les Faces JavaServer simplement parce qu'il fait partie de Java EE 6 ce qui signifie qu'il sera disponible et maintenu pendant une très, très longue période. Ensuite, nous avons choisi D'augmenter avec MyFaces Tomahawk car il donne quelques ajouts utiles, et il s'agit d'un projet de jakarta.

Il n'y a aucun problème avec JBoss Seam ou d'autres. C'est juste qu'ils se concentrent moins sur la question de la maintenance qui est si importante pour nous.

8
répondu Thorbjørn Ravn Andersen 2013-04-14 13:37:02
la source

je peux voir en utilisant le ressort si vous l'avez déjà, mais pour le nouveau projet, quel est l'intérêt? J'irais directement avec Java EE 6 (ejb3, jsf2.0, etc.)

si le client est d'accord avec Flex, allez-y. Utilisez des BlazeDS ou similaire-pas de mvc. Vous pourriez passer plus de temps sur cette partie (échange de données entre le serveur et le client), mais vous avez le contrôle complet des deux côtés.

N'utilisez pas Vaadin, sauf si vous voulez tuer votre navigateur. En plus, tu passes plus de temps en contournant le code une fois que vos pages deviennent plus complexes. En outre, votre état d'esprit devra être complètement changé et tout ce que vous savez sur le développement frontal standard sera du gaspillage. L'argument que vous n'avez pas à utiliser HTML ou JS n'a pas beaucoup de sens. Tu dois toujours le savoir même si tu ne l'utilises pas. Il rend à HTML et JS éventuellement. Ensuite, essayez de le déboguer - assurez-vous que vous avez quelques jours pour les choses simples. De plus, Je ne peux pas imaginer un développeur web qui ne connaît pas html/js.

Je ne comprends pas pourquoi les gens essaient toutes ces abstractions au lieu d'utiliser Java EE directement.

6
répondu Marcin Koziarski 2013-04-14 13:39:51
la source

Pourquoi y a-t-il encore des rumeurs sur les poids lourds EJB en 2010? Il semble que les gens ne sont pas mis à jour dans les technologies Java EE. Essayez simplement, vous serez agréablement surpris de voir comment les choses sont simplifiées en Java EE 6.

5
répondu nash 2010-04-24 16:02:44
la source

la réponse à vos questions dépend des exigences de votre projet. Si vous n'avez pas besoin des fonctionnalités Java EE comme les files d'attente de messages, les transactions globales gérées par conteneur, etc., allez avec tomcat+spring.

aussi de l'expérience que j'ai trouvé que les projets qui exigent beaucoup d'intégration de service web, la planification, les files d'attente de message sont mieux fait en utilisant une partie de la pile Java EE. La bonne chose est d'utiliser spring que vous pouvez toujours intégrer avec les modules Java EE en cours d'exécution dans un serveur d'application.

Java EE 6 est très différent des versions précédentes, et il rend vraiment tout beaucoup plus facile. Java EE 6 combine les meilleures idées de la communauté Java diverse - par exemple Rod Johnson de Spring framework a été activement impliqué dans la fabrication de L'Injection de dépendances JSR en Java EE 6. Un avantage de L'utilisation de Java EE 6 est que vous codez selon une norme, ce qui pourrait être important dans certaines organisations pour le soutien des fournisseurs, etc.

GlassFish v3 soutient Java EE 6 et il est assez léger et démarre vraiment rapide. J'ai utilisé glassfish v3 pour mes développements, et il est vraiment facile à configurer. Il est livré avec une console d'administration très conviviale qui vous permet d'administrer graphiquement votre serveur.

si vous utilisez GlassfishV3 et JSF 2, alors vous pouvez profiter des fonctionnalités du CDI de Java EE 6, qui vous permet de créer facilement des conversations (par exemple des pages comme wizard).) dans JSF.

cela dit, L'utilisation de Java EE 6 nécessite également l'apprentissage d'une nouvelle API. Selon le calendrier disponible, ce n'est peut-être pas le meilleur choix pour vous. Tomcat existe depuis des siècles, et la combinaison tomcat+spring a été adoptée par de nombreux projets web, ce qui signifie qu'il y a beaucoup de documentation et de forums.

4
répondu Raz 2013-04-14 13:39:10
la source

j'ai travaillé à la fois au printemps et à Java EE 6. Ce que je peux dire d'après mon expérience, c'est que si vous optez pour le JSP ou le flex propriétaire, vous êtes en sécurité si vous restez avec le printemps.

mais si vous devez aller de l'avant avec JSF alors il est temps de passer à Java EE 6. Avec Java EE 6, vous vous déplacez vers les bibliothèques Facelets et script standardisées et les bibliothèques de composants. Plus d'incompatibilités de scripts et de matrices de bibliothèques de composants.

En ce qui concerne le printemps MVC, il est bon tant que votre projet ne se développe pas trop grand. Si C'est une énorme application d'entreprise coller sur Java EE 6. Parce que c'est la seule façon de maintenir vos propres bibliothèques de composants et ensembles de ressources de manière ordonnée.

3
répondu user373480 2013-04-14 13:42:22
la source

si vous avez besoin de la pile Java EE je vous recommande GlassFish 3.1. Il démarre très rapidement par rapport aux autres conteneurs Java EE qui implémentent une partie ou la totalité de Java EE 6 (JBoss 6, WebLogic 10.3.4), le redéploiement prend des secondes et presque tout peut être fait par convention sur configuration, il est très convivial.

je vous voulez quelque chose de "Léger", vous pouvez personnaliser un Apache Tomcat 7.x avec les caractéristiques désirées. J'ai beaucoup utilisé les bibliothèques suivantes: Soudure 1.1.0 (CDI) JPA 2.0 (hibernation 3.6.x) - seulement les transactions locales de ressources JSF 2.x (Mojarra) RichFaces 4.0 BIRT runtime

est un développeur Java EE depuis les 10 dernières années (je souffre des premières technologies EJB, JSF et web), Java EE 6 est très facile, bien couplé et le matériel actuel fonctionne sans accroc, donc les raisons originales qui motivated Spring ne sont plus valables.

3
répondu ssamayoa 2013-04-14 13:43:36
la source

je préfère encore le printemps.

et je transmettrais JSF. Je pense que c'est une technologie morte. La CVM du printemps serait une meilleure solution. Alors serait-Flex. Pensez en termes de contrat D'abord des services XML et vous pouvez découpler la fin de L'UI complètement.

1
répondu duffymo 2010-03-23 15:09:17
la source

je recommande Spring + Tomcat sauf si vous pouvez attendre le temps pour glassfish v3 et Weld pour devenir plus mature. Il y a actuellement quelques problèmes avec la consommation de mémoire/charge cpu lors de l'exécution de glassfish avec des applications compatibles avec le CDI.

0
répondu 2010-03-30 06:09:40
la source

N'a pas tout lu, mais juste pour dire que vous pouvez maintenant utiliser EJB3 dans une guerre sur Java EE 6 afin que vous puissiez utiliser EJB3 sur Tomcat (je pense).

0
répondu Sebastien Lorber 2013-04-14 13:44:04
la source

je vous ai recommandé Tomcat avec ressort parce que:

  1. le ressort peut créer des fèves de renfort pour JSP
  2. que Vous allez utiliser le Printemps de persister objet via JPA

C'est un bon choix de choisir Tomcat car vous n'avez pas besoin de traitement lourd

-3
répondu bassem 2010-04-24 16:42:42
la source

Autres questions sur java jsf spring java-ee-6 java-ee