Plan de 30 días · 9 fases
Java 17 y 21 con Spring Boot 3, de cero a producción
Un día por tema: qué es, cómo funciona por dentro, una sesión práctica de 90 minutos, preguntas para comprobar que lo has entendido y katas. Cada fase cierra con un quiz.
Empezar por el día 1
Instalación de JDK, Dominio de Apache Maven y Anatomía de Dependencias
Cómo es cada día
- Conceptos
- Cada concepto con su explicación, un ejemplo de código y el error típico, y qué cambia entre Java 17 y 21.
- Sesión de 90 minutos
- Cuatro bloques cronometrados para practicar lo del día con un resultado que puedes comprobar.
- Ponte a prueba
- Explícalo desde cero, preguntas por niveles y un reto del tutor.
- Práctica
- Katas, reglas de oro y un paso del proyecto guiado «Pedidos», que crece contigo de un día a otro.
El progreso se guarda en este navegador, sin cuentas. Puedes exportarlo e importarlo desde «Tu progreso». 121 afirmaciones de quiz y un repaso espaciado de las que falles.
El temario
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 Gestión de JDK 17 y 21, Maven Wrapper (mvnw), Anatomía del pom.xml, Scopes y Plugins
Fase 1: Java Vanilla — El Núcleo del Lenguaje (17 & 21)
- Día 2 Cimientos del Lenguaje, POO Limpia y Records Inmutables 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 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 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 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 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 java.time, StringBuilder y expresiones regulares, NIO con Files y Path, HttpClient y logging con SLF4J y Logback
Fase 2: De Vanilla a la Necesidad de Herramientas
- Día 8 Testing Profesional en Java Puro: JUnit 5 y AssertJ 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 Connection, PreparedStatement, Mapeo Manual y Transacciones en Java 17/21
- Día 10 Inyección de Dependencias Manual: El Nacimiento de Spring 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 Stubs, mocks, fakes y spies, @Mock e @InjectMocks, verify y ArgumentCaptor, y qué no conviene mockear
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 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 @RestController, Jakarta Validation Declarativa y Manejo Global de Errores en 17/21
- Día 14 Spring Data JPA e Hibernate: Automatizando la Persistencia 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 @ManyToOne y @OneToMany, LAZY y EAGER, JOIN FETCH y @EntityGraph, Pageable y Flyway
Fase 4: Seguridad, Concurrencia y Reactividad vs Virtual Threads
- Día 16 Seguridad Stateless con Spring Security 6 y JWT en Java 17/21 SecurityFilterChain, Sesiones sin Estado, Filtros OncePerRequestFilter y Autorización por Método
- Día 17 Concurrencia Clásica y Java Memory Model 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 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 Mono, Flux, Backpressure, Netty no bloqueante vs el Modelo Imperativo de Java 21
Fase 5: Testing de Integración, APIs y Carga
- Día 20 Testing de Integración Real con Testcontainers y PostgreSQL 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 Probar la API como la usa un cliente, escribir escenarios de negocio con Cucumber y medir el rendimiento antes de producció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 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 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 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 Separar comandos y consultas, construir proyecciones desde eventos, guardar el estado como secuencia de eventos y saber cuándo no merece la pena
Fase 7: API Gateway, API-First, Arquitectura Hexagonal Enterprise y Sagas
- Día 26 API Gateway, API-First Design y Contratos OpenAPI 3.1 Spring Cloud Gateway, Enrutamiento Declarativo, Generación de Código con OpenAPI Generator
- Día 27 Arquitectura Hexagonal (Ports & Adapters) y Clean Architecture 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 Patrón Saga (Orquestación vs Coreografía), Resilience4j, Spring Boot Actuator y Starters Esenciales
Fase 8: Contenedores, Kubernetes / OpenShift y Observabilidad LKA / LGTM
- Día 29 Contenedores y Kubernetes / OpenShift para Java Spring Boot 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) Los Tres Pilares: Métricas con Micrometer, Logs Estructurados JSON con Loki y Trazas Distribuidas con Tempo