Java EE (anteriormente conocido como Java 2 Platform, Enterprise Edition , J2EE para abreviar) ha sufrido muchos cambios desde la primera versión.
En 1998, Sun Microsystems anunció JPE (Java Platform for the Enterprise) , que contenía una implementación de EJB 1.0, pruebas de compatibilidad y orientación de codificación [1] [2] .
El 12 de diciembre de 1999 se publicó la especificación J2EE 1.2 [3] .
Lista de especificaciones incluidas en J2EE 1.2.1:
El 24 de septiembre de 2001, se publicó la especificación J2EE 1.3 [4] . Se anunció el soporte para el modelo de objetos distribuidos pesados ( RMI-IIOP/CORBA ) a favor de XML . Se agregó la biblioteca de etiquetas estándar de JavaServer Pages (JSTL), el servicio de autenticación y autorización de Java (JAAS) y la arquitectura del conector J2EE.
Lista de especificaciones J2EE 1.3:
El 11 de noviembre de 2003, se lanzó J2EE 1.4 [5] [6] . En respuesta a la llegada de los servicios web, la versión 1.4 agregó soporte para servicios web basados en XML. La tecnología JavaServer Faces (JSF) basada en componentes se ha agregado para reemplazar a JSP.
Tecnología | Versión | Código JSR |
---|---|---|
Tecnologías para servicios web: | ||
Servicios web para J2EE 1.1 | 1.0 | |
API de Java para procesamiento XML (JAXP) | 1.2 | JSR 206 |
API de Java para RPC basado en XML (JAX-RPC) | 1.1 | |
API de Java para registros XML (JAXR) | 1.0 | |
Tecnologías para aplicaciones web: | ||
Servlet de Java | 2.4 | JSR 154 |
Páginas de servidor Java (JSP) | 2.0 | JSR 152 |
Biblioteca de etiquetas estándar de JavaServer Pages (JSTL) | 1.1 | JSR 52 |
Caras de JavaServer (JSF) | 1.1 | JSR 127 |
Tecnologías para aplicaciones corporativas: | ||
Enterprise JavaBeans (EJB) | 2.1 | JSR 153 |
Arquitectura del conector J2EE | 1.5 | JSR 112 |
API de servicio de mensajes de Java (JMS) | 1.1 | JSR 914 |
API de transacciones de Java (JTA) | 1.0 | JSR 907 |
API de correo Java | 1.3 | JSR 919 |
Marco de activación de JavaBeans (JAF) | 1.0 | JSR 925 |
Tecnologías para la seguridad y gestión de aplicaciones: | ||
Contrato de proveedor de servicios de autorización de Java para contenedores (JACC) | 1.0 | |
Extensiones de gestión de Java (JMX) | 1.2 | JSR 3 |
API de gestión de edición empresarial | 1.0 | |
API de implementación de edición empresarial | 1.1 |
El 11 de mayo de 2006, se lanzó la especificación Java EE 5 [7] . Las versiones anteriores de la especificación se quejaron de que eran difíciles de usar, mientras que los marcos ligeros como Spring , Struts e Hibernate existían y se usaban , J2EE pasó a llamarse Java EE 5 y se lanzó con Java SE 1.5. Se intentó optimizar EJB reemplazando Beans con JPA. Además, se agregó soporte para API de Java para servicios web basados en XML (JAX-WS) y SOAP con API de archivos adjuntos para Java (SAAJ) como antes texto asíncrono, y luego binario, texto síncrono, capaz de reemplazar RMI-IIOP .
Tecnología | Versión | JSR |
---|---|---|
Tecnologías para servicios web: | ||
servicios web | 1.2 | JSR 109 |
API de Java para servicios web basados en XML (JAX-WS) | 2.0 | JSR 224 |
Arquitectura Java para enlace XML (JAXB) | 2.0 | JSR 222 |
Metadatos de servicios web para la plataforma Java | 2.0 | JSR 181 |
API de Java para RPC basado en XML (JAX-RPC) | 1.1 | JSR 101 |
API de Java para registros XML (JAXR) | 1.0 | JSR 93 |
SOAP con API de archivos adjuntos para Java (SAAJ) | 1.3 | JSR 67 |
API de transmisión para XML (StAX) | 1.0 | JSR 173 |
Tecnologías para aplicaciones web: | ||
Servlet de Java | 2.5 | JSR 154 |
Caras de JavaServer (JSF) | 1.2 | JSR 252 |
Páginas de servidor Java (JSP) | 2.1 | JSR 245 |
Biblioteca de etiquetas estándar de JavaServer Pages (JSTL) | 1.2 | JSR 52 |
Soporte de depuración para otros idiomas | 1.0 | JSR 45 |
Tecnologías para aplicaciones corporativas: | ||
Enterprise JavaBeans (EJB) | 3.0 | JSR 220 |
API de persistencia de Java (JPA) | 1.0 | |
Arquitectura del conector Java EE | 1.5 | JSR 112 |
Anotaciones comunes para la plataforma Java | 1.0 | JSR 250 |
API de servicio de mensajes de Java (JMS) | 1.1 | JSR 914 |
API de transacciones de Java (JTA) | 1.1 | JSR 907 |
API de correo Java | 1.4 | JSR 919 |
Marco de activación de JavaBeans (JAF) | 1.1 | JSR 925 |
Tecnologías para la seguridad y gestión de aplicaciones: | ||
Contrato de proveedor de servicios de autorización de Java para contenedores (JACC) | 1.1 | JSR 115 |
Implementación de aplicaciones J2EE | 1.2 | JSR 88 |
Gestión J2EE | 1.1 | JSR 77 |
El 10 de diciembre de 2009, se lanzó la especificación Java EE 6 [9] [10] [11] [12] . En esta versión, se intentaron incorporar y estandarizar conceptos y características de Spring Framework . SOAP con API de archivos adjuntos para Java (SAAJ) ahora es una parte completa de Java SE 6 [13] . La API de Java para servicios web RESTful (JAX-RS) ahora es una parte completa de Java EE [14] a partir de esta versión . También se estandarizaron DI, AOP y otros conceptos de Spring, Contextos e Inyección de Dependencia (CDI), Inyección de Dependencia (DI), Validación de Bean , Beans Administrados e Interceptores.
En Java EE 6 se introdujo el concepto de perfil, que incluye la configuración de la plataforma en función de una clase o aplicación específica. Web Profile también incluye una pila completa de tecnologías para representar y administrar estados ( JSF y JSP ), funcionalidad principal de contenedor web ( servlet ), lógica comercial ( EJB Lite), transacciones ( JTA ), almacenamiento de estado ( JPA ) y otros.
Java EE 6 ha comenzado el proceso de limpieza de código obsoleto y API no utilizadas .
Tecnología | Versión | JSR | Incluido en el perfil web |
---|---|---|---|
Tecnologías de servicios web: | |||
API de Java para servicios web RESTful (JAX-RS) | 1.1 | JSR 311 | |
servicios web | 1.3 | JSR 109 | |
API de Java para servicios web basados en XML (JAX-WS) | 2.2 | JSR 224 | |
Arquitectura Java para enlace XML (JAXB) | 2.2 | JSR 222 | |
de servicios web para Java | 2.1 | JSR 181 | |
API de Java para RPC basado en XML (JAX-RPC) | 1.1 | JSR 101 | |
API de Java para mensajería XML (JAXM) | 1.3 | JSR 67 | |
API de Java para registros XML (JAXR) | 1.0 | JSR 93 | |
Tecnologías para aplicaciones web: | |||
Servlet de Java | 3.0 | JSR 315 | Sí |
Caras de JavaServer (JSF) | 2.0 | JSR 314 | Sí |
Páginas de servidor Java (JSP) | 2.2 | JSR 245 | Sí |
Lenguaje de expresión (EL) | 2.2 | Sí | |
Biblioteca de etiquetas estándar de JavaServer Pages (JSTL) | 1.2 | JSR 52 | Sí |
Soporte de depuración para otros idiomas | 1.0 | JSR 45 | Sí |
Tecnologías para aplicaciones corporativas: | |||
Enterprise JavaBeans (EJB) | 3.1 | JSR 318 | ligero |
API de persistencia de Java (JPA) | 2.0 | JSR 317 | Sí |
Contextos e Inyección de Dependencia para Java (CDI) | 1.0 | JSR 299 | Sí |
Inyección de dependencia para Java | 1.0 | JSR 330 | Sí |
Validación de | 1.0 | JSR 303 | Sí |
frijoles administrados | 1.0 | JSR 316 | Sí |
Interceptores | 1.1 | JSR 318 | Sí |
Arquitectura del conector Java EE | 1.6 | JSR 322 | |
Anotaciones comunes para la plataforma Java | 1.1 | JSR 250 | Sí |
API de servicio de mensajes de Java (JMS) | 1.1 | JSR 914 | |
API de transacciones de Java (JTA) | 1.1 | JSR 907 | Sí |
API de correo Java | 1.4 | JSR 919 | |
Tecnologías para la seguridad y gestión de aplicaciones: | |||
Interfaz de proveedor de servicios de autenticación de Java para contenedores (JASPIC) | 1.0 | JSR 196 | |
Contrato de proveedor de servicios de autorización de Java para contenedores (JACC) | 1.4 | JSR 115 | |
Implementación de aplicaciones Java EE | 1.2 | JSR 88 | |
Gestión | 1.1 | JSR 77 |
Al principio, se suponía que la especificación pasaría bajo el número JSR 313 (inglés) , pero fue cancelada; posteriormente, se inició el desarrollo de la especificación bajo el número actual JSR 316 (ing.) .
El desarrollo se inició tras una polémica votación: 14 votos a favor (87,5%), 1 en contra (6,25%, Apache ) [15] y 1 abstención (6,25%, Borland ). Los participantes plantearon cuestiones relacionadas con los términos de licencia de Sun Microsystems [16] .
El 12 de junio de 2013, se lanzó la especificación Java EE 7 [17] [18] . Debido a la tendencia de HTML5 , se agregaron a la especificación la API de Java para WebSocket , la API de Java para el procesamiento de JSON , los servlets asincrónicos y el NIO sin bloqueo , lo que condujo a la creación de Play . En relación con la tendencia de los grandes datos, las aplicaciones por lotes para Java se han agregado a Java EE .
Tecnología | Versión | JSR | Incluido en el perfil web |
---|---|---|---|
Tecnologías para aplicaciones web: | |||
API de Java para WebSocket | JSR 356 | Sí | |
API de Java para procesamiento JSON | JSR 353 | Sí | |
Servlet de Java | 3.1 | JSR 340 | Sí |
Caras de JavaServer (JSF) | 2.2 | JSR 344 | Sí |
Lenguaje de expresión unificado (EL) | 3.0 | JSR 341 | Sí |
Páginas de servidor Java (JSP) | 2.3 | JSR 245 | Sí |
Biblioteca de etiquetas estándar de JavaServer Pages (JSTL) | 1.2 | JSR 52 | Sí |
Tecnologías para aplicaciones corporativas: | |||
Aplicaciones por lotes para Java | JSR 352 | ||
Utilidades de concurrencia para Java EE | 1.0 | JSR 236 | |
Contextos e Inyección de Dependencia para Java (CDI) | 1.1 | JSR 346 | Sí |
Inyección de dependencia para Java | 1.0 | JSR 330 | Sí |
Validación de | 1.1 | JSR 349 | Sí |
frijoles administrados | 1.0 | JSR 316 | Sí |
Enterprise JavaBeans (EJB) | 3.2 | JSR 345 | Sí |
Interceptores | 1.2 | JSR 318 | Sí |
Arquitectura del conector Java EE | 1.7 | JSR 322 | |
API de persistencia de Java (JPA) | 2.1 | JSR 338 | Sí |
Anotaciones comunes para la plataforma Java | 1.2 | JSR 250 | Sí |
API de servicio de mensajes de Java (JMS) | 2.0 | JSR 343 | |
API de transacciones de Java (JTA) | 1.2 | JSR 907 | Sí |
API de correo Java | 1.5 | JSR 919 | |
Tecnologías de servicios web: | |||
API de Java para servicios web RESTful (JAX-RS) | 2.0 | JSR 339 | Sí |
Implementación de servicios web empresariales | 1.4 | JSR 109 | |
API de Java para servicios web basados en XML (JAX-WS) | 2.2 | JSR 224 | |
de servicios web para Java | JSR 181 | ||
API de Java para RPC basado en XML (JAX-RPC; opcional) | 1.1 | JSR 101 | |
Arquitectura Java para enlace XML (JAXB) | 2.2 | JSR 222 | |
API de Java para registros XML (JAXR) | 1.0 | JSR 93 | |
Tecnologías de gestión y seguridad de aplicaciones: | |||
Interfaz de proveedor de servicios de autenticación de Java para contenedores (JASPIC) | 1.1 | JSR 196 | |
Contrato de proveedor de servicios de autorización de Java para contenedores (JASPCC) | 1.5 | JSR 115 | |
Implementación de aplicaciones Java EE (opcional) | 1.2 | JSR 88 | |
Java EE | 1.1 | JSR 77 | |
Soporte de depuración para otros idiomas | 1.0 | JSR 45 | Sí |
Especificaciones de Java EE portado a Java SE: | |||
Arquitectura Java para enlace XML (JAXB) | 2.2 | JSR 222 | |
API de Java para procesamiento XML (JAXP) | 1.3 | JSR 206 | |
Conectividad de base de datos Java | 4.0 | JSR 221 | |
Extensiones de gestión de Java (JMX) | 2.0 | JSR 3 | |
Marco de activación de JavaBeans (JAF) | 1.1 | JSR 925 | |
XML | 1.3 | JSR 67 | |
Streaming API para XML (StAX) | 1.0 | JSR 173 |
El 21 de septiembre de 2017, se lanzó la especificación Java EE 8 [19] [20] [21] . Java EE ha quedado bajo el control de la Fundación Eclipse , [22] y también ha sido de código abierto [23] . Eclipse basado en Java EE Eclipse Enterprise para Java (EE4J) [24] . Esta versión tiene como objetivo mejorar la compatibilidad con HTML5 y la compatibilidad básica con HTTP/2 , simplificar la integración de Managed Beans , mejorar la infraestructura de las aplicaciones en la nube y ampliar la gama de tecnologías Java EE a la web y las nubes.