# JavaMastery > Java 17 y 21 con Spring Boot 3, de cero a producción: plan de estudio en 30 días. JavaMastery es un plan de estudio gratuito, en español, de Java 17 y 21 con Spring Boot 3 en 30 días y 9 fases. Cada día explica sus conceptos por dentro con código, propone una sesión práctica de 90 minutos, preguntas con respuesta razonada, katas y un paso de un proyecto guiado («Pedidos»), y enlaza las fuentes oficiales. Cada fase cierra con un quiz de verdadero o falso. Cada enlace apunta a la versión en Markdown de la página. Todo el contenido en un solo fichero: https://aprende-java.webs-economicas.es/llms-full.txt ## Fase 0: Setup Profesional, JDK y Dominio de Maven - [Día 1: Instalación de JDK, Dominio de Apache Maven y Anatomía de Dependencias](https://aprende-java.webs-economicas.es/dias/jdk-maven-dependencias.md): Gestión de JDK 17 y 21, Maven Wrapper (mvnw), Anatomía del pom.xml, Scopes y Plugins - [Quiz de la fase 0](https://aprende-java.webs-economicas.es/quiz/fase-0.md): 10 afirmaciones de verdadero o falso con su explicación ## Fase 1: Java Vanilla — El Núcleo del Lenguaje (17 & 21) - [Día 2: Cimientos del Lenguaje, POO Limpia y Records Inmutables](https://aprende-java.webs-economicas.es/dias/poo-limpia-records.md): Primitivos vs Wrappers, Modificadores de Acceso y Modelado de Datos en Java 17 y 21 - [Día 3: Programación Orientada a Objetos de Verdad: Herencia, Interfaces y Polimorfismo](https://aprende-java.webs-economicas.es/dias/poo-herencia-interfaces-polimorfismo.md): Clases abstractas y jerarquías sealed, interfaces con métodos default, sobrescritura y enlace dinámico, static y final, y enums con comportamiento - [Día 4: Memoria JVM, Contrato equals/hashCode y Manejo de Excepciones](https://aprende-java.webs-economicas.es/dias/memoria-jvm-equals-hashcode-excepciones.md): El Ciclo de Vida de los Objetos, Colisiones en Tablas Hash y Try-With-Resources en Java 17/21 - [Día 5: El Collection Framework y Genéricos en Java 17 y 21](https://aprende-java.webs-economicas.es/dias/colecciones-genericos.md): List, Set, Map, Queue y Deque, Sequenced Collections en Java 21 y rendimiento asintótico - [Día 6: Programación Funcional: Streams, Optional y Pattern Matching en 17/21](https://aprende-java.webs-economicas.es/dias/streams-optional-pattern-matching.md): Pipelines Perezosos, Sealed Interfaces y el Salto del Pattern Matching de Java 17 a Java 21 - [Día 7: APIs del Día a Día: Fechas, Texto, Ficheros, HTTP y Logging](https://aprende-java.webs-economicas.es/dias/fechas-texto-ficheros-http-logging.md): java.time, StringBuilder y expresiones regulares, NIO con Files y Path, HttpClient y logging con SLF4J y Logback - [Quiz de la fase 1](https://aprende-java.webs-economicas.es/quiz/fase-1.md): 19 afirmaciones de verdadero o falso con su explicación ## Fase 2: De Vanilla a la Necesidad de Herramientas - [Día 8: Testing Profesional en Java Puro: JUnit 5 y AssertJ](https://aprende-java.webs-economicas.es/dias/junit-5-assertj.md): Pruebas Unitarias Rápidas, Ciclo de Vida de Maven y TDD en Java 17 y 21 - [Día 9: Acceso a Datos Artesanal con JDBC: El Dolor del SQL Manual](https://aprende-java.webs-economicas.es/dias/jdbc-sql-manual.md): Connection, PreparedStatement, Mapeo Manual y Transacciones en Java 17/21 - [Día 10: Inyección de Dependencias Manual: El Nacimiento de Spring](https://aprende-java.webs-economicas.es/dias/inyeccion-de-dependencias-manual.md): El Operador new como Acoplamiento, Inversión de Control (IoC) y Ensamblado en el main() - [Día 11: Mockito y Dobles de Prueba: Tests Unitarios Aislados](https://aprende-java.webs-economicas.es/dias/mockito-dobles-de-prueba.md): Stubs, mocks, fakes y spies, @Mock e @InjectMocks, verify y ArgumentCaptor, y qué no conviene mockear - [Quiz de la fase 2](https://aprende-java.webs-economicas.es/quiz/fase-2.md): 14 afirmaciones de verdadero o falso con su explicación ## Fase 3: El Salto a Spring Boot 3 y APIs REST - [Día 12: El Contenedor de Beans de Spring Boot 3 e Inyección Idiomática](https://aprende-java.webs-economicas.es/dias/spring-boot-beans-inyeccion.md): ApplicationContext, Component Scanning, Requisitos de Java 17 y Compatibilidad con Java 21 - [Día 13: APIs REST Robustas: DTOs con Records y ProblemDetail RFC 7807](https://aprende-java.webs-economicas.es/dias/apis-rest-dtos-problemdetail.md): @RestController, Jakarta Validation Declarativa y Manejo Global de Errores en 17/21 - [Día 14: Spring Data JPA e Hibernate: Automatizando la Persistencia](https://aprende-java.webs-economicas.es/dias/spring-data-jpa-hibernate.md): Entidades, Ciclo de Vida del EntityManager, Dirty Checking y Transacciones en 17/21 - [Día 15: JPA en Producción: Relaciones, N+1, Paginación y Migraciones](https://aprende-java.webs-economicas.es/dias/jpa-produccion-n-1-paginacion-migraciones.md): @ManyToOne y @OneToMany, LAZY y EAGER, JOIN FETCH y @EntityGraph, Pageable y Flyway - [Quiz de la fase 3](https://aprende-java.webs-economicas.es/quiz/fase-3.md): 15 afirmaciones de verdadero o falso con su explicación ## Fase 4: Seguridad, Concurrencia y Reactividad vs Virtual Threads - [Día 16: Seguridad Stateless con Spring Security 6 y JWT en Java 17/21](https://aprende-java.webs-economicas.es/dias/spring-security-jwt.md): SecurityFilterChain, Sesiones sin Estado, Filtros OncePerRequestFilter y Autorización por Método - [Día 17: Concurrencia Clásica y Java Memory Model](https://aprende-java.webs-economicas.es/dias/concurrencia-java-memory-model.md): ExecutorService, synchronized y ReentrantLock, volatile y happens-before, atómicos y ConcurrentHashMap, y CompletableFuture - [Día 18: Concurrencia en la JVM: De Hilos Clásicos a Virtual Threads en Java 21](https://aprende-java.webs-economicas.es/dias/virtual-threads.md): Project Loom, Platform Threads vs Virtual Threads, Thread Pools y Concurrencia Estructurada - [Día 19: Programación Reactiva (Project Reactor, WebFlux, RxJava) vs Virtual Threads](https://aprende-java.webs-economicas.es/dias/programacion-reactiva-webflux.md): Mono, Flux, Backpressure, Netty no bloqueante vs el Modelo Imperativo de Java 21 - [Quiz de la fase 4](https://aprende-java.webs-economicas.es/quiz/fase-4.md): 14 afirmaciones de verdadero o falso con su explicación ## Fase 5: Testing de Integración, APIs y Carga - [Día 20: Testing de Integración Real con Testcontainers y PostgreSQL](https://aprende-java.webs-economicas.es/dias/testcontainers-postgresql.md): Pruebas de Extremo a Extremo sin Depender de Simuladores H2 en Memoria - [Día 21: Tests de API y de Carga: MockMvc, REST Assured, BDD y JMeter](https://aprende-java.webs-economicas.es/dias/tests-api-carga-mockmvc-rest-assured-jmeter.md): Probar la API como la usa un cliente, escribir escenarios de negocio con Cucumber y medir el rendimiento antes de producción - [Quiz de la fase 5](https://aprende-java.webs-economicas.es/quiz/fase-5.md): 10 afirmaciones de verdadero o falso con su explicación ## Fase 6: Mensajería Asíncrona con Kafka, RabbitMQ, EDA y CQRS - [Día 22: Mensajería Asíncrona con Apache Kafka y Spring Boot 3](https://aprende-java.webs-economicas.es/dias/kafka-spring-boot.md): Topics, Partitions, Consumer Groups, Producers, KafkaTemplate y Serialización Avro/JSON - [Día 23: RabbitMQ, Patrones de Mensajería y Comparativa Estratégica con Kafka](https://aprende-java.webs-economicas.es/dias/rabbitmq-vs-kafka.md): Exchanges, Queues, Bindings, Routing Keys, AMQP 0-9-1, Spring AMQP y Cuándo Elegir Cada Uno - [Día 24: Arquitectura Orientada a Eventos y Patrón Outbox](https://aprende-java.webs-economicas.es/dias/arquitectura-eventos-outbox.md): Eventos de dominio e integración, publicación fiable con Outbox, consumidores idempotentes y consistencia eventual - [Día 25: CQRS y Event Sourcing: Modelos de Lectura y Estado como Historia](https://aprende-java.webs-economicas.es/dias/cqrs-event-sourcing.md): Separar comandos y consultas, construir proyecciones desde eventos, guardar el estado como secuencia de eventos y saber cuándo no merece la pena - [Quiz de la fase 6](https://aprende-java.webs-economicas.es/quiz/fase-6.md): 15 afirmaciones de verdadero o falso con su explicación ## Fase 7: API Gateway, API-First, Arquitectura Hexagonal Enterprise y Sagas - [Día 26: API Gateway, API-First Design y Contratos OpenAPI 3.1](https://aprende-java.webs-economicas.es/dias/api-gateway-openapi.md): Spring Cloud Gateway, Enrutamiento Declarativo, Generación de Código con OpenAPI Generator - [Día 27: Arquitectura Hexagonal (Ports & Adapters) y Clean Architecture](https://aprende-java.webs-economicas.es/dias/arquitectura-hexagonal-clean.md): Dominio Aislado, Puertos de Entrada/Salida, Adaptadores de Infraestructura y Paquetes de DDD - [Día 28: Arquitecturas Distribuidas: Sagas, Circuit Breaker, Resiliencia y Librerías Spring Boot](https://aprende-java.webs-economicas.es/dias/sagas-circuit-breaker-resiliencia.md): Patrón Saga (Orquestación vs Coreografía), Resilience4j, Spring Boot Actuator y Starters Esenciales - [Quiz de la fase 7](https://aprende-java.webs-economicas.es/quiz/fase-7.md): 10 afirmaciones de verdadero o falso con su explicación ## Fase 8: Contenedores, Kubernetes / OpenShift y Observabilidad LKA / LGTM - [Día 29: Contenedores y Kubernetes / OpenShift para Java Spring Boot](https://aprende-java.webs-economicas.es/dias/contenedores-kubernetes-openshift.md): Docker multi-stage, JRE headless, Pods, Deployments, Services, ConfigMaps, Secrets, Ingress/Routes y Probes - [Día 30: Observabilidad Completa: Grafana, Prometheus, Loki y OpenTelemetry / Tempo (LKA / LGTM)](https://aprende-java.webs-economicas.es/dias/observabilidad-grafana-prometheus-opentelemetry.md): Los Tres Pilares: Métricas con Micrometer, Logs Estructurados JSON con Loki y Trazas Distribuidas con Tempo - [Quiz de la fase 8](https://aprende-java.webs-economicas.es/quiz/fase-8.md): 14 afirmaciones de verdadero o falso con su explicación