Yakarta EE


Jakarta EE , anteriormente Java Platform, Enterprise Edition ( Java EE ) y Java 2 Platform, Enterprise Edition ( J2EE ) es un conjunto de especificaciones que amplía Java SE [1] con especificaciones para características empresariales como computación distribuida y servicios web . [2] 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, simultaneidad 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 poder declarar que sus productos cumplen con Jakarta EE .

Ejemplos de contextos en los que se utilizan tiempos de ejecución de referencia de Jakarta EE son: comercio electrónico , contabilidad, sistemas de información bancaria.

La plataforma se conocía como Java 2 Platform, Enterprise Edition o J2EE desde la versión 1.2, hasta que el nombre se cambió 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 de Java . El 12 de septiembre de 2017, Oracle Corporation anunció que enviaría Java EE a Eclipse Foundation . [3] El proyecto de nivel superior de Eclipse se ha denominado Eclipse Enterprise para Java (EE4J). [4] La Fundación Eclipse se vio obligada a cambiar el nombre porque Oracle posee la marca registrada para el nombre "Java" y cambió el nombre de la plataforma Java EE a Jakarta EE. [5] [6] 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 .

  • J2EE 1.2 (12 de diciembre de 1999)
  • J2EE 1.3 (24 de septiembre de 2001)
  • J2EE 1.4 (11 de noviembre de 2003)
  • Java EE 5 (11 de mayo de 2006)
  • Java EE 6 (10 de diciembre de 2009)
  • Java EE 7 (28 de mayo de 2013) [7] pero el 5 de abril de 2013 según el documento de especificaciones. El 12 de junio de 2013 fue la fecha de inicio prevista [8]
  • Java EE 8 (31 de agosto de 2017) [9]
  • Jakarta EE 8 (10 de septiembre de 2019) [10] : totalmente compatible con Java EE 8
  • Jakarta EE 9 (22 de noviembre de 2020) [11] - javax. * A jakarta. * Cambio de espacio de nombres.
  • Jakarta EE 9.1 (25 de mayo de 2021) [12] - Compatibilidad con JDK 11

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 de Java SE básicas , como Jakarta Enterprise Beans , conectores , servlets , Jakarta Server Pages y varias tecnologías de servicios web .

Especificaciones web

  • Jakarta Servlet : define cómo gestionar las solicitudes HTTP, de forma síncrona o asincrónica. Es de bajo nivel y otras especificaciones de Yakarta EE se basan en él;
  • Jakarta WebSocket: especificación de API que define un conjunto de API para dar servicio a las conexiones WebSocket ;
  • Jakarta Faces : una tecnología para construir interfaces de usuario a partir de componentes;
  • Jakarta Expression Language ( EL ) es un lenguaje simple originalmente diseñado para satisfacer las necesidades específicas de los desarrolladores de aplicaciones web. Se usa específicamente en Jakarta Faces para vincular componentes a beans (de respaldo) y en Contexts and Dependency Injection a beans con nombre, pero se puede usar en toda la plataforma.

Especificaciones del servicio web

  • Los servicios web RESTful de Yakarta brindan soporte para la creación de servicios web de acuerdo con el patrón arquitectónico de Transferencia de estado representacional (REST);
  • El procesamiento JSON de Jakarta es un conjunto de especificaciones para administrar información codificada en formato JSON;
  • Jakarta JSON Binding proporciona especificaciones para convertir información JSON en o desde clases Java;
  • Jakarta XML Binding permite mapear XML en objetos Java;
  • Los servicios web XML de Jakarta se pueden utilizar para crear servicios web SOAP.

Especificaciones empresariales

  • Jakarta Contexts and Dependency Injection ( CDI ) es una especificación para proporcionar un contenedor de inyección de dependencia ;
  • La especificación Jakarta Enterprise Beans ( EJB ) define un conjunto de API ligeras que un contenedor de objetos (el contenedor EJB) admitirá para proporcionar transacciones (usando JTA ), llamadas a procedimientos remotos (usando RMI o RMI-IIOP ), control de concurrencia , dependencia inyección y control de acceso a objetos de negocio. Este paquete contiene las clases e interfaces de Jakarta Enterprise Beans que definen los contratos entre el enterprise bean y sus clientes y entre el enterprise bean y el contenedor ejb.
  • Jakarta Persistence ( JPA ) son especificaciones sobre el mapeo relacional de objetos entre tablas de bases de datos de relaciones y clases Java.
  • Jakarta Transactions ( JTA ) contiene las interfaces y anotaciones para interactuar con el soporte de transacciones ofrecido por Jakarta EE. Aunque esta API se abstrae de los detalles de nivel realmente bajo, las interfaces también se consideran de nivel algo bajo y se supone que el desarrollador de aplicaciones promedio en Yakarta EE depende del manejo transparente de transacciones por las abstracciones de EJB de nivel superior, o que utiliza las anotaciones proporcionadas por esta API en combinación con beans administrados por CDI.
  • Jakarta Messaging ( JMS ) proporciona una forma común para que los programas Java creen, envíen, reciban y lean los mensajes de un sistema de mensajería empresarial.

Otras especificaciones

  • Validación: este paquete contiene las anotaciones e interfaces para el soporte de validación declarativa que ofrece la API de validación de Bean . Bean Validation proporciona una forma unificada de proporcionar restricciones sobre beans (por ejemplo, clases de modelo JPA) que se pueden aplicar entre capas. En Jakarta EE, JPA respeta las restricciones de validación de beans en la capa de persistencia, mientras que JSF lo hace en la capa de vista.
  • Jakarta Batch proporciona los medios para el procesamiento por lotes en aplicaciones para ejecutar tareas en segundo plano de ejecución prolongada que posiblemente impliquen un gran volumen de datos y que es posible que deban ejecutarse periódicamente.
  • Jakarta 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 proveedores con los que el desarrollador de aplicaciones promedio no suele entrar en contacto.

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 de Jakarta EE. El perfil web de Jakarta EE comprende lo siguiente:

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 características adicionales (como conectores , agrupación en clústeres , tolerancia a fallas , alta disponibilidad , seguridad , etc.), tamaño instalado, espacio de memoria, tiempo de inicio, etc.


Yakarta EE [16] [17]

Java EE

El ejemplo de código que se muestra a continuación demuestra cómo varias tecnologías en Java EE 7 se utilizan 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 Caras y Facetas . No se muestra explícitamente que los componentes de entrada usan la API Jakarta EE Bean Validation bajo las cubiertas para validar restricciones.

 xmlns = "http://www.w3.org/1999/xhtml"  xmlns: h = "http://xmlns.jcp.org/jsf/html"  xmlns: f = "http: //xmlns.jcp .org / jsf / core " >    name = "user_id"  value = "# {userEdit.user}"  converter = "# {userConvertor}"  />     />    columnas = "2" >   for = "firstName"  value = "First  Name " />   id = "firstName"  value = "# {userEdit.user. firstName} "  label = " Nombre "  />  for = "lastName"  value = "Last name"  />   id = "lastName"  value = "# {userEdit.user.lastName}"  label = "Last name"  />  action = "# {userEdit.saveUser}"  value = "Guardar"  />