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: