Yakarta EE. UU.
Jakarta EE, anteriormente Java Platform, Enterprise Edition (Java EE) y Java 2 Platform, Enterprise Edition (J2EE), es un conjunto de especificaciones que amplían Java SE con especificaciones para funciones empresariales como la informática distribuida y los servicios web. Las aplicaciones de Jakarta EE se ejecutan en tiempos de ejecución de referencia, que pueden ser microservicios o servidores de aplicaciones, que manejan transacciones, seguridad, escalabilidad, concurrencia y administración de los componentes que está implementando.
Jakarta EE se define por su especificación. La especificación define las API (interfaz de programación de aplicaciones) y sus interacciones. Al igual que con otras especificaciones de Java Community Process, los proveedores deben cumplir con ciertos requisitos de conformidad para declarar sus productos como compatibles con Jakarta EE.
Ejemplos de contextos en los que se utilizan tiempos de ejecución de referencia de Jakarta EE: comercio electrónico, contabilidad, sistemas de información bancaria.
Historia
La plataforma se conocía como Java 2 Platform, Enterprise Edition o J2EE a partir de la versión 1.2, hasta que se cambió el nombre a Java Platform, Enterprise Edition i> o Java EE en la versión 1.5.
Java EE fue mantenido por Oracle bajo el Proceso de la Comunidad Java. El 12 de septiembre de 2017, Oracle Corporation anunció que enviaría Java EE a la Fundación Eclipse. El proyecto de nivel superior de Eclipse se ha denominado Eclipse Enterprise for Java (EE4J). La Fundación Eclipse no pudo ponerse de acuerdo con Oracle sobre el uso de las marcas registradas javax y Java. Oracle es propietario de la marca comercial del nombre "Java" y se cambió el nombre de la plataforma de Java EE a Jakarta EE. El nombre hace referencia a la ciudad más grande de la isla de Java y también a la capital de Indonesia, Yakarta. El nombre no debe confundirse con el antiguo Proyecto Jakarta, que fomentó una serie de proyectos Java actuales y anteriores en la Apache Software Foundation.
Versión de la plataforma | Liberado | Especificación | Java SE Apoyo | Cambios importantes |
---|---|---|---|---|
Yakarta EE 10 | 2022-09-13 | 10 |
| Eliminación de artículos deprecados en Servlet, Faces, CDI y EJB (Entity Beans y Embeddable Container). Tiempo de construcción de CDI. |
Yakarta EE 9.1 | 2021-05-25 | 9.1 |
| Apoyo JDK 11 |
Yakarta EE 9 | 2020-12-08 | 9 | Java SE 8 | API namespace mover de javax a jakarta |
Yakarta EE 8 | 2019-09-10 | 8 | Java SE 8 | Compatibilidad completa con Java EE 8 |
Java EE 8 | 2017-08-31 | JSR 366 | Java SE 8 | Seguridad basada en HTTP/2 y CDI |
Java EE 7 | 2013-05-28 | JSR 342 | Java SE 7 | Soporte WebSocket, JSON y HTML5 |
Java EE 6 | 2009-12-10 | JSR 316 | Java SE 6 | CDI administraba frijoles y REST |
Java EE 5 | 2006-05-11 | JSR 244 | Java SE 5 | Anotaciones de Java |
J2EE 1.4 | 2003-11 | JSR 151 | J2SE 1.4 | Servicios web interoperables WS-I |
J2EE 1.3 | 2001-09-24 | JSR 58 | J2SE 1.3 | Arquitectura conector Java |
J2EE 1.2 | 1999-12-17 | 1.2 | J2SE 1.2 | Publicación inicial de la especificación |
Especificaciones
Jakarta EE incluye varias especificaciones que sirven para diferentes propósitos, como generar páginas web, leer y escribir desde una base de datos de forma transaccional, administrar colas distribuidas.
Las API de Jakarta EE incluyen varias tecnologías que amplían la funcionalidad de las API básicas de Java SE, como Jakarta Enterprise Beans, conectores, servlets, Jakarta Server Pages y varias tecnologías de servicios web.
Especificaciones web
- Yakarta Servlet: define cómo gestionar las solicitudes HTTP, de manera sincronizada o asincrónica. Es de bajo nivel y otras especificaciones de Yakarta EE dependen de él;
- Jakarta WebSocket: Especificación de API que define un conjunto de API a las conexiones WebSocket de servicio;
- Yakarta Server Faces: una tecnología para construir interfaces de usuario fuera de los componentes;
- Idioma de Expresión de YakartaEL) es un lenguaje simple diseñado originalmente para satisfacer las necesidades específicas de los desarrolladores de aplicaciones web. Se utiliza específicamente en Yakarta Faces para atar componentes a frijoles (retrocedentes) y en Contextos e Inyección de dependencia a frijoles llamados, pero se puede utilizar en toda la plataforma.
Especificaciones del servicio web
- Yakarta RESTful Web Services proporciona soporte para la creación de servicios web de acuerdo con el patrón arquitectónico Representational State Transfer (REST);
- Jakarta JSON El procesamiento es un conjunto de especificaciones para gestionar la información codificada en formato JSON;
- Jakarta JSON Binding proporciona especificaciones para convertir la información JSON en o desde clases de Java;
- Jakarta XML La fijación permite mapear XML en objetos Java;
- Jakarta XML Servicios Web se pueden utilizar para crear servicios web SOAP.
Especificaciones empresariales
- Activación de YakartaJAF) especifica una arquitectura para ampliar componente Beans by providing data typing and bindings of such types.
- Contextos de Yakarta e inyección de dependencia (CDI) es una especificación para proporcionar un contenedor de inyección de dependencia;
- Jakarta Enterprise BeansEJB) especificación define un conjunto de API de peso ligero que un contenedor de objetos (el contenedor EJB) apoyará para proporcionar transacciones (utilizando JTA), llamadas de procedimiento remoto (utilizando RMI o RMI-IIOP), control de concurrencia, inyección de dependencia y control de acceso para objetos de negocios. Este paquete contiene las clases e interfaces de Yakarta Enterprise Beans que definen los contratos entre el frijol empresarial y sus clientes y entre el frijol empresarial y el contenedor ejb.
- Persistencia de YakartaJPA) son especificaciones sobre mapeo de objetos-relacional entre tablas de bases de datos de relación y clases de Java.
- Transacciones de Yakarta ()JTA) contiene las interfaces y anotaciones para interactuar con el soporte de transacción ofrecido por Yakarta EE. A pesar de que este API abstrae de los detalles realmente de bajo nivel, las interfaces también se consideran algo de bajo nivel y el desarrollador promedio de aplicaciones en Yakarta EE se supone que depende de la manipulación transparente de las transacciones por las abstracciones EJB de mayor nivel, o utilizando las anotaciones proporcionadas por esta API en combinación con los frijoles administrados por CDI.
- Mensajería de Yakarta (JMS) proporciona una manera común para los programas Java para crear, enviar, recibir y leer los mensajes del sistema de mensajería empresarial.
Otras especificaciones
- Validación: Este paquete contiene las anotaciones e interfaces para el soporte de validación declarativa ofrecido por la API de validación Bean. La validación de los frijoles proporciona una forma unificada de proporcionar restricciones a los frijoles (por ejemplo, las clases modelo de JPA) que pueden ser aplicados cruzados. En Yakarta EE, JPA honra las limitaciones de validación de frijoles en la capa de persistencia, mientras que JSF lo hace en la capa de visión.
- Yakarta Batch proporciona los medios para el procesamiento por lotes en aplicaciones para ejecutar tareas de fondo de larga duración que posiblemente implican un gran volumen de datos y que pueden necesitar ser ejecutados periódicamente.
- Yakarta Connectors es una herramienta basada en Java para conectar servidores de aplicaciones y sistemas de información empresarial (EIS) como parte de la integración de aplicaciones empresariales (EAI). Esta es una API de bajo nivel dirigida a los proveedores que el desarrollador de aplicaciones promedio normalmente no entra en contacto con.
Perfil web
En un intento por limitar la huella de los contenedores web, tanto en términos físicos como conceptuales, se creó el perfil web, un subconjunto de las especificaciones Jakarta EE. El perfil web de Jakarta EE comprende lo siguiente:
Especificación | Java EE 6 | Java EE 7 | Java EE 8 Yakarta EE 8 | Yakarta EE 9 Yakarta EE 9.1 | Yakarta EE 10 |
---|---|---|---|---|---|
Yakarta Servlet | 3.0 | 3.1 | 4.0 | 5.0 | 6.0 |
Páginas de Servidor de Yakarta (JSP) | 2.2 | 2.3 | 2.3 | 3.0 | 3.1 |
Idioma de Expresión de YakartaEL) | 2.2 | 3.0 | 3.0 | 4.0 | 5.0 |
Yakarta Debugging Support for Other Languages (JSR-45) | 1.0 | 1.0 | 1.0 | 2.0 | 2.0 |
Biblioteca de la etiqueta estándar de YakartaJSTL) | 1.2 | 1.2 | 1.2 | 2.0 | 3.0 |
Caras de Yakarta | 2.0 | 2.2 | 2.3 | 3.0 | 4.0 |
Yakarta RESTful Web ServicesJAX-RS) | 1.1 | 2.0 | 2.1 | 3.0 | 3.1 |
Yakarta WebSocketWebSocket) | — | 1.0 | 1.1 | 2.0 | 2.1 |
Jakarta JSON ProcesamientoJSON-P) | — | 1.0 | 1.1 | 2.0 | 2.1 |
Jakarta JSON Binding (en inglés)JSON-B) | — | — | 1.1 | 2.0 | 3.0 |
Anotaciones de Yakarta ()CA) | 1.1 | 1.2 | 1.3 | 2.0 | 2.1 |
Jakarta Enterprise BeansEJB) | 3.1 Lite | 3.2 Lite | 3.2 Lite | 4.0 Lite | 4.0 Lite |
Transacciones de Yakarta ()JTA) | 1.1 | 1.2 | 1.2 | 2.0 | 2.0 |
Persistencia de YakartaJPA) | 2.0 | 2.1 | 2.2 | 3.0 | 3.1 |
Validación de judías | 1.0 | 1.1 | 2.0 | 3.0 | 3.0 |
Jakarta Managed Beans | 1.0 | 1.0 | 1.0 | 2.0 | — |
Interceptores de Yakarta | 1.1 | 1.2 | 1.2 | 2.0 | 2.1 |
Contextos de Yakarta e inyección de dependencia (CDI) | 1.0 | 1.1 | 2.0 | 3.0 | 4.0 |
Jakarta Dependencia de inyección | 1.0 | 1.0 | 1.0 | 2.0 | 2.0 |
Seguridad de Yakarta | — | — | 1.0 | 2.0 | 3.0 |
Jakarta Authentication | — | 1.0 | 1.1 | 2.0 | 3.0 |
Jakarta Concurrency | — | — | — | — | 3.0 |
Tiempos de ejecución de referencia certificados
Aunque, por definición, todas las implementaciones de Jakarta EE proporcionan el mismo nivel básico de tecnologías (es decir, la especificación de Jakarta EE y las API asociadas), pueden diferir considerablemente con respecto a las funciones adicionales (como conectores, agrupación, tolerancia a fallas, alta disponibilidad, seguridad, etc.), tamaño instalado, consumo de memoria, tiempo de inicio, etc.
EE.UU. de Yakarta
Hora de referencia | Desarrollado | Yakarta EE 10 Plataforma | Yakarta EE 9/9.1 Plataforma Productos compatibles | Yakarta EE 9/9.1 Perfil Web Productos compatibles | Yakarta EE 8 productos compatibles con plataforma | Yakarta EE 8 Perfil Web Productos compatibles | Licencias |
---|---|---|---|---|---|---|---|
GlassFish | Eclipse | Sí. | Si 6,0/ 6,0 | Si 6,0/ 6,0 | Sí. | Sí. | Software libre |
Libertad abierta | IBM | Sí, 22.0.0.13-beta | Sí. | Sí. | Sí, 19.0.0.6, 20.0.0.3 | Sí, 19.0.0.6, 20.0.0.3 | Software libre |
WebSphere Liberty | IBM | No | Sí. | Sí. | Sí, 20.0.0.3 | Sí, 20.0.0.3 | Software apropiado |
WildFly | Red Hat | Sí, 27.0.0.Alpha5 | Sí 23.0.1-Preview/25.0.0-Preview | Sí 23.0.1-Preview/25.0.0-Preview | Sí. | Sí. | Software libre |
JBoss EAP | Red Hat | No | No | No | Sí 7.3.0 | Sí 7.3.0 | Software libre |
TomEE | Apache | No | No | Sí, 9.0.0-M7 | No | Sí 8.0.x | Software libre |
Payara Server | Payara Services Limited | Sí 6.2022.1 Alfa 4 | Sí 6.2021.1 Alfa 1 | No | Sí 5.22.0, 5.23.0 | Sí 5.23.0 | Software libre |
Thunisoft Application Server | Beijing Thunisoft Information Technology | No | Sí. | No | Sí 2.8 | No | Software apropiado |
JEUS | TmaxSoft | No | No | No | Sí 8,5 | No | Software apropiado |
InforSuite Application Server | Shandong Cvicse Middleware | No | Sí 11 | No | Sí 10 | No | Software apropiado |
Java EE
Hora de referencia | Desarrollado | Java EE 8 certificado – Full | Java EE 8 certificado – Web | Java EE 7 certificado – Full | Java EE 7 certificado – Web | Java EE 6 certificado – Full Página oficial de Oracle para Java EE Compatibilidad. | Java EE 6 certificado – Web | Java EE 5 certificado | J2EE 1.4 certificado | Licencias |
---|---|---|---|---|---|---|---|---|---|---|
GlassFish server Open Source Edition | Oracle | Sí. | Sí. | Sí v4.x | Sí v4.x | Sí v3.x y arriba | Sí v3.x Perfil Web | Sí v2.1.x | Software libre | |
Oracle GlassFish Server | Oracle | Sí v3 basado en el servidor de aplicaciones de código abierto GlassFish | Sí Sun Java System Application Server v9.0 | Sí Sun Java System Application Server v8.2 | Software apropiado | |||||
Oracle WebLogic Server | Oracle | Sí 14.1.1 | Sí 12.2.1 | Sí v12c | Sí v10.3.5.0 | Sí v9 | Software apropiado | |||
WildFly | Red Hat | Sí v14.x | Sí v14.x | Sí v8.1 | Sí v8.0.0.Final | Sí v7.1 | Sí v6.0 y v7.0 | Sí v5.1 | Sí v4.x | Software libre |
JBoss Enterprise Application Platform | Red Hat | Sí v7.2 | Sí v7.0 | Sí v7.0 | Sí v6.0 | Sí v5 | Software apropiado | |||
IBM WebSphere Application Server | IBM | Sí v9.x | Sí v9.x | Sí v8 | Sí v7 | Sí. | Software apropiado | |||
IBM WebSphere Application Server Liberty | IBM | Sí v18.0.0.2 | Sí v18.0.0.2 | Sí v8.5.6 | Sí v8.5.6 | Sí v8.5.5 | Software apropiado | |||
Libertad abierta | IBM | Sí v18.0.0.2 | Sí v18.0.0.2 | Software libre | ||||||
IBM WebSphere Application Server Community Edition | IBM | Sí v3.0 | Sí v2.1 | Software apropiado | ||||||
Apache Geronimo | Apache | Sí v3.0-beta- 1 | Sí v2.0 | Sí v1.0 | Software libre | |||||
JEUS | TmaxSoft | Sí v8 | Sí v7 | Sí v6 | Sí v5 | Software apropiado | ||||
Cosminexus Application Server | Hitachi | Sí v10.0 | Sí v9 | Software apropiado | ||||||
Fujitsu Interstage Application Server | Fujitsu | Sí v12.0 | Sí v1 Azure/v10.1 | Sí. | Software apropiado | |||||
WebOTX | NEC | Sí. | Sí. | Software apropiado | ||||||
BES Application Server | Baolande | Sí v9.5 | ||||||||
Apache TomEE | Apache | No 7 (Java EE 7 como, pero no certificado) | Sí. | Software libre | ||||||
Resin Server | Caucho | Sí v4.0 | Sí. | Software apropiado | ||||||
Siwpas | OW2 | Sí v6.0 | Software libre | |||||||
JOnAS | OW2 | Sí v5.3 rc1 | Sí. | Sí. | Software libre | |||||
SAP NetWeaver | SAP | Sí v2.x | Sí. | Sí. | Software apropiado | |||||
Oracle Containers para Java EE | Oracle | Sí. | Software apropiado | |||||||
Oracle iPlanet Web Server | Oracle | Sí Sun Java System Web Server | Software apropiado | |||||||
Oracle Application Server 10g | Oracle | Sí. | Software apropiado | |||||||
Pramati Server | Pramati Technologies | Sí. | Software apropiado | |||||||
Trifork T4 | Trifork | Sí. | Software apropiado | |||||||
Sybase Enterprise Application Server | Sybase | Sí. | Software apropiado |
Ejemplo de código
El ejemplo de código que se muestra a continuación demuestra cómo se utilizan varias tecnologías en Java EE 7 juntas para crear un formulario web para editar un usuario.
En Jakarta EE, se puede crear una interfaz de usuario (web) utilizando Jakarta Servlet, Jakarta Server Pages (JSP) o Jakarta Server Faces (JSF) con Facelets. El siguiente ejemplo usa Faces y Facelets. No se muestra explícitamente que los componentes de entrada utilizan la API de validación de EE Bean de Jakarta encubierta para validar las restricciones.
html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core"■ ▪f:metadata ■f:viewParam nombre="user_id" valor="#{userEdit.user" convertidor="Convertor" / ■/f:metadata confianza - No. ■h:mensajes / - No. ■h:panelGrid columnas="2"■ ■h:outputLabel para="primer nombre" valor="Primero nombre" / ■h:inputText id="primer nombre" valor="#{userEdit.user.firstName" etiqueta="Primero nombre" / ■h:outputLabel para="La última Navidad" valor="El apellido" / ■h:inputText id="La última Navidad" valor="#{userEdit.user.lastName" etiqueta="El apellido" / ##### ########################################################################################################################################################################################################################################################### acción="#{userEdit.saveUser" valor="Save" / ▪/h:panelGrid - No. ■/h:bodyIdentificado/html
Ejemplo de clase Backing Bean
Para ayudar a la vista, Jakarta EE utiliza un concepto llamado "Backing Bean". El siguiente ejemplo utiliza contextos e inyección de dependencia (CDI) y Jakarta Enterprise Beans (EJB).
@Named@ViewScopedpúblico clase UserEdit {} privado Usuario usuario; @Inject privado UserDAO userDAO; público String saveUser() {} userDAO.Guardar()esto.usuario); añadir FlashMessage()"User" + esto.usuario.# Id() + "Salvado"); retorno "users.xhtml?faces-redirect=true"; } público vacío set Usuario()Usuario usuario) {} esto.usuario = usuario; } público Usuario # Usuario() {} retorno usuario; }}
Ejemplo de clase de objeto de acceso a datos
Para implementar la lógica empresarial, Jakarta Enterprise Beans (EJB) es la tecnología dedicada en Jakarta EE. Para la persistencia real, se puede usar JDBC o Jakarta Persistence (JPA). El siguiente ejemplo utiliza EJB y JPA. No se muestra explícitamente que EJB utiliza JTA encubiertamente para controlar el comportamiento transaccional.
@Statelesspúblico clase UserDAO {} @PersistenceContext privado EntityManager entidad Manager; público vacío Guardar()Usuario usuario) {} entidad Manager.persistencia()usuario); } público vacío actualización()Usuario usuario) {} entidad Manager.merge()usuario); } público Lista.Usuario■ # Todos() {} retorno entidad Manager.createNamedQuery()"User.getAll", Usuario.clase) .ResultadosLista(); }}
Clase de entidad de ejemplo
Para definir clases de entidad/modelo, Jakarta EE proporciona la persistencia de Jakarta (JPA), y para expresar restricciones en esas entidades, proporciona la API de validación de beans. El siguiente ejemplo utiliza ambas tecnologías.
@Entitypúblico clase Usuario {} @Id @GeneratedValue()estrategia = IDENTIDAD) privado Integer id; @Size()min = 2, Mensaje="El primer nombre es demasiado corto") privado String primero Nombre; @Size()min = 2, Mensaje="El apellido es demasiado corto") privado String LastName; público Integer # Id() {} retorno id; } público vacío set Id()Integer id) {} esto.id = id; } público String # FirstName() {} retorno primero Nombre; } público vacío setFirstName()String primero Nombre) {} esto.primero Nombre = primero Nombre; } público String getLastName() {} retorno LastName; } público vacío setLastName()String LastName) {} esto.LastName = LastName; }}
Contenido relacionado
Intercambio de paquetes entre redes
Telecomunicaciones en Ghana
Fantasma McDonnell FH