## Bloque 3 Tema 5. Arquitectura Java EE/Jakarta EE y plataforma .NET. Componentes, persistencia y seguridad. Características, lenguajes y desarrollo de interfaces.

Este tema estudia las dos grandes plataformas de desarrollo empresarial: Java EE con su sucesor Jakarta EE, y la plataforma .NET de Microsoft.

---

## 1. Arquitectura Java EE y Jakarta EE

Java EE, o Java Enterprise Edition, era la plataforma de Oracle para el desarrollo de aplicaciones empresariales en Java. En 2017 Oracle donó la plataforma a la Eclipse Foundation, que la renombró como Jakarta EE. Permite crear aplicaciones web, distribuidas y escalables que se ejecutan sobre un servidor de aplicaciones.

Un servidor de aplicaciones es el software que proporciona los servicios necesarios a las aplicaciones empresariales: ejecución de aplicaciones web, gestión de transacciones, seguridad, gestión del pool de conexiones a base de datos y gestión de sesiones. El servidor de aplicaciones implementa las APIs de Jakarta EE. Los ejemplos más conocidos son WildFly, GlassFish y WebLogic.

Las APIs principales de Jakarta EE son las siguientes.

Los Servlets gestionan peticiones HTTP mediante los métodos GET, POST, PUT y DELETE. Son la base del desarrollo web en Java y definen el flujo de petición del cliente al servlet y de vuelta a la respuesta.

Las JSP o JavaServer Pages son páginas HTML con código Java incrustado que generan contenido dinámico en el servidor. Su uso ha disminuido en favor de frameworks modernos.

Los EJB o Enterprise JavaBeans son componentes de lógica de negocio con gestión automática de transacciones, seguridad y concurrencia. Su uso también ha declinado en las aplicaciones modernas.

JSF o JavaServer Faces es el framework estándar de Jakarta EE para desarrollar interfaces web basadas en componentes.

JPA o Java Persistence API es la API estándar para la persistencia de datos en Java. Permite mapear objetos Java a tablas de base de datos y realizar consultas orientadas a objetos mediante JPQL, el Java Persistence Query Language.

JTA o Java Transaction API gestiona las transacciones distribuidas garantizando las propiedades ACID.

---

## 2. Persistencia en Java

La persistencia es la capacidad de almacenar y recuperar datos de forma permanente.

JDBC o Java Database Connectivity es el acceso directo a la base de datos mediante SQL. Ofrece control total sobre las consultas pero requiere mucho código manual. Se asocia con el patrón de diseño DAO, o Data Access Object.

El ORM u Object Relational Mapping es el mapeo objeto-relacional que transforma tablas en clases y registros en objetos. La API estándar es JPA y su implementación más popular es Hibernate. Las consultas se escriben en JPQL en lugar de SQL nativo.

La documentación de APIs REST se gestiona con Swagger u OpenAPI. El código Java se documenta con JavaDoc.

---

## 3. Seguridad en Java EE

La seguridad en Java EE puede ser declarativa o programática. La seguridad declarativa se configura mediante ficheros o anotaciones y está basada en roles sin necesidad de código. La seguridad programática se implementa directamente en el código para casos más complejos.

Spring Security es el framework más popular para seguridad en aplicaciones Java. Proporciona autenticación, autorización, control de accesos y protección contra CSRF o Cross-Site Request Forgery.

---

## 4. Plataforma .NET

.NET es la plataforma de Microsoft para el desarrollo de aplicaciones. Permite crear aplicaciones web, de escritorio y servicios. En su versión moderna, .NET es multiplataforma y puede ejecutarse en Windows, Linux y macOS.

Los componentes principales de .NET son el CLR o Common Language Runtime, que es la máquina virtual que ejecuta el código compilado a un lenguaje intermedio llamado CIL; el framework de clases base o BCL, que proporciona las librerías fundamentales; y ASP.NET, que es el framework para el desarrollo de aplicaciones web.

Los lenguajes de .NET son C#, que es el lenguaje principal; VB.NET; y F#, que es un lenguaje funcional.

La persistencia en .NET se gestiona con ADO.NET, que es el acceso directo a bases de datos equivalente a JDBC; y con Entity Framework, que es el ORM de .NET equivalente a JPA e Hibernate.

La seguridad en .NET está integrada en el framework, se basa en roles y soporta múltiples métodos de autenticación como Windows Authentication, JWT y OAuth.

---

## 5. Comparativa Java EE y .NET

Tanto Java EE como .NET son plataformas empresariales maduras con componentes equivalentes. Java EE usa JPA e Hibernate para la persistencia; .NET usa Entity Framework. Java EE usa Spring Security para la seguridad; .NET tiene seguridad integrada. El lenguaje principal de Java EE es Java; el de .NET es C#. Java EE se ejecuta en la JVM; .NET se ejecuta en el CLR. Ambas son multiplataforma en sus versiones modernas.

---

## 6. Desarrollo de interfaces

Las tecnologías de desarrollo de interfaces se dividen en front-end y back-end.

El front-end es la parte que se ejecuta en el navegador del usuario. Se desarrolla con HTML para la estructura del contenido, CSS para la presentación y el diseño, y JavaScript para el comportamiento y la interactividad. Los frameworks de front-end más usados son Angular, React y Vue.

La comunicación entre cliente y servidor se realiza principalmente mediante llamadas HTTP con intercambio de datos en formato JSON para las APIs REST o XML para los servicios SOAP.

---

## Miniresumen final del tema

Jakarta EE es la plataforma empresarial Java que se ejecuta sobre servidores de aplicaciones como WildFly. Sus APIs principales son Servlet, JSP, EJB, JSF, JPA y JTA. La persistencia en Java usa JDBC para acceso directo o JPA e Hibernate como ORM. .NET es la plataforma de Microsoft con CLR, C#, ASP.NET y Entity Framework. Spring Security y la seguridad declarativa por roles son los enfoques habituales en ambas plataformas.
