Yakarta EE. UU.

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

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 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.

Java enterprise platform history
Versión de la plataformaLiberadoEspecificaciónJava SE ApoyoCambios importantes
Yakarta EE 102022-09-1310
  • Java SE 17
  • Java SE 11
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.12021-05-259.1
  • Java SE 11
  • Java SE 8
Apoyo JDK 11
Yakarta EE 92020-12-089Java SE 8API namespace mover de javax a jakarta
Yakarta EE 82019-09-108Java SE 8Compatibilidad completa con Java EE 8
Java EE 82017-08-31JSR 366Java SE 8Seguridad basada en HTTP/2 y CDI
Java EE 72013-05-28JSR 342Java SE 7Soporte WebSocket, JSON y HTML5
Java EE 62009-12-10JSR 316Java SE 6CDI administraba frijoles y REST
Java EE 52006-05-11JSR 244Java SE 5Anotaciones de Java
J2EE 1.42003-11JSR 151J2SE 1.4Servicios web interoperables WS-I
J2EE 1.32001-09-24JSR 58J2SE 1.3Arquitectura conector Java
J2EE 1.21999-12-171.2J2SE 1.2Publicació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ónJava EE 6Java EE 7Java EE 8
Yakarta EE 8
Yakarta EE 9
Yakarta EE 9.1
Yakarta EE 10
Yakarta Servlet3.03.14.0 5.0 6.0
Páginas de Servidor de Yakarta (JSP)2.22.32.3 3.0 3.1
Idioma de Expresión de YakartaEL)2.23.03.0 4.0 5.0
Yakarta Debugging Support for Other Languages (JSR-45)1.01.01.0 2.0 2.0
Biblioteca de la etiqueta estándar de YakartaJSTL)1.21.21.2 2.0 3.0
Caras de Yakarta2.02.22.3 3.0 4.0
Yakarta RESTful Web ServicesJAX-RS)1.12.02.1 3.0 3.1
Yakarta WebSocketWebSocket)1.01.1 2.0 2.1
Jakarta JSON ProcesamientoJSON-P)1.01.1 2.0 2.1
Jakarta JSON Binding (en inglés)JSON-B)1.1 2.0 3.0
Anotaciones de Yakarta ()CA)1.11.21.3 2.0 2.1
Jakarta Enterprise BeansEJB)3.1 Lite3.2 Lite3.2 Lite 4.0 Lite 4.0 Lite
Transacciones de Yakarta ()JTA)1.11.21.2 2.0 2.0
Persistencia de YakartaJPA)2.02.12.2 3.0 3.1
Validación de judías1.01.12.0 3.0 3.0
Jakarta Managed Beans1.01.01.0 2.0
Interceptores de Yakarta1.11.21.2 2.0 2.1
Contextos de Yakarta e inyección de dependencia (CDI)1.01.12.0 3.0 4.0
Jakarta Dependencia de inyección1.01.01.0 2.0 2.0
Seguridad de Yakarta1.0 2.0 3.0
Jakarta Authentication1.01.1 2.0 3.0
Jakarta Concurrency3.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

Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save