web-dev-qa-db-fra.com

Spring vs EJB (avantage et inconvénient)

Je prépare actuellement ma dernière étude de projet. Je dois développer une application distribuée pour la gestion des ressources humaines, mais sur ma référence pour les technologies à utiliser, j'ai trouvé confus de choisir entre Spring ou l'EJB 3.1.

Je ne sais pas lequel sera le mieux adapté et le plus facile à utiliser. Je suis un débutant pour les deux technologies et j'espère donc que quelqu'un pourra m'aider.

19
Informatique2015

Vous ne choisissez pas entre EJB et Spring, vous choisissez en fait entre Java EE et Spring car EJB n'est qu'une partie de Java EE qui comprend également d'autres composants comme JMS, Servlets, JSP, JSF, CDI, etc. À ses débuts (J2EE 1.4), le modèle de programmation de l'édition entreprise de Java avait beaucoup de défauts et de déficiences, mais les plus importants étaient qu'il était fastidieux et verbeux avec beaucoup de code de chaudière et des tonnes de configurations xml. Spring a été introduit comme un cadre alternatif favorisant le principe de la convention sur la configuration. En d'autres termes, au printemps, il y avait quelques défauts sensibles qui pouvaient être reconfigurés si vous en avez besoin. Java EE 5 a introduit des changements importants adoptant le même principe de convention sur configuration de Spring, réduisant considérablement la quantité de code et la complexité nécessaires pour faire avancer les choses, donc dans ce domaine, Spring ne garder plus aucun avantage sensible.

Il est également important de garder à l'esprit que Java EE n'est qu'une spécification. Pour créer une application réelle, vous avez besoin d'une implémentation et il y en a beaucoup aujourd'hui - Glassfish, JBoss, TomcatEE, etc. . Tous fournissent différentes implémentations de Java EE spécification introduisant une complexité supplémentaire - je veux dire, maintenant vous devez choisir quelle Java EE implémentation à choisir. Vous pouvez comparer cela avec Spring qui provient d'une seule source.

Les deux cadres vous offrent des fonctionnalités à peu près similaires. Toutes les transactions de support, ORM, fournissent des outils pour construire une logique métier, supportent CDI, AOP. Dans Spring et Java EE, vous ne pouvez utiliser que les parties dont vous avez besoin, en d'autres termes, vous n'avez pas besoin d'utiliser tout le framework. Vous pouvez même les utiliser ensemble - elles peuvent interagir. Grâce à l'introduction de conteneurs intégrables, vous pouvez maintenant même utiliser les fonctionnalités Java EE dont vous avez besoin dans des domaines tels que les applications de bureau qui étaient traditionnellement le domaine de Spring.

Mais un domaine où Java EE manque toujours derrière Spring est la testabilité confortable. Il n'est pas facile d'écrire des tests unitaires pour EJB - pour cela, vous devez utiliser un cadre tiers spécial (Arquillian) et écrire du code passe-partout dans vos tests (par exemple pour construire le package de déploiement de test et le déployer sur le conteneur, etc.) En fait, Java EE n'a pas de support pour tester les EJB hors de la boîte) . En revanche, Spring est conçu pour la testabilité et le TDD. Tester les beans Spring est facile car Spring inclut une prise en charge groupée pour les tests (tests unitaires, tests d'intégration) de toutes les parties de l'application ainsi que la simulation.

61
akhilless