Conjunto de especificaciones que amplían Java SE
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 funciones 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, concurrencia y administración de los componentes que están 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 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 y sistemas de información bancaria .
Historia
La plataforma se conoció como Java 2 Platform, Enterprise Edition o J2EE desde 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.
Oracle mantuvo Java EE bajo el Java Community Process . El 12 de septiembre de 2017, Oracle Corporation anunció que presentaría Java EE a la Fundación Eclipse . [3] El proyecto de nivel superior de Eclipse se denominó Eclipse Enterprise for Java (EE4J). [4] La Fundación Eclipse no pudo llegar a un acuerdo con Oracle sobre el uso de las marcas comerciales javax y Java. [5] Oracle posee la marca comercial del nombre "Java" y la plataforma pasó de llamarse Java EE a Jakarta EE. [6] [7] El nombre hace referencia a la ciudad más grande de la isla de Java y también a la capital de Indonesia, Yakarta . [8] 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 .
Presupuesto
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 y gestionar 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
- Jakarta Servlet : define cómo gestionar las solicitudes HTTP, de forma sincrónica o asincrónica. Es de bajo nivel y otras especificaciones de Jakarta EE dependen de él;
- Jakarta WebSocket: especificación API que define un conjunto de API para dar servicio a conexiones WebSocket ;
- Jakarta Faces : una tecnología para construir interfaces de usuario a partir de componentes;
- Jakarta Expression Language ( EL ) es un lenguaje simple diseñado originalmente para satisfacer las necesidades específicas de los desarrolladores de aplicaciones web. Se utiliza 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 utilizar en toda la plataforma.
Especificaciones del servicio web
Especificaciones empresariales
- Jakarta Activation ( JAF ) especifica una arquitectura para ampliar los componentes Beans proporcionando tipificación de datos y enlaces de dichos tipos.
- Jakarta Contexts and Dependency Injection ( CDI ) es una especificación para proporcionar un contenedor de inyección de dependencia ;
- La especificación de Jakarta Enterprise Beans ( EJB ) define un conjunto de API ligeras que un contenedor de objetos (el contenedor EJB) admitirá para proporcionar transacciones (mediante JTA ), llamadas a procedimientos remotos (mediante RMI o RMI-IIOP ), control de concurrencia , inyección de dependencias y control de acceso para objetos comerciales. Este paquete contiene las clases e interfaces de Jakarta Enterprise Beans que definen los contratos entre el bean empresarial y sus clientes y entre el bean empresarial y el contenedor ejb.
- Jakarta Persistence ( JPA ) son especificaciones sobre el mapeo relacional de objetos entre tablas de bases de datos relacionales y clases Java.
- Jakarta Transactions ( JTA ) contiene las interfaces y anotaciones para interactuar con el soporte de transacciones ofrecido por Jakarta EE. Si bien esta API se abstrae de los detalles de nivel realmente bajo, las interfaces también se consideran de nivel bajo y se supone que el desarrollador de aplicaciones promedio en Jakarta EE confía en el manejo transparente de transacciones por parte de las abstracciones EJB de nivel superior o usa las anotaciones proporcionadas por esta API en combinación con los 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 de Jakarta: este paquete contiene las anotaciones e interfaces para la compatibilidad con la validación declarativa que ofrece la API de validación de Jakarta. La validación de Jakarta proporciona una forma unificada de proporcionar restricciones a los beans (por ejemplo, las clases del modelo de persistencia de Jakarta) que se pueden aplicar en varias capas. En Jakarta EE, la persistencia de Jakarta respeta las restricciones de validación de los 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 duración que posiblemente involucren 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 ). Se trata de una API de bajo nivel dirigida a proveedores con los que el desarrollador de aplicaciones promedio normalmente no entra 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:
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 , agrupamiento , tolerancia a fallas , alta disponibilidad , seguridad , etc.), tamaño instalado, huella de memoria , tiempo de inicio, etc.
EE. UU. de Yakarta
Java EE
Ejemplo de código
El ejemplo de código que se muestra a continuación demuestra cómo se utilizan juntas varias tecnologías en Java EE 7 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 Faces ( JSF ) con Facelets . El ejemplo siguiente utiliza Faces y Facelets . No se muestra explícitamente que los componentes de entrada utilizan la API de validación de bean de Jakarta EE en segundo plano 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= "#{userConvertor}" /> </f:metadata> <h:cuerpo> <h:mensajes /> <h:form> <h:panelGrid columnas= "2" > <h:outputLabel para= "firstName" valor= "Nombre" /> <h:inputText id= "firstName" valor= "#{userEdit.user.firstName}" etiqueta= "Nombre" /> <h:outputLabel for= "lastName" value= "Apellido" /> <h:inputText id= "lastName" value= "#{userEdit.user.lastName}" label= "Apellido" /> <h:commandButton acción= "#{userEdit.saveUser}" valor= "Guardar" /> </h:panelGrid> </h:form> </h:cuerpo> </html>
Ejemplo de clase Backing Bean
Para facilitar la visualización, Jakarta EE utiliza un concepto denominado "Backing Bean". El ejemplo siguiente utiliza Contexts and Dependency Injection (CDI) y Jakarta Enterprise Beans ( EJB ).
@Named @ViewScoped clase pública UserEdit { Usuario privado usuario ; @Inject usuarioDAO privado userDAO ; public String saveUser ( ) { userDAO.save ( this.user ) ; addFlashMessage ( " Usuario " + this.user.getId ( ) + " guardado " ) ; devolver "usuarios.xhtml?faces-redirect=true" ; } public void setUser ( Usuario usuario ) { this.usuario = usuario ; } público Usuario getUser () { return 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 utilizar JDBC o Jakarta Persistence (JPA). El ejemplo siguiente utiliza EJB y JPA. No se muestra explícitamente que EJB utiliza JTA en secreto para controlar el comportamiento transaccional.
@Stateless clase pública UserDAO { @PersistenceContext EntityManager privado entityManager ; public void save ( Usuario usuario ) { entityManager . persist ( usuario ); } public void update ( Usuario usuario ) { entityManager.merge ( usuario ) ; } pública Lista < Usuario > getAll ( ) { return entityManager.createNamedQuery ( " Usuario.getAll " , Usuario.class ) .getResultList ( ) ; } }
Ejemplo de clase de entidad
Para definir clases de entidad/modelo, Jakarta EE proporciona Jakarta Persistence ( JPA ) y, para expresar restricciones en esas entidades, proporciona la API Bean Validation. El siguiente ejemplo utiliza ambas tecnologías.
@Entity clase pública Usuario { @Id @GeneratedValue ( estrategia = IDENTIDAD ) privado Entero id ; @Size ( min = 2 , mensaje = "Nombre demasiado corto" ) cadena privada firstName ; @Size ( min = 2 , mensaje = "Apellido demasiado corto" ) private String apellido ; público entero getId () { devolver id ; } público void setId ( entero id ) { este . id = id ; } public String getFirstName () { devolver nombre ; } public void setFirstName ( String firstName ) { this.firstName = firstName ; } public String getLastName () { return apellido ; } public void setLastName ( String apellido ) { this.lastName = apellido ; } }
Véase también
Referencias
- ^ "Diferencias entre Java EE y Java SE - Su primera taza: Introducción a la plataforma Java EE". Docs.oracle.com. 2012-04-01 . Consultado el 2012-07-18 .
- ^ "Descripción general de Java EE". Oracle Corporation . Consultado el 26 de febrero de 2017 .
- ^ Waters, John K. (12 de septiembre de 2017). "Java EE se está trasladando a Eclipse Foundation". ADTmag . Consultado el 13 de septiembre de 2017 .
- ^ Beaton, Wayne. "Preguntas frecuentes sobre EE4J". Fundación Eclipse .
- ^ Milinkovich, Mike (3 de mayo de 2019). "Actualización sobre los derechos de Jakarta EE sobre las marcas comerciales de Java". Blog. La vida en Eclipse . Consultado el 25 de julio de 2024 .
- ^ Chirgwin, Richard (4 de marzo de 2018). "Java EE cambió su nombre a 'Jakarta EE' después de una disputa con la marca Big Red". Software. The Register . Consultado el 19 de marzo de 2018 .
- ^ Vaughan-Nichols, Steven J. (5 de marzo de 2018). "Adiós JEE, hola Jakarta EE". Linux y código abierto. ZDNet . Consultado el 10 de julio de 2020 .
- ^ Tijms, Arjan (27 de febrero de 2020). "Transición de Java EE a Yakarta EE". Revista Java. blogs.oracle.com . Consultado el 25 de julio de 2024 .
- ^ "Lanzamientos EE de Yakarta". Yakarta EE.UU. Fundación Eclipse . Consultado el 17 de julio de 2024 .
- ^ Obradovic, Tanja; Grimstad, Ivar (22 de septiembre de 2022). "El grupo de trabajo Jakarta EE de la Fundación Eclipse lanza Jakarta EE 10 para marcar el comienzo de la era de Java nativo en la nube". Noticias. Jakarta EE (Comunicado de prensa). Fundación Eclipse . Consultado el 17 de julio de 2024 .
- ^ Obradovic, Tanja; Grimstad, Ivar (25 de mayo de 2021). "El grupo de trabajo de Jakarta EE lanza Jakarta EE 9.1 mientras la industria continúa adoptando Java empresarial de código abierto". Noticias. Jakarta EE (Comunicado de prensa). Eclipse Foundation . Consultado el 5 de marzo de 2022 .
- ^ Mmayel, Shabnam; Obradovic, Tanja (8 de diciembre de 2020). "¡Lanzamiento de Yakarta EE 9!". Noticias. Yakarta EE (Presione soltar). Fundación Eclipse . Consultado el 5 de marzo de 2022 .
- ^ Mmayel, Shabnam; Obradovic, Tanja (10 de septiembre de 2019). "¡Lanzamiento de Yakarta EE 8!". Noticias. Yakarta EE (Presione soltar). Fundación Eclipse . Consultado el 5 de marzo de 2022 .
- ^ Krill, Paul (21 de noviembre de 2003). "Certificación de especificación J2EE 1.4". Desarrollo de software. InfoWorld . Consultado el 5 de marzo de 2022 .
- ^ Copeland, Lee (24 de septiembre de 2001). «Sun presenta J2EE 1.3». Desarrollo de software. Computerworld . Consultado el 5 de marzo de 2022 .
- ^ "JSR 316: Especificación de la plataforma Java, Enterprise Edition 6 (Java EE 6)". Proceso de la comunidad Java . Oracle Corporation . Consultado el 5 de marzo de 2022 .
- ^ "JSR 342: Especificación de la plataforma Java, Enterprise Edition 7 (Java EE 7)". Proceso de la comunidad Java . Oracle Corporation . Consultado el 5 de marzo de 2022 .
- ^ "Especificación de perfil web de Java Platform, Enterprise Edition 8 (Java EE 8)" (PDF) . GitHub . Oracle Corporation . Archivado (PDF) del original el 2022-10-09 . Consultado el 2022-02-05 .
- ^ "Definición de perfil web". Jakarta EE WebProfile . 8. Jakarta EE. Eclipse Foundation . Consultado el 5 de marzo de 2022 .
- ^ "Definición de perfil web". Jakarta EE WebProfile . 9. Jakarta EE. Eclipse Foundation . Consultado el 5 de marzo de 2022 .
- ^ "Definición de perfil web". Jakarta EE WebProfile . 9.1. Jakarta EE. Eclipse Foundation . Consultado el 5 de marzo de 2022 .
- ^ "Definición de perfil web". Jakarta EE WebProfile . 10. Jakarta EE. Eclipse Foundation . Consultado el 27 de septiembre de 2022 .
- ^ "Productos compatibles con Jakarta EE". Jakarta.ee .
- ^ "Productos compatibles con Jakarta EE 9". Jakarta.ee .
- ^ "Productos compatibles con Jakarta EE 8". Jakarta.ee .
- ^ "Plataforma Jakarta EE 10 y MicroProfile 6 en Open Liberty 23.0.0.1-beta". openliberty.io .
- ^ ab "Compatibilidad con Jakarta EE 10, MicroProfile 6 y Java SE 20 en Open Liberty 23.0.0.3". openliberty.io .
- ^ "Apache TomEE". tomee.apache.org . Consultado el 8 de enero de 2024 .
- ^ abcdefg "Compatibilidad con Java EE". www.oracle.com . Consultado el 5 de agosto de 2018 .
- ^ abcdefg "Compatibilidad con Java EE".
- ^ ab "Comparación de las versiones 2.x y 3.0.x de GlassFish Open Source Edition". Archivado desde el original el 20 de diciembre de 2012.
- ^ "Compatibilidad con Java EE". Java.sun.com. 2010-09-07 . Consultado el 2012-07-18 .
- ^ "Servidor Oracle Weblogic 14.1.1". www.oracle.com .
- ^ "Oracle Weblogic Server 12.1.1". www.oracle.com .
- ^ Lyons, Will; Humphrey, Pieter (2011). "Oracle Web Logic Server 12c: desarrollo de aplicaciones Java EE 6 modernas y ligeras" (PDF) . Archivado desde el original (PDF) el 2011-12-15 . Consultado el 2011-12-03 .
- ^ "Compatibilidad con Java EE". www.oracle.com .
- ^ "Lanzamiento de JBoss AS 7.1.0.Final "Thunder" - ¡Perfil completo certificado para Java EE 6! | Mi Wiki | Comunidad Planet JBoss". Planet.jboss.org. 17 de febrero de 2012. Consultado el 18 de julio de 2012 .
- ^ "Servidor de aplicaciones JBoss - Comunidad JBoss".
- ^ "Servidor de aplicaciones JBoss - Comunidad JBoss".
- ^ "Compatibilidad con Java EE".
- ^ "¡JBoss AS ahora cuenta con la certificación EE5!". 15 de septiembre de 2008. Archivado desde el original el 20 de septiembre de 2008. Consultado el 7 de agosto de 2016 .
- ^ "Disponibilidad de Red Hat JBoss Enterprise Application Platform 7.2".
- ^ Business Wire (20 de junio de 2012). "Red Hat lanza JBoss Enterprise Application Platform 6 para ayudar a las empresas a trasladar el desarrollo y la implementación de aplicaciones a la nube". Business Wire . Consultado el 18 de julio de 2012 .
- ^ "Novedades de WebSphere Application Server V8". Ibm.com . Consultado el 18 de julio de 2012 .
- ^ ab "IBM WebSphere Application Server Liberty ofrece el primer servidor de aplicaciones compatible con Java EE 8 listo para producción y amplía el soporte para aplicaciones Spring Boot". IBM . 10 de julio de 2018 . Consultado el 12 de julio de 2018 .
- ^ "Java EE 7 - Configuraciones probadas - IBM WebSphere Application Server Liberty Profile". Oracle.com .
- ^ "Java EE 7 ha llegado a WAS Liberty - WASdev". 25 de junio de 2015.
- ^ "Configuraciones probadas del perfil web IBM Java EE 6".
- ^ "Apache Geronimo: Índice". geronimo.apache.org . 25 de enero de 2010.
- ^ "Apache Geronimo totalmente certificado para Java EE 6 - The H Open: Noticias y características". H-online.com. 14 de noviembre de 2011. Archivado desde el original el 20 de abril de 2012. Consultado el 18 de julio de 2012 .
- ^ "Configuraciones probadas, Java EE 6 - TMAX JEUS 7". Oracle.com. 7 de septiembre de 2010. Consultado el 18 de julio de 2012 .
- ^ "Servidor de aplicaciones web Java EE6, WAS Software". Us.tmaxsoft.com. Archivado desde el original el 2012-07-02 . Consultado el 2012-07-18 .
- ^ "Java EE 6 - Configuraciones probadas, Java EE 6 - Hitachi uCosminexus Application Server v9.0". Oracle.com.
- ^ "Servidor de aplicaciones Fujitsu Interstage con tecnología de Windows Azure". Archivado desde el original el 10 de agosto de 2011.
- ^ "Configuraciones probadas, Java EE6 - Fujitsu Interstage". Oracle.com. 2010-09-07 . Consultado el 2012-07-18 .
- ^ "Fujitsu lanza el servidor de aplicaciones Interstage V10.1". Fujitsu.
- ^ "Certificación del servidor de aplicaciones NEC WebOTX V9.x".
- ^ "Apache TomEE". Openejb.apache.org . Consultado el 18 de julio de 2012 .
- ^ "MarketWatch.com". MarketWatch.com . Consultado el 18 de julio de 2012 .
- ^ TomEE, Apache. "Apache TomEE 7.0.1".
- ^ "Perfil web de Resin Application Server Java EE 6" (PDF) . caucho.com . 2011. Archivado (PDF) desde el original el 2022-10-09.
- ^ "¡Démosle la bienvenida a Siwpas como opción certificada para Java EE!". Oracle.com . Consultado el 7 de diciembre de 2015 .
- ^ "JOnAS 5.3.0 RC1 publicado". jonas.ow2.org . 2013-01-07. Archivado desde el original el 2013-10-15 . Consultado el 2014-02-25 .
- ^ "¡Perfil web certificado para SAP NetWeaver Cloud Java EE 6! (El Acuario)".
- ^ "Soluciones de software SAP: aplicaciones empresariales y tecnología". Archivado desde el original el 7 de diciembre de 2009. Consultado el 3 de mayo de 2010 .
Enlaces externos
Wikimedia Commons tiene medios relacionados con Yakarta EE .
- Sitio web oficial
- Productos compatibles con Jakarta EE: servidores web y aplicaciones Java empresariales - Eclipse Foundation
- El tutorial de Jakarta EE
- Tutorial de la primera taza de Jakarta EE: una introducción a Jakarta EE
- Plataforma Java, edición empresarial (Java EE), Oracle Technology Network
- Canal oficial de Jakarta EE en YouTube