Qu'est-ce que Java EE exactement?

162

Je fais Java SE depuis quelques années maintenant et je passe à Java EE. Cependant, j'ai du mal à comprendre certains aspects de Java EE.

  1. Java EE est-il juste une spécification? Ce que je veux dire, c'est: EJB Java EE?

  2. Les implémentations EJB / Spring de Java EE sont-elles différentes?

Je suis désolé de demander mais j'ai quelques difficultés à comprendre ce qu'est Java EE.

Quelqu'un pourrait-il expliquer ce qu'est Java EE? Et EJB?

Frank Zimmer
la source
2
Vous devriez couper cette question en deux questions, l'une est un double, l'autre, je pense, ne trouve pas de réponse dans le lien.
Kheldar
2
En fait, avez-vous lu le wiki de la balise [java-ee] ?
Paŭlo Ebermann

Réponses:

187

Java EE est-il juste une spécification? Ce que je veux dire, c'est: EJB Java EE?

Java EE est en effet une spécification abstraite . Tout le monde est ouvert à développer et à fournir une implémentation fonctionnelle de la spécification. Les implémentations concrètes sont les soi-disant serveurs d'applications, comme WildFly , TomEE , GlassFish , Liberty , WebLogic , etc. Il existe également des conteneurs de servlets qui implémentent uniquement la partie JSP / Servlet de l'énorme API Java EE, tels que Tomcat , Jetty , etc.

Nous, les développeurs Java EE, devrait écrire du code en utilisant la spécification (c. -à importer uniquement javax.* des classes dans notre code au lieu de classes spécifiques de mise en œuvre tels que org.jboss.wildfly.*, com.sun.glassfish.*, etc.) et nous serons en mesure d'exécuter notre code sur une mise en œuvre (ainsi, sur tout serveur d'application). Si vous connaissez JDBC, c'est fondamentalement le même concept que le fonctionnement des pilotes JDBC. Voir aussi ao En termes simples, qu'est-ce qu'une usine?

Le téléchargement du SDK Java EE à partir d'Oracle.com contient essentiellement le serveur GlassFish avec un tas de documentation et d'exemples et éventuellement aussi l'EDI NetBeans. Vous n'en avez pas besoin si vous voulez un autre serveur et / ou IDE.

EJB fait partie de la spécification Java EE. Regardez, c'est dans l'API Java EE . Les serveurs d'applications Java EE à part entière le prennent en charge dès le départ, mais pas les simples conteneurs JSP / Servlet.

Voir également:


Les implémentations EJB / Spring de Java EE sont-elles différentes?

Non, comme dit, EJB fait partie de Java EE. Spring est un framework autonome qui remplace et améliore de nombreuses parties de Java EE. Spring ne nécessite pas nécessairement Java EE pour fonctionner. Un conteneur de servlet simple comme Tomcat est déjà suffisant. En termes simples, Spring est un concurrent de Java EE. Par exemple, "Spring" (autonome) est en concurrence avec EJB / JTA, Spring MVC entre avec JSF / JAX-RS, Spring DI / IoC / AOP avec CDI, Spring Security avec JAAS / JASPIC, etc.

À l'époque de l'ancien J2EE / EJB2, l'API EJB2 était horrible à implémenter et à maintenir. Spring était alors une bien meilleure alternative à EJB2. Mais depuis EJB3 (Java EE 5), l'API EJB a été beaucoup améliorée en fonction des leçons tirées de Spring. Depuis CDI (Java EE 6), il n'y a pas vraiment de raison de revoir un autre framework comme Spring pour rendre les développeurs plus faciles à développer entre autres la couche service.

Ce n'est que lorsque vous utilisez un conteneur de servlet simple tel que Tomcat et que vous ne pouvez pas passer à un serveur Java EE, Spring est plus attrayant car il est plus facile d'installer Spring sur Tomcat. Il n'est pas possible d'installer par exemple un conteneur EJB sur Tomcat sans modifier le serveur lui-même, vous réinventeriez fondamentalement TomEE.

Voir également:

BalusC
la source
2
Ainsi, Java EE pourrait être considéré comme définissant le support qui devrait exister pour qu'une application JEE typique s'exécute?
James P.
4
@James: Oui. Pratiquement tout dans l'API Java EE est abstrait. L'API Java SE comprend également plusieurs parties abstraites, par exemple JDBC, JAXP, JAXB, etc.
BalusC
3
"Il n'y a pas vraiment de raison de revoir un autre framework comme Spring pour rendre les développeurs plus faciles." -> Informations vraiment précieuses.
jacktrades
@BalusC: Salut, le lien officiel de Sun Java EE ... est-il cassé, si vous donnez un lien similaire à celui-là, il sera utile pour quelqu'un.
Abdul Rahman le
Pour exécuter le framework Spring complet, le conteneur Servlet suffirait, le conteneur Servlet est [serveur Web + conteneur Web (implémente l'api du servlet)] où, pour exécuter Java EE, vous avez besoin d'un serveur d'application comme Glassfish. Le conteneur de servlet ne suffirait pas. Le conteneur de servlet est un sous-ensemble du serveur d'applications. Comment puis-je comprendre cela?
surexchange
11

Java Enterprise Edition (Java EE) est une spécification parapluie qui fait référence à un certain nombre d'autres spécifications plus détaillées, dont Enterprise JavaBeans (EJB) est l'une des plus importantes.

Lisez ceci - il explique la différence entre Java EE et Spring

Merci...

Prabath Siriwardena
la source
4
  • Source - Java 2 Platform, Enterprise Edition (J2EE) définit la norme pour le développement d'applications d'entreprise à plusieurs niveaux basées sur des composants. J2EE simplifie la création d'applications d'entreprise portables, évolutives et s'intégrant facilement aux applications et données héritées.

  • Source - La technologie Enterprise JavaBeans (EJB) est l'architecture des composants côté serveur de Java Platform, Enterprise Edition (Java EE). La technologie EJB permet un développement rapide et simplifié d'applications distribuées, transactionnelles, sécurisées et portables basées sur la technologie Java.

  • Java EE est-il juste une spécification? Ce que je veux dire, c'est: EJB Java EE?

    • Java EE est une spécification.

    • EJB est une architecture de composants côté serveur pour Java EE

  • Les implémentations EJB / Spring de Java EE sont-elles différentes?

    • EJB et Spring sont des frameworks différents suivant Java EE.
Srikanth Venkatesh
la source
6
Il n'est peut-être pas très utile de citer un texte ancien (2005) d'une ancienne version de la spécification (J2EE). OP a spécifiquement demandé Java EE, qui est l'incarnation moderne de J2EE.
Arjan Tijms le
-5

Pour faire simple - JavaEE est une plate-forme.

Il est composé de nombreuses spécifications qui ne sont que des API. Les implémentations concrètes spécifiques de ces API sont ce que l'on appelle `` l'implémentation de référence ''

  1. EJB n'est qu'une spécification de la plate-forme JavaEE
  2. Non, Spring est un framework d'application qui peut vous permettre / a un support pour vous pour développer des applications JavaEE

EJB est Enterprise Java Beans

Développeur de logiciels
la source
4
Cette réponse n'ajoute rien aux réponses précédentes. De plus, ce n'est pas exact: une seule implémentation concrète est Référence, les autres ne le sont pas. Mineur: Spring s'intègre à JavaEE, mais peut très bien fonctionner sans cela.
Tair
@tair Oui, une seule implémentation concrète est considérée comme la «référence», par exemple JPA a de nombreuses implémentations mais seul EclipseLink est le RI. Quand j'ai mentionné RI, je voulais dire à travers les différentes API. Je pense que vous avez mal compris ma réponse ci-dessus. De plus, oui, Spring s'intègre à JavaEE, ce que j'ai mentionné ci-dessus.
SoftwareDeveloper