Introducción a Jakarta EE
Introducción
La plataforma Jakarta EE (Jakarta Enterprise Edition) es la sucesora de la plataforma Java EE (Java Enterprise Edition). La primera versión de esta plataforma es Jakarta EE 8. Se lanzó el 10 de septiembre de 2019, después de dos años de duro trabajo. Desde el punto de vista funcional, es totalmente compatible con la última versión de Java EE, es decir, Java EE 8, que se lanzó en septiembre de 2017. Finalmente, la versión Jakarta EE 9 se lanzó en noviembre de 2020. Después de presentar cómo nace Jakarta EE, el libro se centra en las tecnologías esenciales de la plataforma Jakarta EE 9 para realizar de manera específica aplicaciones web en Java. La plataforma Jakarta EE no se limita a crear aplicaciones web, sino que permite crear aplicaciones distribuidas, de manera más global. Por lo tanto, proporciona un conjunto sustancial de funcionalidades que se presentan como especificaciones.
Retrocedamos un poco. La llegada de la plataforma Java EE 6 se acompañó de una «mini» plataforma Java EE llamada Java EE 6 Web Profile, que agrupa un subconjunto de las tecnologías que constituyen la plataforma Java EE 6. De hecho, en su momento, un inventario permitió reunir en la plataforma Java EE 6 Web Profile las tecnologías más utilizadas en el desarrollo de aplicaciones web. Desde entonces, cada nueva versión...
El ecosistema Java
Java ha existido durante más de veinticinco años. James Gosling y Patrick Naughton, de Sun Microsystems, lo crearon en 1995. Esta empresa fue adquirida por Oracle en 2009, por lo que ahora Java pertenece a Oracle.
¿Qué es Java?
-
En primer lugar, es un lenguaje orientado a objetos. Por lo tanto, el lenguaje Java permite escribir programas.
-
Además, es una plataforma de desarrollo. Se compone de un conjunto de herramientas, un conjunto de librerías que forman el JDK (Java SE Development Kit) y un conjunto de especificaciones (JSRs - Java Specification Requests), que describen las diferentes API que forman la plataforma.
En realidad, hay varias plataformas.
La plataforma de base se llama Java SE (Java Standard Edition). Está formada por todas las librerías del JDK y algunas especificaciones. Satisface la mayoría de las necesidades.
La segunda plataforma es la plataforma Java EE. Su objetivo es permitir la creación de aplicaciones distribuidas y, en particular, aplicaciones web. Esta plataforma se basa en la plataforma Java SE y en software de terceros: los servidores de aplicaciones. En septiembre de 2017, Oracle cedió la plataforma a la comunidad Open Source. Se eligió la Fundación Eclipse para organizar y gestionar la evolución de la nueva plataforma, bautizada como Jakarta EE. Para obtener más detalles, consulte la sección La plataforma Jakarta...
La plataforma Java SE
1. Introducción
La plataforma Java SE se puede resumir en el siguiente diagrama:
La plataforma que se instala en el puesto de un desarrollador es el JDK (Java SE Development Kit). El JDK incorpora de facto el JRE (Java Runtime Environment). El JDK ofrece API específicas, pero, sobre todo, herramientas de desarrollo, como el compilador javac.
La plataforma instalada en el puesto de destino (en el que se debe ejecutar el programa) es la JRE. Ofrece la API de Java y las herramientas necesarias en el entorno de ejecución, como la herramienta java, para iniciar la ejecución de un programa Java.
La JVM (Java Virtual Machine) forma parte del JRE. Permite ejecutar de manera efectiva el programa Java, que se pasa como parámetro de la herramienta java.
La API Java presente en el JRE es la API principal e imprescindible para desarrollar un programa usando el lenguaje Java. La API Java contiene una colección de componentes de software preconstruidos, que proporcionan un gran número de funcionalidades. La API Java, en su versión 11 (la última versión LTS - Long Term Support), está organizada en 21 módulos que agrupan más de 220 paquetes, el equivalente a las librerías en lenguajes como C. Cada paquete contiene clases e interfaces preconstruidas y directamente reutilizables. Por lo tanto, la plataforma proporciona alrededor de 4400 clases e interfaces.
El propósito de este libro no es presentar esta API, aunque tenemos una muestra de algunas funcionalidades disponibles:
-
lang and util: los paquetes java.lang y java.util proporcionan las funcionalidades principales, necesarias en todas las aplicaciones.
-
Collections: el framework de colecciones proporciona una amplia gama de clases e interfaces, para manipular conjuntos de objetos.
-
Reflection: la API de reflexión del paquete java.lang.reflect proporciona un conjunto de clases e interfaces para descubrir y manipular los metadatos de las clases de un programa. Un gran número de frameworks se basan en esta API porque permite utilizar anotaciones. Este tema se tratará a lo largo del libro.
-
Date and Time: los paquetes java.time y java.time.* permiten manipular fechas de forma eficiente. Estos paquetes aparecieron con JDK 8 y ofrecen una revisión global de la gestión de fechas.
-
Input/Output: los paquetes java.io y java.nio se utilizan para gestionar los flujos...
La plataforma Jakarta EE
1. Introducción
El papel de la plataforma Jakarta EE es proporcionar librerías (API) para crear aplicaciones web y, de manera más general, aplicaciones distribuidas.
En 2017, Oracle finalmente anunció el lanzamiento de la plataforma Java EE 8 después de cuatro años de espera. Para dar nueva vida a esta plataforma, se necesitó una reorganización para seguir el ritmo de la rápida evolución de las tecnologías y los diferentes enfoques. De hecho, han surgido proyectos, como Eclipse MicroProfile, para corregir esta falta de capacidad de respuesta y proporcionar soluciones adaptadas a las arquitecturas de microservicios, la nube, etc.
En septiembre de 2017, la plataforma Java EE se cedió oficialmente a la comunidad Open Source y se eligió la fundación Eclipse como garante de la organización y evolución de este proyecto. Durante dos años, la fundación Eclipse ha estado trabajando para hacer que toda la plataforma Java EE sea de código abierto. Al mismo tiempo, la plataforma pasó a llamarse Jakarta EE porque el nombre Java es propiedad de Oracle. El trabajo ha sido colosal. Millones de líneas de código tuvieron que ser transferidas, y nuevos procesos de evolución, definidos. La fundación no actuó sola y se rodeó de miembros y socios para llevar a cabo este trabajo:
-
Fujitsu
-
IBM
-
Oracle
-
Payara
-
RedHat
-
Tomitribe
Así es como se lanzó la primera versión de la plataforma Jakarta EE (Jakarta EE 8), el 10 de septiembre de 2019. Esta versión es funcionalmente equivalente a la plataforma Java EE 8. Las evoluciones «reales» llegarán con las próximas versiones de la plataforma. El proyecto Eclipse MicroProfile es una de las incubadoras que ofrece nuevas funcionalidades para futuras versiones.
A priori, las aplicaciones desarrolladas con Java EE 8 no necesitarán ser modificadas para trabajar con la plataforma Jakarta EE 8. Con la plataforma Jakarta EE 9, lanzada a fines de 2020, es diferente. De hecho, Oracle ha prohibido la modificación de paquetes javax, lo que requiere cambiar el nombre de todos estos paquetes para añadir evoluciones.
Por supuesto, la plataforma tiene su propio sitio web, disponible en https://jakarta.ee
2. El proceso de evolución de la plataforma
El proceso de evolución...
El protocolo HTTP
1. Introducción
El protocolo HTTP (HyperText Transfer Protocol) es esencial en la realización de aplicaciones web. Es necesario conocer sus principales características para lograr una aplicación eficaz.
El principio se basa en una pareja petición/respuesta, como se muestra en el siguiente diagrama:
El Cliente siempre es el que inicia el proceso enviando una petición al Servidor que, como resultado, enviará una respuesta. Las peticiones y respuestas HTTP se transportan mediante el protocolo TCP/IP (Transmission Control Protocol/Internet Protocol). Por lo tanto, antes de realizar la petición, es necesario establecer una conexión TCP/IP entre la máquina transmisora (el Cliente) y la máquina receptora (el Servidor).
Hasta la versión 1.0 del protocolo HTTP, se establece una conexión TCP/IP para cada pareja petición/respuesta emitida. Consume tiempo y recursos. Imagine una petición que solicita el contenido de un archivo HTML que hace referencia a un archivo CSS y otro JavaScript. En este caso, se realiza una primera petición a través de una conexión TCP/IP para obtener el archivo HTML. A continuación, el explorador procesa el contenido de este archivo y descubre la presencia de referencias a dos archivos de recursos adicionales. Por lo tanto, se establecen dos conexiones TCP/IP para ejecutar una petición y recuperar los dos recursos.
La versión 1.1 del protocolo HTTP permite transportar sucesivamente varias parejas de petición/respuesta en la misma conexión TCP/IP. Esto mejora el rendimiento. Sin embargo, la evolución de la riqueza del contenido de una página web ha vuelto a limitar el rendimiento del transporte de información. Para superar este problema, los proveedores de navegadores web han optado por aumentar el número de conexiones TCP/IP simultáneas (hasta seis) entre el cliente y el servidor. Esto permite hasta seis peticiones simultáneas. Esta solución está llegando a sus límites porque consume recursos y no aprovecha al máximo las posibilidades de una conexión TCP/IP. Esto se debe a que, entre el momento en que se envía la petición y se recibe la respuesta, no se solicita la conexión TCP/IP. Sin embargo, es la versión más utilizada en la actualidad....
El entorno de desarrollo
1. Tomcat
Tomcat es el servidor de aplicaciones elegido para implementar las tecnologías de la plataforma Jakarta EE.
a. Descarga
En el momento de escribir este libro, la última versión descargable es Tomcat 10.0.7 en https://tomcat.apache.org/download-10.cgi. Esta versión se debe utilizar para poder aprovechar la plataforma Jakarta EE 9.
Si se encuentra en un entorno Windows, elija la versión comprimida (apache-tomcat-10.0.7-windows-x64.zip para la versión de 64 bits) y no el instalador. De hecho, un servicio se instala automáticamente con el instalador. Esto no es ideal en un entorno de desarrollo.
Además, no dude en descargar la documentación completa. Para la versión utilizada, el nombre del archivo es apache-tomcat-10.0.7-fulldocs.tar.gz, accesible en la misma dirección.
b. Instalación en Windows
La instalación es sencilla. Simplemente descomprima el archivo correspondiente a su sistema operativo, en el directorio de su elección.
La operación no es más complicada en un entorno de desarrollo. La instalación en un entorno de producción requiere algunas operaciones adicionales.
Haga lo mismo para el archivo de documentación. Dado que se trata de un archivo de extensión tar.gz, repita la operación de descompresión dos veces seguidas. La primera descompresión da como resultado un archivo comprimido llamado apache-tomcat-10.0.7-fulldocs.tar. A continuación, al descomprimir este archivo, se obtiene un directorio denominado tomcat-10.0-doc. Le aconsejo que coloque este directorio en el directorio que contiene Tomcat.
He aquí el árbol de archivos y directorios que necesita obtener:
El directorio lib contiene las librerías que componen Tomcat. Pueden identificarse rápidamente dos librerías:
-
servlet-api.jar
-
jsp-api.jar
Ambas se corresponden con la implementación de las especificaciones consiguientes. Por lo tanto, Tomcat es un contenedor web.
El directorio bin contiene scripts para iniciar y detener manualmente Tomcat (startup.bat o catalina.bat para el arranque y shutdown.bat para la parada).
Para probar cómo funciona, ejecute el script startup.bat. Cuando se inicie el servidor, acceda a la aplicación predeterminada en el servidor a través de la siguiente dirección URL: http://localhost:8080.
c. Instalación...
Ejemplos del libro
1. Introducción
El libro está salpicado de ejemplos para describir el funcionamiento y el comportamiento de las API abordadas. Para tener una cierta homogeneidad, todos estos ejemplos provienen de un borrador de aplicación, que tiene como objetivo gestionar la clientela de un complejo deportivo.
2. Descripción funcional
La primera versión de la aplicación permitirá:
-
Administrar un directorio de clientes.
Cuando un nuevo cliente llega a las instalaciones del complejo deportivo, se solicitan sus datos de contacto para crear su cuenta.
-
Gestionar los terrenos de juego del complejo y los deportes que se pueden practicar en cada uno de ellos.
-
Gestionar los carnets de entrada que dan acceso a los terrenos de juego deportivos.
Para acceder a un terreno de juego, el cliente debe proporcionar un ticket. Puede comprar los tickets por carnet. Un carnet está asociado a un único deporte porque las tarifas son diferentes.
-
Dejar mensajes.
Los clientes pueden dejar mensajes para encontrar compañeros.
3. El diagrama de clases de análisis
El diagrama de clases de análisis resultante es el siguiente:
Presenta las clases necesarias para la organización de los datos manejados por la aplicación. Preste atención a las relaciones bidireccionales. En general, es preciso evitar su implementación porque es necesario poder gestionar la coherencia de la información en ambos...
Conclusión
Este capítulo ha presentado la plataforma Jakarta EE, los fundamentos del desarrollo web con el protocolo HTTP, el entorno de desarrollo que se utilizará en los próximos capítulos y el tema funcional que acompañará al lector en el resto del libro. Ahora que el escenario está listo, es hora de llegar al centro del asunto.