Was genau ist Java EE?

162

Ich mache seit einigen Jahren Java SE und gehe zu Java EE über. Ich habe jedoch einige Probleme, einige Aspekte von Java EE zu verstehen.

  1. Ist Java EE nur eine Spezifikation? Was ich meine ist: Ist EJB Java EE?

  2. Sind EJB / Spring unterschiedliche Implementierungen von Java EE?

Es tut mir leid zu fragen, aber ich habe einige Schwierigkeiten zu verstehen, was Java EE ist.

Könnte jemand erklären, was Java EE ist? Und EJB?

Frank Zimmer
quelle
2
Sie sollten diese Frage jedoch in zwei Fragen unterteilen: Eine ist ein Duplikat, die andere wird meiner Meinung nach nicht über den dortigen Link beantwortet.
Kheldar
2
Hast du das [java-ee] -Tag-Wiki gelesen ?
Paŭlo Ebermann

Antworten:

187

Ist Java EE nur eine Spezifikation? Was ich meine ist: Ist EJB Java EE?

Java EE ist in der Tat eine abstrakte Spezifikation. Jeder ist offen für die Entwicklung und Bereitstellung einer funktionierenden Implementierung der Spezifikation. Die konkreten Implementierungen sind die sogenannten Anwendungsserver wie WildFly , TomEE , GlassFish , Liberty , WebLogic usw. Es gibt auch Servlet-Container, die nur den JSP / Servlet-Teil der riesigen Java EE-API implementieren, wie z. B. Tomcat , Jetty , etc.

Wir, Java EE - Entwickler, sollte Code unter Verwendung die Spezifikation schreiben (dh importiert nur javax.* Klassen in unserem Code statt Implementierung spezifischer Klassen wie org.jboss.wildfly.*, com.sun.glassfish.*etc) , und dann werden wir in der Lage sein , unseren Code auf jeder Implementierung laufen (also auf einem beliebigen Anwendungsserver). Wenn Sie mit JDBC vertraut sind, entspricht dies im Wesentlichen der Funktionsweise von JDBC-Treibern. Siehe auch ao Was ist eine Fabrik im einfachsten Sinne?

Der Java EE SDK-Download von Oracle.com enthält im Wesentlichen den GlassFish-Server sowie eine Reihe von Dokumentationen und Beispielen und optional auch die NetBeans-IDE. Sie brauchen es nicht, wenn Sie einen anderen Server und / oder eine andere IDE möchten.

EJB ist Teil der Java EE-Spezifikation. Schauen Sie, es ist in der Java EE API . Vollwertige Java EE-Anwendungsserver unterstützen dies sofort, einfache JSP / Servlet-Container jedoch nicht.

Siehe auch:


Sind EJB / Spring unterschiedliche Implementierungen von Java EE?

Nein, wie gesagt, EJB ist Teil von Java EE. Spring ist ein eigenständiges Framework, das viele Teile von Java EE ersetzt und verbessert. Für Spring muss Java EE nicht unbedingt ausgeführt werden. Ein Bare-Bones-Servlet-Container wie Tomcat ist bereits ausreichend. Einfach ausgedrückt ist Spring ein Konkurrent von Java EE. ZB "Spring" (Standalone) konkurriert mit EJB / JTA, Spring MVC mit JSF / JAX-RS, Spring DI / IoC / AOP mit CDI, Spring Security mit JAAS / JASPIC usw.

Während der alten J2EE / EJB2-Zeiten war die Implementierung und Wartung der EJB2-API schrecklich. Der Frühling war dann eine viel bessere Alternative zu EJB2. Seit EJB3 (Java EE 5) wurde die EJB-API jedoch aufgrund der Lehren aus dem Frühjahr erheblich verbessert. Seit CDI (Java EE 6) gibt es keinen Grund mehr, ein anderes Framework wie Spring erneut zu betrachten, um den Entwicklern die Entwicklung unter anderem der Service-Schicht zu erleichtern.

Nur wenn Sie einen Bare-Bones-Servlet-Container wie Tomcat verwenden und nicht auf einen Java EE-Server wechseln können, ist Spring attraktiver, da Spring einfacher auf Tomcat installiert werden kann. Es ist nicht möglich, zB einen EJB-Container auf Tomcat zu installieren, ohne den Server selbst zu ändern. Sie würden TomEE grundsätzlich neu erfinden.

Siehe auch:

BalusC
quelle
2
Man könnte also sagen, dass Java EE definiert, welche Unterstützung für die Ausführung einer typischen JEE-Anwendung vorhanden sein soll.
James P.
4
@ James: Ja. Ziemlich alles in der Java EE API ist abstrakt. Java SE API hat auch mehrere abstrakte Teile, z. B. JDBC, JAXP, JAXB usw.
BalusC
3
"Es gibt keinen Grund, sich noch einmal ein anderes Framework wie Spring anzuschauen, um die Entwickler einfacher zu machen." -> Wirklich wertvolle Informationen.
Jacktrades
@BalusC: Hallo, ist der offizielle Sun Java EE .... Link defekt? Wenn Sie einen ähnlichen Link angeben, ist dies für jemanden hilfreich.
Abdul Rahman
Um ein vollständiges Spring-Framework auszuführen, würde der Servlet-Container ausreichen. Der Servlet-Container ist [Webserver + Webcontainer (implementiert die Servlet-API)]. Für die Ausführung von Java EE benötigen Sie einen Anwendungsserver wie Glassfish. Servlet-Container würde nicht ausreichen. Der Servlet-Container ist eine Teilmenge des Anwendungsservers. Wie verstehe ich das?
Überaustausch
11

Java Enterprise Edition (Java EE) ist eine Dachspezifikation, die auf eine Reihe weiterer detaillierterer Spezifikationen verweist, von denen Enterprise JavaBeans (EJB) eine der wichtigsten ist.

Lesen Sie dies - es erklärt den Unterschied zwischen Java EE und Spring

Vielen Dank...

Prabath Siriwardena
quelle
4
  • Quelle - Java 2 Platform, Enterprise Edition (J2EE) definiert den Standard für die Entwicklung komponentenbasierter mehrschichtiger Unternehmensanwendungen. J2EE vereinfacht das Erstellen von Unternehmensanwendungen, die portabel und skalierbar sind und sich problemlos in ältere Anwendungen und Daten integrieren lassen.

  • Quelle - Die Enterprise JavaBeans (EJB) -Technologie ist die serverseitige Komponentenarchitektur für Java Platform, Enterprise Edition (Java EE). Die EJB-Technologie ermöglicht die schnelle und vereinfachte Entwicklung verteilter, transaktionaler, sicherer und portabler Anwendungen auf Basis der Java-Technologie.

  • Ist Java EE nur eine Spezifikation? Was ich meine ist: Ist EJB Java EE?

    • Java EE ist eine Spezifikation.

    • EJB ist eine serverseitige Komponentenarchitektur für Java EE

  • Sind EJB / Spring unterschiedliche Implementierungen von Java EE?

    • Sowohl EJB als auch Spring sind nach Java EE unterschiedliche Frameworks.
Srikanth Venkatesh
quelle
6
Es ist vielleicht nicht sehr nützlich, alten Text (2005) aus einer alten Version der Spezifikation (J2EE) zu zitieren. OP fragte speziell nach Java EE, der modernen Inkarnation von J2EE.
Arjan Tijms
-5

Einfach ausgedrückt - JavaEE ist eine Plattform.

Es besteht aus vielen Spezifikationen, die nur APIs sind. Die spezifischen konkreten Implementierungen dieser APIs sind die sogenannten "Referenzimplementierungen".

  1. EJB ist nur eine Spezifikation innerhalb der JavaEE-Plattform
  2. Nein, Spring ist ein Anwendungsframework, mit dem Sie JavaEE-Anwendungen entwickeln können

EJB ist Enterprise Java Beans

Softwareentwickler
quelle
4
Diese Antwort fügt den vorherigen Antworten nichts hinzu. Darüber hinaus ist es nicht genau: Nur eine konkrete Implementierung ist Referenz, die anderen nicht. Kleinere: Spring lässt sich in JavaEE integrieren, kann aber ohne JavaEE problemlos funktionieren.
Tair
@tair Ja, nur 1 konkrete Implementierung wird als 'Referenz' angesehen, z. B. hat JPA zahlreiche Implementierungen, aber nur EclipseLink ist der RI. Als ich RI erwähnte, meinte ich über die verschiedenen APIs hinweg. Ich denke, Sie haben meine Antwort oben falsch verstanden. Ja, Spring lässt sich auch in JavaEE integrieren, was ich oben erwähnt habe.
SoftwareDeveloper