Yakarta EE - Jakarta EE

Yakarta EE
Logotipo de Jakarta EE color de la goleta apilado por defecto
Software del reproductor Java
Lenguajes de programación) Java
Aplicación (es) Servidor de aplicaciones
Estado Activo
Licencia Licencia pública de Eclipse o licencia pública general GNU con excepción de Classpath

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

Historia

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 . El proyecto de nivel superior de Eclipse se ha denominado Eclipse Enterprise para Java (EE4J). La Fundación Eclipse no pudo estar de acuerdo con Oracle sobre el uso de las marcas registradas javax y Java. Oracle posee la marca comercial del nombre "Java" y cambió el nombre de la plataforma Java EE a Jakarta EE. 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) 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.
  • Java EE 8 (31 de agosto de 2017)
  • Jakarta EE 8 (10 de septiembre de 2019): totalmente compatible con Java EE 8
  • Jakarta EE 9 (22 de noviembre de 2020): javax. * A jakarta. * Cambio de espacio de nombres.
  • Jakarta EE 9.1 (25 de mayo de 2021): compatibilidad con JDK 11

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

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 Jakarta 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 larga ejecución que posiblemente involucran un gran volumen de datos y que pueden necesitar 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.

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 de 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
Servlet de Yakarta 3,0 3.1 4.0 5,0
Páginas del servidor de Yakarta ( JSP ) 2.2 2.3 2.3 3,0
Lenguaje de expresión de Yakarta ( EL ) 2.2 3,0 3,0 4.0
Soporte de depuración de Yakarta para otros idiomas (JSR-45) 1.0 1.0 1.0 2.0
Biblioteca de etiquetas estándar de Yakarta ( JSTL ) 1.2 1.2 1.2 2.0
Caras de Yakarta ( JSF ) 2.0 2.2 2.3 3,0
Servicios web RESTful de Yakarta ( JAX-RS ) 1.1 2.0 2.1 3,0
Jakarta WebSocket ( WebSocket ) N / A 1.0 1.1 2.0
Procesamiento JSON de Yakarta ( JSON-P ) N / A 1.0 1.1 2.0
Enlace JSON de Jakarta N / A N / A 1.1 2.0
Anotaciones de Yakarta ( JSR 250 ) 1.1 1.2 1.3 2.0
Frijoles empresariales de Yakarta ( EJB ) 3.1 Lite 3.2 Lite 3.2 Lite 4.0 Lite
Transacciones de Yakarta ( JTA ) 1.1 1.2 1.2 2.0
Persistencia de Yakarta ( JPA ) 2.0 2.1 2.2 3,0
Validación de frijoles de Yakarta 1.0 1.1 2.0 3,0
Frijoles gestionados de Yakarta 1.0 1.0 1.0 2.0
Interceptores de Yakarta 1.1 1.2 1.2 2.0
Contextos de Yakarta y inyección de dependencia ( CDI ) 1.0 1.1 2.0 3,0
Inyección de dependencia de Yakarta 1.0 1.0 1.0 2.0
Seguridad de Yakarta N / A N / A 1.0 2.0
Autenticación de Yakarta N / A 1.0 1.1 2.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 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

Hacer referencia al tiempo de ejecución Desarrollador Productos compatibles con la plataforma Jakarta EE 9 Productos compatibles con Jakarta EE 9 Web Profile Productos compatibles con la plataforma Jakarta EE 8 Productos compatibles con Jakarta EE 8 Web Profile Licencia
GlassFish Eclipse Sí 6.0.0 Sí 6.0.0 Sí 5.1.0 Sí 5.1.0 Software libre
Libertad abierta IBM Sí 21.0.0.3-beta Sí 21.0.0.2-beta Sí 19.0.0.6, 20.0.0.3 Sí 19.0.0.6, 20.0.0.3 Software libre
IBM WebSphere Liberty IBM No No Sí 20.0.0.3 Sí 20.0.0.3 Software propietario
Vuelo salvaje sombrero rojo No Sí 23.0.0 Sí 18.0.0 Sí 18.0.0 Software libre
Plataforma de aplicaciones empresariales Red Hat JBoss sombrero rojo No No Sí 7.3.0 Sí 7.3.0 Software libre
A Mee apache No Sí 10.0.x No Sí 9.x Software libre
Payara Server Payara Services Limited No No Sí 5.22.0, 5.23.0 Sí 5.23.0 Software libre
Servidor de aplicaciones de Thunisoft Tecnología de la información de Beijing Thunisoft No No Sí 2.8 No Software propietario
JEUS TmaxSoft No No Sí 8.5 No Software propietario
Servidor de aplicaciones InforSuite Middleware de Shandong Cvicse No No Sí 10 No Software propietario

Java EE

Hacer referencia al tiempo de ejecución Desarrollador Certificación Java EE 8 - Completa Certificación Java EE 8 - Web Certificación Java EE 7 - Completa Certificación Java EE 7 - Web Certificación Java EE 6:
página oficial completa de Oracle para compatibilidad con Java EE.
Certificación Java EE 6 - Web Certificación Java EE 5 Certificación J2EE 1.4 Licencia
Edición de código abierto del servidor GlassFish Oráculo Sí v5.0 Sí v5.0 Sí v4.x Sí v4.x Sí v3.xy superior Sí Perfil web v3.x Sí v2.1.x Software libre
Servidor Oracle GlassFish Oráculo Sí, v3 basado en el servidor de aplicaciones GlassFish de código abierto Sun Java System Application Server v9.0 Sun Java System Application Server v8.2 Software propietario
Servidor Oracle WebLogic Oráculo Sí 14.1.1 Sí 12.2.1 Sí v12c Sí v10.3.5.0 Sí v9 Software propietario
Vuelo salvaje sombrero rojo 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
Plataforma de aplicaciones empresariales JBoss sombrero rojo Sí v7.2 Sí v7.0 Sí v7.0 Sí v6.0 Sí v5 Software propietario
Servidor de aplicaciones IBM WebSphere IBM Sí v9.x Sí v9.x Sí v8 Sí v7 Software propietario
IBM WebSphere Application Server Liberty IBM Sí v18.0.0.2 Sí v18.0.0.2 Sí v8.5.5.6 Sí v8.5.5.6 Sí v8.5.5 Software propietario
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 propietario
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 propietario
Servidor de aplicaciones Cosminexus Hitachi Sí v10.0 Sí v9 Software propietario
Servidor de aplicaciones entre etapas de Fujitsu Fujitsu Sí v12.0 Sí v1 Azure / v10.1 Software propietario
WebOTX Comité ejecutivo nacional Software propietario
Servidor de aplicaciones BES Baolande Sí v9.5
Apache TomEE apache No 7 (Java EE 7 gusta, pero no certificado) Software libre
Servidor de resina Caucho Sí v4.0 Software propietario
Siwpas OW2 Sí v6.0 Software libre
JOnAS OW2 Sí v5.3 rc1 Software libre
SAP NetWeaver SAVIA Sí v2.x Software propietario
Contenedores de Oracle para Java EE Oráculo Software propietario
Servidor web Oracle iPlanet Oráculo Sí Servidor web Sun Java System Software propietario
Servidor de aplicaciones Oracle 10g Oráculo Software propietario
Servidor Pramati Tecnologías Pramati Sí v5.0 Software propietario
Trifork T4 Trifork Software propietario
Servidor de aplicaciones empresariales Sybase Sybase Software propietario

Muestra de código

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.

<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 name="user_id" value="#{userEdit.user}" converter="#{userConvertor}" />
    </f:metadata>

    <h:body>

        <h:messages />

        <h:form>
            <h:panelGrid columns="2">
                <h:outputLabel for="firstName" value="First name" />
                <h:inputText id="firstName" value="#{userEdit.user.firstName}" label="First name" />

                <h:outputLabel for="lastName" value="Last name" />
                <h:inputText id="lastName" value="#{userEdit.user.lastName}" label="Last name" />

                <h:commandButton action="#{userEdit.saveUser}" value="Save" />
            </h:panelGrid>
        </h:form>

    </h:body>
</html>

Ejemplo de clase Backing Bean

Para ayudar a la vista, Jakarta EE utiliza un concepto llamado "Backing Bean". El siguiente ejemplo utiliza Contexts and Dependency Injection (CDI) y Jakarta Enterprise Beans ( EJB ).

@Named
@ViewScoped
public class UserEdit {

    private User user;

    @Inject
    private UserDAO userDAO;

    public String saveUser() {
        userDAO.save(this.user);
        addFlashMessage("User " + this.user.getId() + " saved");

        return "users.xhtml?faces-redirect=true";
    }

    public void setUser(User user) {
        this.user = user;
    }

    public User getUser() {
        return user;
    }
}

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 utilizar JDBC o Jakarta Persistence (JPA). El siguiente ejemplo utiliza EJB y JPA. No se muestra explícitamente que EJB utiliza JTA de forma encubierta para controlar el comportamiento transaccional.

@Stateless
public class UserDAO {

    @PersistenceContext
    private EntityManager entityManager;

    public void save(User user) {
        entityManager.persist(user);
    }

    public void update(User user) {
        entityManager.merge(user);
    }

    public List<User> getAll() {
        return entityManager.createNamedQuery("User.getAll", User.class)
                            .getResultList();
    }

}

Clase de entidad de ejemplo

Para definir clases de entidad / modelo, Jakarta EE proporciona Jakarta Persistence ( JPA ), y para expresar restricciones sobre esas entidades, proporciona la API de validación de Bean. El siguiente ejemplo utiliza ambas tecnologías.

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = IDENTITY)
    private Integer id;

    @Size(min = 2, message="First name too short")
    private String firstName;

    @Size(min = 2, message="Last name too short")
    private String lastName;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

}

Ver también

Referencias

enlaces externos