Java EE 6 vs Spring 3 stack [fermé]

90

Je démarre un nouveau projet maintenant. Je dois choisir les technologies. J'ai besoin de quelque chose de léger, donc pas d'EJB ou de Seam. D'un autre côté, j'ai besoin de JPA (Hibernate ou alternative) et JSF avec IceFaces.

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

Quelle est ton opinion? Avez-vous des expériences?

Piotr Gwiazda
la source
8
Je préférerais primefaces.org au lieu d'IceFaces si vous voulez de la lumière. C'est beaucoup plus rapide et une api plus légère.
Shervin Asgari
1
Il n'y a que Glassfish fournissant JEE6 pour le moment. Resin met lentement en œuvre le profil Web JEE6 , ce qui peut vous suffire en fonction de vos besoins.
Thorbjørn Ravn Andersen
3
@ Thorbjørn Vous pouvez utiliser le profil Web GlassFish v3 si vous ne voulez que le profil Web.
Pascal Thivent
@Pascal, c'était pour détailler qu'il y aura bientôt une alternative à Glassfish pour obtenir JEE6 si vous pouvez vivre avec le profil web (je peux), pour ne pas dire que Glassfish ne peut pas.
Thorbjørn Ravn Andersen
@ Thorbjørn J'ai oublié de supprimer le @ Thorbjørn :) Le commentaire était destiné à l'OP qui semble supposer que l'utilisation du "full-stack" GFv3 est la seule option.
Pascal Thivent

Réponses:

101

J'ai besoin de quelque chose de léger, donc pas d'EJB ou de Seam.

Voudriez-vous expliquer ce qui rend les EJB lourds depuis l'EJB3? Vous rendez-vous compte que nous ne sommes plus en 2004? J'aimerais beaucoup lire votre définition de la lumière et vos arguments (et je mettrai à jour ma réponse avec plaisir car je suis presque sûr que j'aurais quelques choses solides à dire).

D'un autre côté, j'ai besoin de JPA (Hibernate ou alternative) et JSF avec IceFaces.

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

Pensez-vous qu'une telle pile sur Spring 3 déployée sur Tomcat soit un bon choix? Ou une application Web Java EE 6 pourrait être meilleure?

Eh bien, je aime l'idée de courir mon code sur une plate - forme non exclusive (Java EE) plutôt que sur un conteneur exclusif (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 jeté un second regard et JSF 2.0 avec CDI est si différent que je ne peux même pas comparer. Et si vous n'avez pas regardé CDI, laissez-moi vous dire que ça marche.

J'ai peur que Java EE 6 soit une nouvelle technologie, pas encore bien documentée.

Java EE me semble assez bien documenté. Cela ressemble à une réclamation gratuite. Et, croyez-moi ou non, je commence à trouver que Spring se complique tandis que Java EE devient plus facile.

Tomcat semble être plus facile à entretenir que Glassfish 3.

Avez-vous essayé quelque chose? Avez-vous rencontré un problème particulier? Encore une fois, cela ressemble à une réclamation gratuite.

Pascal Thivent
la source
2
Je suis juste après le grand projet de rater développé avec EJB3.0 + Seam sur JBoss avec Drools, GraniteDS et bien d'autres. Je suis d'accord Seam Rocks! Mais j'ai passé 50% du développement sur le redéploiement, le redémarrage des serveurs, les erreurs de déploiement, le nettoyage des répertoires temporaires, etc. D'un autre côté, les performances de JBoss Tools étaient vraiment médiocres (je veux dire vraiment - ctrl + space et 10s hang) Cela me décourage vraiment d'utiliser JEE6 qui ressemble à emprunté au cadre Seam. Quant au serveur, je ne veux pas penser aux pools de conecion, jndi, jms, jmx, ear deplyment. J'ai besoin de quelque chose pour mettre WAR et fonctionner en quelques secondes.
Piotr Gwiazda
6
@peperg Gaving King est le responsable des spécifications de CDI (Weld étant le RI), vous trouverez donc des similitudes entre Seam et CDI. Mais CDI! = Seam, Java EE 6! = Seam, votre perception est fausse. Essayez peut-être GlassFish v3 Web Profile, vous serez surpris (et une fois le pool de connexion défini, il n'y a pas grand chose à craindre).
Pascal Thivent
8
Qu'en est-il des gens qui disent que les EJB sont lourds ?. J'utilise EJB v3.1 et ce sont simplement des pojos annotés. Quand ils disent lourds, veulent-ils dire en performance ou quoi?
arg20
13
@ arg20 - C'est en effet la grande question et Pascal demande à juste titre d'expliquer ce que signifie le terme «lourd» (ou «léger») dans ce contexte. C'est probablement un reste de la vieille querelle entre Spring et EJB. Au début, les EJB1 et 2 étaient conceptuellement lourds. Un accent excessif sur la communication à distance et les beans avec état, un descripteur de déploiement XML ridiculement verbeux et une quantité totalement insensée d'interfaces requises à implémenter leur ont donné une très mauvaise réputation. Avec EJB3 (2006), cela a complètement changé, mais les gens qui ont quitté EJB en 2004 pour le printemps pensent parfois encore que 2004 et EJB2 sont les derniers.
Arjan Tijms
7
Notez que sur la page à propos de Spring, il est dit "Nous pensons que: J2EE devrait être plus facile à utiliser". Notez qu'ils utilisent le terme "J2EE" et non "Java EE", qui est le nom correct depuis la sortie de Java EE 5 (je pense). Cela en dit long sur eux ...
Vítor E. Silva Souza
32

Je n'ai pas utilisé JavaEE6.

Cependant, j'ai été suffisamment battu par toutes les versions précédentes de JavaEE et d'EJB pour que je ne lui fasse pas confiance tant qu'il ne s'impose pas comme la norme de facto, pas seulement comme la norme de jure. À l'heure actuelle, le printemps est toujours la norme de facto.

Trompez-moi une fois, honte sur vous. Trompez-moi deux fois, honte sur moi. Trompez-moi trois fois, EJB.

Certains prétendront que Spring est propriétaire. Je dirais que les implémentations des fournisseurs des spécifications JavaEE ont été tout aussi propriétaires, sinon plus.

J'ai récemment subi une conversion majeure en déplaçant un tas d'applications Java de JBoss vers Weblogic. Toutes les applications Spring / Hibernate ont été portées sans aucune modification, car elles avaient toutes les bibliothèques dont elles avaient besoin intégrées. Toutes les applications qui utilisaient JPA, EJB et JSF étaient un désastre à porter. De subtiles différences dans les interprétations de JPA, EJB et JSF entre les serveurs d'applications ont provoqué toutes sortes de bugs désagréables qui ont mis une éternité à être corrigés. Même quelque chose d'aussi simple que le nommage JNDI était complètement différent entre les AppServers.

Spring est une implémentation. JavaEE est une spécification. C'est une énorme différence. Je préférerais utiliser une spécification SI la spécification était 100% étanche à l'air et ne laissait absolument aucune marge de manœuvre dans la manière dont les fournisseurs implémentent cette spécification. Mais la spécification JavaEE n'a jamais été cela. Peut-être que JavaEE6 est plus étanche à l'air? Je ne sais pas. Plus vous pouvez créer un package dans votre WAR, et moins vous dépendez des bibliothèques AppServer, plus votre application sera portable, et c'est après tout la raison pour laquelle j'utilise Java et non Dot-NET.

Même si les spécifications étaient hermétiques, ce serait bien de pouvoir mettre à niveau le serveur d'applications sans avoir à mettre à niveau toutes mes piles technologiques dans toutes mes applications. Si je souhaite passer de JBoss 4.2 à JBoss 7.0, je dois tenir compte de l'impact de la nouvelle version de JSF sur toutes mes applications. Je n'ai pas besoin de considérer l'impact sur mes applications Spring-MVC (ou Struts).

Gobelet
la source
1
Exactement, c'est un excellent raisonnement.
Palesz
1
Je suis d'accord avec ce raisonnement, de nombreux problèmes auxquels j'ai été confronté ont été liés aux dépendances sur l'implémentation d'une spécification par un conteneur. Beaucoup moins de problèmes avec les bibliothèques intégrées. Difficile à argumenter, en dehors de la préférence philosophique d'une spécification.
Peter Porter
Magnifique raisonnement. Cependant, est-ce votre expérience même après JEE 6? Je comprends que les implémentations des spécifications d'App Server peuvent toujours être pénibles - par conséquent, la même spécification implémentée par App Server 1 peut être simple et efficace, mais pas pour App Server 2
Soumya
1
+1. De plus, le serveur d'applications change selon le calendrier des opérations, où spring / hibernate est sous le contrôle des développeurs. dans un environnement de grande entreprise, la mise à niveau du serveur d'applications est beaucoup plus importante.
Nathan Hughes
Je n'ai pas vraiment compris le point sur Dot-Net. Il est aussi propriétaire que Spring et est développé par un seul fournisseur qui est Microsoft. Pourrait-il être expliqué s'il vous plaît?
user1339260
23

Cela n'a pas d'importance. Java EE 6 est assez bon et à cause des profils là-bas, il n'est pas "lourd" - vous utiliserez simplement le profil Web.

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

(Comme un commentaire m'a rappelé - vous voudrez peut-être essayer RichFaces , ainsi que ICEfaces et / ou PrimeFaces - en fonction des composants dont vous avez besoin).

Bozho
la source
1
La question est donc: "Est-il judicieux d'utiliser le serveur d'applications Glassfish à pile complète tout simplement trop utiliser le profil Web"?
Piotr Gwiazda
1
@peperg Utilisez le profil Web GlassFish v3 si vous voulez juste le profil Web, voir ma réponse.
Pascal Thivent
J'ai posté quelques arguments ici stackoverflow.com/questions/2822812/spring-3-0-vs-j2ee-6-0/... , plutôt tirés du point de vue «comment le mettre en production». Alors peut-être que cela remplit un peu votre réserve d'arguments.
Oliver Drotbohm
@peperq, JBoss 6 est sorti pendant les vacances.
Thorbjørn Ravn Andersen
17

Récemment, l'une de mes missions client impliquait l'évaluation de la pile de framework Spring Stack Vs Custom Vs a Java EE Standards. Après un mois d'évaluation et de prototypage, je n'étais pas seulement content mais époustouflé par l'ensemble des fonctionnalités de Java EE 6. Pour toute nouvelle architecture de projet «entreprise» en 2011 et à l'avenir, j'irais avec 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 incorpore le meilleur des nombreuses idées open source qui ont évolué au cours des dernières années.

Considérez les fonctionnalités suivantes prêtes à l'emploi: gestion des événements, contextes et DI, intercepteurs, décorateurs, services Web RESTful, tests intégrés avec conteneur intégrable, sécurité et bien d'autres.

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

Bien sûr, il n'y a pas de règle absolue pour choisir un cadre. Java EE 6 pourrait être pléthorique pour les "sites Web" plus simples qui ne nécessitent pas un état de session conversationnel riche. Vous pouvez aussi bien choisir Grails ou Play! Cadre. Mais pour les applications Web conversationnelles, je ne vois pas de meilleur argument pour expliquer pourquoi Java EE 6 ne convient pas.

pri
la source
Java EE 6 est juste freakin 'lent, le profil web glassfish et glassfish est vraiment lent pour commencer à les comparer à jetty / tomcat / peu importe. Le test des conteneurs intégrables est également très lent.
Palesz
15

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

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

Mes colclusions sont:

  • Spring 3 est beaucoup plus simple que Seam (presque Java EE 6) et fonctionne sur Tomcat et Jetty! (Jetty pour le développement avec le plugin maven est une trasure).
  • J'adore Flex (j'étais en fait un développeur Flex pendant longtemps, donc je suis partial) et si vous avez besoin d'une interface riche et pouvez acheter FlashBuilder, utilisez-la, mais utilisez ce backend Spring + GraniteDS ou BlazeDs. Si vous ne pouvez pas acheter FlashBuilder, ne perdez pas votre temps.
  • Vaadin est génial !. Le processus de développement est plus simple que Flex, mais vous pouvez créer facilement une application riche sans gâchis HTML. Vous n'écrirez pas une seule ligne JS. Vous avez juste besoin de CSS (dans Flex, vous en avez aussi besoin). Donc, si l'interface de votre application va se comporter comme une application de bureau et que vous ne pouvez pas (ou ne voulez pas) utiliser Flex, utilisez Vaadin. Avertissement! Vaadin a de gros frais généraux JS pour le navigateur.
  • Si vous créez une application de type site Web plus simple, utilisez JSF2.0 (avec le backend à ressort comme ci-dessus). Vous devrez vous battre avec HTML (je déteste ça) et créer une interface riche sera plus difficile que Vaadin (en particulier les mises en page). Vous obtiendrez du HTML léger pour les navigateurs / ordinateurs plus lents. J'aime PrimeFaces - c'est facile et bien documenté. La deuxième place est IceFaces
  • Si vous créez un site Web (PAS une application Web) où vous devez donner vie à HTML (au lieu de créer une application d'entreprise qui s'intègre dans le navigateur), utilisez Wicket (si vous préférez basé sur les composants, pull attitude) ou SpringMVC (si vous préférez basé sur un modèle , push attitude) ou utilisez simplement Play! cadre. N'oubliez pas que la création de composants riches à base de données sera beaucoup plus difficile, mais vous aurez le contrôle sur chaque balise HTML (votre concepteur HTML / graphique l'adorera)
Piotr Gwiazda
la source
21
Je ne vois pas comment votre propre réponse se rapporte à la question ...
Pere Villega
1
-1 Il semble très inapproprié d'accepter cette réponse, car elle ne mentionne même pas Java EE 6. De plus, elle n'aborde aucun des points soulevés dans le bien pensé de @Pascal Thievent (et beaucoup plus voté) répondre.
user359996
1
En fait, la question n'est pas plus valable. JEE 6 est maintenant très mature, ce n'est pas en mars 2010 que la question a été posée.
Piotr Gwiazda
@PiotrGwiazda De quelle manière JEE 6 a-t-il changé depuis? Les gens en avaient plus peur à l'époque, mais c'était fondamentalement le même JEE 6.
ymajoros
1
Je voulais dire que les implémentations JEE6 sont plus matures et disponibles. JBoss 7 est maintenant stable et il y a plus d'implémentations disponibles. La communauté est également plus grande maintenant. Plus d'outils et de bibliothèques prennent désormais en charge la pile JEE 6.
Piotr Gwiazda
8

Lisez Future Of Enterprise Java ... Is Clear d' Adam Bien (Java EE avec / sans Spring et Vice Versa) , y compris des commentaires pour obtenir les deux côtés de la médaille. Je choisirai Spring pour plusieurs raisons et voici l'une d'entre elles (reproduisant l'un des commentaires de l'article)

«Je ne sais pas de quel serveur Java EE 6 vous parlez. Il est certifié Glassfish et TMAX JEUS. Cela prendra un certain temps (lire: des années) avant que les versions compatibles Java EE 6 de WebSphere, WebLogic, JBoss, etc. soient en production et puissent être utilisées pour des applications réelles. Spring 3 n'a besoin que de Java 1.5 et J2EE 1.4 et peut donc être facilement utilisé dans presque tous les environnements '

Adisesha
la source
6
Nous sommes presque exactement un an plus tard maintenant et JBoss AS 6, qui prend en charge Java EE 6, est actuellement utilisé en production.
Arjan Tijms
8

Mon opinion est basée sur quelque chose qui n'a pas été mentionné par d'autres, à savoir que le code dans mon travail a tendance à vivre pendant des décennies (littéralement), et donc que la maintenance est très importante pour nous. Maintenance de notre propre code et des bibliothèques que nous utilisons. Nous contrôlons notre propre code, mais il est dans notre intérêt que les bibliothèques que nous utilisons soient maintenues par d' autres dans les décennies mentionnées ci-dessus ou plus.

Pour résumer, j'ai conclu que le meilleur moyen d'y parvenir est d'utiliser des implémentations open source des spécifications Sun jusqu'à la JVM brute.

Parmi les implémentations open source, Apache Jakarta a prouvé qu'il maintenait ses bibliothèques, et récemment Sun a fait beaucoup de travail pour produire des implémentations de haute qualité pour Glassfish v3. Dans tous les cas, nous avons également la source de tous les modules, donc si tout le reste échoue, nous pouvons les maintenir nous-mêmes.

Les spécifications Sun sont généralement très strictes, ce qui signifie que les implémentations conformes à la spécification peuvent être facilement échangées. Jetez un œil aux conteneurs de servlets.

Dans ce cas particulier, je suggérerais de jeter un œil à JavaServer Faces simplement parce qu'il fait partie de Java EE 6, ce qui signifie qu'il sera disponible et maintenu pendant très, très longtemps. Ensuite, nous avons choisi d'augmenter avec MyFaces Tomahawk car cela donne des ajouts utiles, et c'est un projet jakarta.

Il n'y a rien de mal 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.

Thorbjørn Ravn Andersen
la source
Il s'est avéré que Java ServerFaces 2 dans Java EE 6 pouvait faire tout seul ce dont nous avions besoin pour Tomahawk avec JSF 1. C'est un framework tout à fait capable (mais un peu lourd en XML)
Thorbjørn Ravn Andersen
Bon point, malheureusement, les gens ont tendance à oublier que les logiciels sont faits pour vivre des décennies et que le support à long terme est une clé cruciale.
timmz
6

Je peux voir en utilisant Spring si vous l'avez déjà, mais pour le nouveau projet, à quoi ça sert? J'irais directement avec Java EE 6 (ejb3, jsf2.0, etc.)

Si le client est d'accord avec Flex, allez-y. Utilisez 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 un contrôle total des deux côtés.

N'utilisez pas Vaadin, sauf si vous voulez tuer votre navigateur. De plus, vous passez plus de temps à contourner 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 selon lequel vous n'avez pas besoin d'utiliser HTML ou JS n'a pas beaucoup de sens. Vous devez toujours le savoir même si vous ne l'utilisez pas. Il rend finalement en HTML et JS. Ensuite, essayez de le déboguer - assurez-vous de disposer de quelques jours pour des choses simples. De plus, je ne peux pas imaginer un développeur Web qui ne connaît pas html / js.

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

Marcin Koziarski
la source
5

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

nash
la source
4

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

Également par expérience, j'ai trouvé que les projets qui nécessitent beaucoup d'intégration de services Web, de planification et de files d'attente de messages sont mieux réalisés en utilisant une partie de la pile Java EE. La bonne chose est d'utiliser Spring que vous pouvez toujours intégrer aux modules Java EE exécutés dans un serveur d'applications.

Java EE 6 est très différent des versions précédentes, et cela rend vraiment tout beaucoup plus facile. Java EE 6 combine les meilleures idées de la communauté Java diversifiée - par exemple, Rod Johnson du framework Spring a été activement impliqué dans la création du Dependency Injection JSR dans Java EE 6. Un avantage de l'utilisation de Java EE 6 est que vous codez selon une norme, qui pourrait être importante dans certaines organisations pour le support des fournisseurs, etc.

GlassFish v3 prend en charge Java EE 6 et il est assez léger et démarre très rapidement. J'utilise glassfish v3 pour mes développements, et c'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, vous pouvez profiter des fonctionnalités CDI de Java EE 6, qui vous permettent de créer facilement des conversations (par exemple, des pages de type assistant) dans JSF.

Cela dit, l'utilisation de Java EE 6 vous oblige également à apprendre une nouvelle API. Selon la période disponible, ce n'est peut-être pas le meilleur choix pour vous. Tomcat existe depuis des lustres, et la combinaison tomcat + spring a été adoptée par de nombreux projets Web, ce qui signifie que de nombreux documents / forums sont disponibles.

Raz
la source
Je ne suis pas d'accord avec votre première phrase, le choix ne consiste pas à utiliser JMS ou pas. Et je ne pense pas que JSR-330 soit si important dans Java EE 6 (il est plus là pour des raisons politiques), la partie importante est JSR-299 (CDI). Du moins, c'est mon avis.
Pascal Thivent
D'accord, il y avait des politiques impliquant JSR330 - néanmoins c'est assez important car il fournit une base commune pour l'injection de dépendances en Java (SE ou EE) plutôt que de faire de DI une technologie uniquement JEE. En outre, il est pris en charge par Spring Framework et Google Guice, ce qui signifie qu'il facilitera le portage du code Spring / Guice vers JEE6 ou vice-versa. JSR299 a également été conçu pour étendre les fonctionnalités de JSR330. Vous avez raison de dire que pour les applications Web dans JEE6, JSR299 est absolument crucial. Grâce à ces deux JSR, JEE6 et Spring ont tous deux un modèle de programmation très similaire. Merci pour votre commentaire!
Raz
3

J'ai travaillé à la fois avec Spring et Java EE 6. Ce que je peux dire de mon expérience, c'est que si vous optez pour le JSP séculaire ou le Flex propriétaire, vous êtes en sécurité si vous restez avec Spring.

Mais si vous voulez aller de l'avant avec JSF, il est temps de passer à Java EE 6. Avec Java EE 6, vous passez aux Facelets et aux bibliothèques de scripts et de composants standardisés. Fini les incompatibilités de script et les matrices de bibliothèques de composants.

En ce qui concerne Spring MVC, c'est bien tant que votre projet ne grossit pas trop. S'il s'agit d'une énorme application d'entreprise, restez fidèle à Java EE 6. Parce que c'est la seule façon de gérer vos propres bibliothèques de composants et ensembles de ressources de manière ordonnée.

utilisateur373480
la source
1
Merci pour votre commentaire. Mon choix était Spring + Vaadin.
Piotr Gwiazda
3

Si vous avez besoin de la pile complète 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 quelques secondes et presque tout peut être fait par convention sur la configuration, c'est très convivial.

Si vous voulez quelque chose de "léger", vous pouvez personnaliser un Apache Tomcat 7.x avec les fonctionnalités souhaitées. J'ai beaucoup utilisé avec les bibliothèques suivantes: Weld 1.1.0 (CDI) JPA 2.0 (Hibernate 3.6.x) - uniquement les transactions locales de ressources JSF 2.x (Mojarra) RichFaces 4.0 BIRT runtime

Développeur Java EE depuis 10 ans (je souffre au début des technologies EJB, JSF et web), Java EE 6 est très simple, bien couplé et le matériel actuel fonctionne bien donc les raisons originales qui ont motivé Spring ne sont plus valables.

ssamayoa
la source
1
J'aime ta réponse. Très raisonnable. Quand j'ai posté la question, JEE6 était très jeune et Tomcat 7 n'était pas encore terminé. "Les raisons originales qui ont motivé Spring ne sont plus valables" - c'est vrai, mais JEE6 avec CDI a besoin d'un peu de temps pour se mettre en place. Par exemple: la surveillance Javamelody est disponible pour Spring et Guice (je ne peux pas imaginer travailler sur des applications sans elle). EHcache est disponible pour Spring (je veux dire les résultats des méthodes de mise en cache). Beaucoup de choses comme la programmation d'aspect sont encore plus faciles dans Spring, car de nombreuses bibliothèques et frameworks tiers s'intègrent facilement avec Spring mais pas encore avec JEE6.
Piotr Gwiazda
1

Je préférerais toujours le printemps.

Et je transmettrais JSF. Je pense que c'est une technologie morte. Spring MVC serait une meilleure alternative. Tout comme Flex. Pensez en termes de contrat de premiers services XML et vous pouvez dissocier complètement le back-end de l'interface utilisateur.

duffymo
la source
1
J'ai créé des applications avec Java + Flex et PHP + Flex et je reconnais que c'est la meilleure solution pour les interfaces riches. Mais dans cette application, je ne peux pas utiliser Flex: (J'ai besoin d'une interface de haut niveau, donc Spring MVC n'est pas une solution. Je veux penser à une datatable triable soit à <tr> <td> dans une boucle.
Piotr Gwiazda
1
@duffymo - Je peux dire si flex est un bon choix. JSF n'est certainement pas mort, en particulier avec des bibliothèques comme les richfaces, les primefaces, les icefaces, etc.
Bozho
1
Dans IceFaces, je crée des menus, des arbres, des datagrids utilisent des actions, des événements et je ne pense pas si la page se recharge ou est-ce une requête ajax. Une grille de données triable ou un arbre chargé ajax est un composant intégré. Dans Spring MVC, j'opère sur HTML - tableaux, listes, etc. Je dois utiliser un framework javascript tiers et créer la magie AJAX à la main. J'aimerais le faire dans Flex mais c'est une décision politique / commerciale - pas la mienne.
Piotr Gwiazda
1
Mes deux projets JSF actuels ne sont certainement pas morts;) Et je suis bien plus satisfait de la manière JSF de construire RIA ("riche" en "richfaces" est pour cela), que d'utiliser Flex. L'un sera même rendu public la semaine prochaine.
Bozho
2
J'aimerais vraiment savoir pourquoi vous préférez toujours Spring, Java EE 6 est sacrément bon. Ne pensez-vous pas que fonctionner sur une plate-forme ouverte est important pour l'avenir de Java?
Pascal Thivent
0

Je recommanderais Spring + Tomcat à moins que vous ne puissiez attendre le temps que Glassfish v3 et Weld deviennent plus matures. Il existe actuellement quelques problèmes de consommation de mémoire / charge du processeur lors de l'exécution de glassfish avec des applications compatibles CDI.


la source
0

Je n'ai 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).

Sébastien Lorber
la source
Oui, vous pouvez empaqueter des EJB dans un WAR dans Java EE 6, mais cela ne signifie pas que vous pouvez déployer un tel WAR sur Tomcat. Vous avez besoin d'un conteneur implémentant le profil Web et Tomcat n'en a pas et il n'y a en fait aucun plan dans la communauté Tomcat pour l'implémenter (voir old.nabble.com/Java-EE-6-Web-Profile-td27715793.html ). Mais il y a GlassFish v3 Web Profile, il y aura Resin ...
Pascal Thivent
2
mise à jour: jetez un œil au projet TomEE
gpilotino
-3

Je vous ai recommandé Tomcat avec Spring car:

  1. Spring peut créer des backing beans pour JSP
  2. Vous utiliserez Spring pour conserver l'objet via JPA

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

bassem
la source
1
"Traitement lourd"? Pourriez-vous élaborer? Je suis curieux.
Pascal Thivent