Curso Jakarta EE 9 (0). Presentación.

logo Jakarta EE

Bienvenid@ a esta serie de tutoriales organizados en forma de curso que exploran la amplia y poderosa colección de APIs estándar de Java -llamadas especificaciones- recopiladas bajo el paraguas de Jakarta EE, la evolución de “Java Enterprise Edition” (JEE)-. Estas especificaciones nos permitirán construir aplicaciones web robustas con todas las funcionalidades demandadas en la actualidad.

Si eres un programador Java neófito que quiere dar con firmeza sus primeros pasos en el mundo del desarrollo web, o si ya tienes algo de experiencia y has utilizado tecnologías como JPA o servicios REST pero sin profundizar en ellas, estás en el lugar adecuado.

>>>> ÍNDICE <<<<

Presentación

Mi objetivo a la hora de organizar el curso en capítulos es conseguir un aprendizaje progresivo de los elementos necesarios para construir una aplicación web típica que incluya, entre otras características y servicios, API REST, interfaz gráfica HTML y el empleo de bases de datos. Además de todo lo que ofrece Jakarta EE, examinaremos la utilización de librerías (Lombok, JUnit, Arquillian, Swagger…), tecnologías (Docker) y herramientas (Maven, Eclipse, IntelliJ) que facilitarán nuestro trabajo y, en algunos casos, serán imprescindibles. Iremos bien pertrechados a la batalla.

Crearemos una aplicación, llamada PersonalBudget (presupuesto personal), de gestión de gastos y presupuestos. No resulta original, y por ello es un buen ejemplo: cualquiera comprenderá sin dificultad las funcionalidades que vamos a implementar. También se incluirán otros proyectos, pequeños e independientes, con el fin de ver con detalle los conceptos  presentados.

A grandes rasgos, el curso tiene la siguiente estructura.

  • Introducción. Comenzaremos abordando los conceptos capitales y las motivaciones detrás de las especificaciones Java. Un breve recorrido por su pasado, presente y futuro inmediato.
  • ¡Manos a la obra! En el capítulo dos instalaremos los programas necesarios y en el tercero crearemos el primer proyecto.
  • Pruebas automáticas. Buena parte de lo que vayamos estudiando los pondremos en práctica con pruebas, de ahí que este bloque se presente tan pronto.
  • Docker es un aliado imprescindible. Simplifica la configuración y uso de entornos de desarrollo, pruebas y producción. Cuatro capítulos introducen desde cero esta tecnología de virtualización.
  • Jakarta Contexts and Dependency Injection (CDI para los amigos). La primera especificación que estudiaremos será la base de todas las aplicaciones desarrolladas con Jakarta EE, el “pegamento” capaz de relacionar clases y componentes con abstracción y elegancia.
  • Jakarta Persistence (JPA). Empezaremos la creación de PersonalBudget diseñando su modelo de datos para una base de datos relacional. Si estas siglas no le resultan familiares al lector, quizás le suene Hibernate ORM, el popular marco de trabajo que usaremos.
  • Arquitecturas. Daremos forma a PersonalBudget con una arquitectura multicapa, sencilla y robusta, tan clásica que se considera un estándar de facto. Asimismo, exploraremos algunas variaciones.
  • Jakarta REST. Aquí cumpliremos el primer gran hito del curso con la versión inicial de PersonalBudget. Además de los aspectos técnicos, indagaremos en los principios y consejos a seguir en el diseño de una buena API.
  • JSON. Hablando de REST, no pueden faltar en nuestro itinerario las APIs para trabajar con la notación JSON.
  • Jakarta Security. Controlaremos quién puede acceder a la aplicación y qué acciones tiene permitidas.
  • (El resto del contenido está aún por decidir)

Según la lista anterior (¡y todavía incompleta!), el alcance del curso puede ser ingente pues la cantidad de temas y APIs a cubrir es bastante amplia. Cuando se diseña una formación, si no está dedicada a un tema muy específico y bien acotado, algunas de las decisiones más difíciles consisten en decidir qué conceptos se van a examinar y el nivel de profundidad de su estudio.

Tratándose de un curso de programación, hace falta el debido equilibro entre teoría y práctica. Como desarrolladores -yo el primero- solemos poner toda la atención en escribir código y disponer de funcionalidades operativas lo antes posible. Sin embargo, resulta complicado crear sistemas simples y eficientes si desconocemos cómo utilizar las APIs y sacar el máximo partido a las herramientas y marcos de trabajo a nuestra disposición.

Veremos las características de Jakarta EE y sus especificaciones con vocación práctica y centrándonos en el código. El lector aplicará los conceptos aprendidos de forma inmediata, pero también construirá una base sólida con la que podrá ampliar sus conocimientos con facilidad. En última instancia, y debido a su enfoque y organización, el curso sirve de manual de consulta rápida.

Conocimientos previos

Creo que los requisitos para afrontar el curso son muy razonables.

  • Conocimientos esenciales del lenguaje Java, incluyendo el uso de genéricos, anotaciones y un algo de programación funcional (streams, lambdas…). Aclararé todo aquello que pueda resultar difícil o novedoso a un programador novel.
  • Bases de datos relacionales: tablas, claves primarias y ajenas, índices y operaciones SQL muy básicas.
  • Estar familiarizado con las tecnologías de las aplicaciones web (HTTP, HTML) a un nivel elemental. Basta con haber realizado alguna pequeña aplicación con independencia del lenguaje empleado.

En lo relativo al equipamiento, no hace falta una computadora de grandes capacidades. Cualquier máquina con al menos 4 GB de memoria RAM debería ser suficiente. Recomiendo 8 GB si se utilizan herramientas tan demandantes como Eclipse o IntelliJ.

Los programas requeridos se presentan a medida que sean necesarios. He validado el código en Linux (Ubuntu y Linux Mint) y Windows 10. Haré referencia a sendos sistemas operativos cuando sea pertinente resaltar alguna diferencia. Si bien no veremos macOS, todos los programas que usaremos tienen versiones para el sistema operativo de Apple.

Convenciones

El idioma de la informática -y de la ciencia y tecnología en general- es, sin duda alguna, el inglés. Me he propuesto escribir un texto lo más “castellano” posible, aunque resulta inevitable que estén llenos de anglicismos. Indicaré la terminología anglosajona, imprescindible en la búsqueda de información, procurando utilizar vocablos y expresiones en español siempre y cuando exista una traducción apropiada. Para abreviar, usaré con frecuencia acrónimos, explicados la primera vez que aparezcan.

Me encanta el adagio <<una imagen vale más que mil palabras>>. Numerosos diagramas de clases, capturas de pantalla e ilustraciones servirán de ayuda en la comprensión de conceptos que a veces son difíciles de explicar o entender con el único recurso de la expresión escrita. Es posible que tengan un diseño poco vistoso; me conformo con que resulten útiles. Con carácter anecdótico, utilizaré videos de corta duración.

Abundarán enlaces externos a documentación oficial y páginas javadoc para completar la información y facilitar el acceso en el acto a los detalles de las APIs. Algunos -los menos- llevarán a otros capítulos para que el lector pueda refrescar su memoria, y a tutoriales del blog que sirven de complemento o incluso constituyen parte del curso. Esto último se debe a que los publiqué con anterioridad. De momento, he decidido reutilizarlos porque resultan adecuados en su versión actual y prefiero centrarme en la elaboración de nuevo contenido.

Por supuesto, tendremos una gran cantidad de código fuente y ficheros XML, presentados con la extensión disponible en WordPress.com. En ocasiones, para aligerar la lectura, no se mostrará su contenido completo sino los fragmentos más relevantes.

Todos los proyectos de ejemplo están en un único repositorio en GitHub y al final de cada capítulo se enlaza con el proyecto relacionado. Para más información acerca del uso de GitHub, consultar este artículo.

>>>> ÍNDICE <<<<

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .