¿Java EE es solo una especificación? Lo que quiero decir es: ¿es EJB Java EE?
Java EE es de hecho una especificación abstracta . Cualquiera está abierto a desarrollar y proporcionar una implementación funcional de la especificación. Las implementaciones concretas son los llamados servidores de aplicaciones, como WildFly , TomEE , GlassFish , Liberty , WebLogic , etc. También hay contenedores de servlets que implementan solo la parte JSP / Servlet de la enorme API Java EE, como Tomcat , Jetty , etc.
Nosotros, los desarrolladores de Java EE, deberíamos escribir código que utiliza la especificación (es decir, importar sólo javax.*
las clases en nuestro código en lugar de clases específicas de implementación, tales como org.jboss.wildfly.*
, com.sun.glassfish.*
, etc.) y luego vamos a ser capaz de ejecutar nuestro código en cualquier aplicación (por lo tanto, en cualquier servidor de aplicaciones). Si está familiarizado con JDBC, es básicamente el mismo concepto de cómo funcionan los controladores JDBC. Ver también ao En términos más simples, ¿qué es una fábrica?
La descarga del SDK de Java EE de Oracle.com contiene básicamente el servidor GlassFish junto con un montón de documentación y ejemplos y, opcionalmente, también el IDE de NetBeans. No lo necesita si desea un servidor o IDE diferente.
EJB es parte de la especificación Java EE. Mira, está en la API Java EE . Los servidores de aplicaciones Java EE completos lo admiten de inmediato, pero los contenedores JSP / Servlet simples no.
Ver también:
¿Son EJB / Spring diferentes implementaciones de Java EE?
No, como se dijo, EJB es parte de Java EE. Spring es un marco independiente que sustituye y mejora muchas partes de Java EE. Spring no necesariamente requiere Java EE para ejecutarse. Un contenedor de servlet básico como Tomcat ya es suficiente. En pocas palabras, Spring es un competidor de Java EE. Por ejemplo, "Spring" (independiente) compite con EJB / JTA, Spring MVC compite con JSF / JAX-RS, Spring DI / IoC / AOP compite con CDI, Spring Security compite con JAAS / JASPIC, etc.
En los viejos tiempos de J2EE / EJB2, la API EJB2 era terrible de implementar y mantener. Spring era entonces una alternativa mucho mejor a EJB2. Pero desde EJB3 (Java EE 5), la API de EJB mejoró mucho según las lecciones aprendidas de Spring. Desde CDI (Java EE 6), no hay realmente una razón para mirar nuevamente otro marco como Spring para hacer que los desarrolladores sean más fáciles de desarrollar, entre otros, la capa de servicio.
Solo cuando está utilizando un contenedor de servlet básico como Tomcat y no puede pasar a un servidor Java EE, Spring es más atractivo ya que es más fácil instalar Spring en Tomcat. No es posible instalar, por ejemplo, un contenedor EJB en Tomcat sin modificar el servidor, básicamente reinventarías TomEE.
Ver también: