¿Qué es exactamente Java EE?


162

He estado haciendo Java SE durante algunos años y ahora estoy pasando a Java EE. Sin embargo, tengo algunos problemas para comprender algunos aspectos de Java EE.

  1. ¿Java EE es solo una especificación? Lo que quiero decir es: ¿es EJB Java EE?

  2. ¿Son EJB / Spring diferentes implementaciones de Java EE?

Lamento preguntar, pero tengo algunas dificultades para comprender qué es Java EE.

¿Alguien podría explicar qué es Java EE? Y EJB?



2
Sin embargo, debe cortar esta pregunta en dos preguntas, una es un duplicado, la otra creo que no está respondida en el enlace allí.
Kheldar

2
En realidad, ¿leíste el wiki de la etiqueta [java-ee] ?
Paŭlo Ebermann


Respuestas:


187

¿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:


2
Entonces, ¿podría decirse que Java EE define qué soporte debería existir para que se ejecute una aplicación JEE típica?
James P.

44
@ James: Sí. Casi todo en Java EE API es abstracto. Java SE API tiene también varias piezas abstractas, por ejemplo, JDBC, JAXP, JAXB, etc.
BalusC

3
"No hay realmente una razón para volver a mirar otro marco como Spring para hacer que los desarrolladores sean más fáciles". -> Información verdaderamente valiosa.
Jacktrades

@BalusC: Hola, ¿el enlace oficial de Sun Java EE ... está roto? Si le das un enlace similar, será útil para alguien.
Abdul Rahman

Para ejecutar Spring Framework completo, el contenedor Servlet sería suficiente, el contenedor Servlet es [servidor web + contenedor web (implementa la API de servlet)] donde para ejecutar Java EE, necesita un servidor de aplicaciones como Glassfish. El contenedor de servlet no sería suficiente. El contenedor de servlets es un subconjunto del servidor de aplicaciones. ¿Cómo entiendo esto?
intercambio excesivo el

11

Java Enterprise Edition (Java EE) es una especificación general que hace referencia a otras especificaciones más detalladas, de las cuales Enterprise JavaBeans (EJB) es una de las más importantes.

Lea esto : explica la diferencia entre Java EE y Spring

Gracias...


4
  • Fuente : Java 2 Platform, Enterprise Edition (J2EE) define el estándar para desarrollar aplicaciones empresariales multinivel basadas en componentes. J2EE simplifica la creación de aplicaciones empresariales que son portátiles, escalables y que se integran fácilmente con aplicaciones y datos heredados.

  • Fuente : la tecnología Enterprise JavaBeans (EJB) es la arquitectura de componentes del lado del servidor para Java Platform, Enterprise Edition (Java EE). La tecnología EJB permite el desarrollo rápido y simplificado de aplicaciones distribuidas, transaccionales, seguras y portátiles basadas en tecnología Java.

  • ¿Java EE es solo una especificación? Lo que quiero decir es: ¿es EJB Java EE?

    • Java EE es una especificación.

    • EJB es la arquitectura de componentes del lado del servidor para Java EE

  • ¿Son EJB / Spring diferentes implementaciones de Java EE?

    • Tanto EJB como Spring son marcos diferentes que siguen a Java EE.

66
Quizás no sea muy útil citar texto antiguo (2005) de una versión antigua de la especificación (J2EE). OP solicitó específicamente Java EE, que es la encarnación moderna de J2EE.
Arjan Tijms

-5

En pocas palabras: JavaEE es una plataforma.

Se compone de muchas especificaciones que son solo API. Las implementaciones concretas específicas de estas API son las llamadas 'Implementación de referencia'

  1. EJB es solo una especificación dentro de la plataforma JavaEE
  2. No, Spring es un marco de aplicación que puede permitirle / tiene soporte para que desarrolle aplicaciones JavaEE

EJB es Enterprise Java Beans


44
Esta respuesta no agrega nada a las respuestas anteriores. Además, no es exacto: solo una implementación concreta es Referencia, las otras no. Menor uno: Spring se integra con JavaEE, pero puede funcionar sin él perfectamente.
Tair

@tair Sí, solo 1 implementación concreta se considera como la 'Referencia', por ejemplo, JPA tiene numerosas implementaciones, pero solo EclipseLink es el RI. Cuando mencioné RI, me refería a las diferentes API. Creo que entendiste mal mi respuesta anterior. Además, sí, Spring se integra con JavaEE, que es lo que mencioné anteriormente.
SoftwareDeveloper
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.