Java avanzado: streams, lambdas y concurrencia
Domina las capacidades avanzadas de Java: programación funcional con lambdas y streams, Optional bien usado, y concurrencia moderna con executors, CompletableFuture y virtual threads.
- Nivel
- Avanzado
- Duración
- 24 horas
- Modalidades
- Online en directo · In-company · A medida
- Dirigido a
- Desarrolladores Java con experiencia que quieren dominar el estilo funcional y la concurrencia.

¿Qué es este curso y por qué te interesa?
Hay dos áreas de Java que separan a un desarrollador competente de uno avanzado: el estilo funcional y la concurrencia. La primera porque los streams y las lambdas dominan el código moderno y usarlos mal produce pipelines ilegibles o lentos. La segunda porque la concurrencia es donde aparecen los errores más caros de producción: condiciones de carrera, deadlocks y fugas de hilos que no se reproducen en desarrollo.
Este curso trabaja ambas en profundidad. En la parte funcional: interfaces funcionales, lambdas y method references, la API de streams con sus collectors, el diseño de pipelines legibles, Optional usado con criterio y los límites reales de los parallel streams. En la parte concurrente: el modelo de memoria de Java, executors y pools de hilos, composición asíncrona con CompletableFuture, colecciones concurrentes y los virtual threads que Java 21 incorporó como cambio de paradigma para cargas de I/O.
El enfoque es de diagnóstico y criterio, no de recetario: cada técnica se acompaña de sus casos de uso, sus costes y sus errores típicos, con laboratorios donde se provocan y corrigen condiciones de carrera, se miden pipelines y se decide entre hilos de plataforma y virtual threads con datos. Al terminar sabrás escribir código funcional y concurrente que rinde y se puede razonar.
Capacidades que adquirirás
- Escribir código funcional idiomático con lambdas, method references e interfaces funcionales.
- Dominar la API de streams: collectors avanzados, agrupaciones y diseño de pipelines legibles.
- Usar Optional con criterio y conocer los límites reales de los parallel streams.
- Programar concurrencia moderna: executors, CompletableFuture y colecciones concurrentes.
- Aplicar virtual threads de Java 21 y decidir cuándo aportan frente a los hilos de plataforma.
Objetivos del curso
- 01Comprender las interfaces funcionales del JDK y diseñar las propias cuando convenga.
- 02Construir pipelines de streams eficientes, con collectors avanzados y sin abusos.
- 03Entender el modelo de memoria de Java: visibilidad, atomicidad y happens-before.
- 04Gestionar hilos con executors y componer flujos asíncronos con CompletableFuture.
- 05Detectar y corregir condiciones de carrera, deadlocks y contención.
- 06Diagnosticar problemas de rendimiento con profiling básico de la JVM.
¿Es este curso para ti o para tu equipo?
Desarrolladores Java con experiencia que quieren dominar el estilo funcional y la concurrencia.
Desarrolladores Java con experiencia
Programadores que dominan el lenguaje y quieren profundizar en estilo funcional, concurrencia y rendimiento.
Desarrolladores backend en producción
Perfiles que mantienen servicios con problemas de concurrencia o rendimiento y necesitan diagnosticarlos.
Tech leads y revisores de código
Responsables técnicos que revisan código con streams y concurrencia y necesitan criterio sólido para evaluarlo.
Temario completo
Programa estructurado en módulos. Cada itinerario in-company se ajusta al nivel y a los objetivos concretos del equipo.
- Interfaces funcionales del JDK: Function, Predicate, Supplier, Consumer.
- Lambdas y method references: sintaxis, capturas y legibilidad.
- Composición de funciones y diseño de APIs que reciben comportamiento.
- Cuándo el estilo funcional aporta y cuándo complica.
Cómo se imparte
Práctica desde la primera sesión
Cada bloque combina explicación, demostración y laboratorio. Los alumnos trabajan sobre casos reales aplicables a su contexto profesional.
Casos de cliente
En programas in-company partimos de los procesos y datos del cliente. La formación deja de sonar genérica y empieza a resolver problemas concretos.
Materiales de apoyo
Los participantes reciben código, plantillas y guías reutilizables tras la formación. Lo que se aprende se mantiene en el día a día.
Adaptación al nivel del equipo
Antes de impartir, hacemos un breve diagnóstico y ajustamos profundidad y ritmo. La formación no se queda corta ni avanza por encima del grupo.
Modalidades disponibles
Cada formato puede adaptarse al ritmo y al contexto operativo de la organización.
Online en directo
Sesiones en streaming con interacción en vivo, ejercicios guiados y resolución de dudas.
In-company
Programa diseñado a medida y impartido para un único equipo o organización.
A medida
Itinerario completamente personalizado: temario, duración, formato y casos del cliente.
¿Por qué contratar este programa para tu equipo?
La formación no se diseña contra un examen, se diseña contra un objetivo de negocio.
- Mejora de productividad real en el puesto de trabajo.
- Actualización de competencias clave para el negocio.
- Mayor autonomía técnica y reducción de dependencia externa.
- Aplicación práctica inmediata sobre procesos del cliente.
- Mejor adopción tecnológica con criterios profesionales.
- Preparación para proyectos de IA, datos, automatización o desarrollo.
¿Se puede gestionar como formación bonificada?
Este curso puede plantearse como formación para empresas y, según las condiciones de cada organización, podría gestionarse dentro de iniciativas de formación bonificada. En DatIACode te ayudamos a estructurar la propuesta formativa y la documentación necesaria para su valoración.
¿Qué necesitas saber antes de empezar?
- Experiencia sólida con Java: POO, colecciones, genéricos y excepciones.
- Haber trabajado en proyectos Java reales o completado el curso de Java intermedio.
- Ordenador con JDK 21 o superior para los laboratorios de virtual threads.
Cómo se aplica lo aprendido
- Servicios backend con cargas concurrentes de I/O intensivo.
- Procesamiento de colecciones de datos con pipelines de streams.
- Migración de código bloqueante a modelos asíncronos o virtual threads.
- Diagnóstico de condiciones de carrera y problemas de rendimiento en producción.
- Modernización de código imperativo hacia un estilo funcional legible.
Por qué elegir DatIACode
No vendemos formación: diseñamos programas que se traducen en capacidad operativa real.
Experiencia aplicada
Más de 20 años combinando consultoría, desarrollo y formación tecnológica para empresas de distintos sectores.
Visión de negocio
Cada programa parte de los objetivos del cliente. La técnica está al servicio del problema, no al revés.
Adaptación al equipo
Ajustamos profundidad, ritmo y casos de uso al nivel real del equipo tras un breve diagnóstico inicial.
Formación + consultoría
Si la formación destapa un proyecto, podemos acompañarte en su implantación. No abandonamos el resultado.
Especialización en IA
Trabajamos en IA aplicada todos los días. La formación no la imparte alguien que solo enseña, la imparte alguien que también construye.
Orientación a resultados
Entregables tangibles y métricas pactadas. Sin promesas vacías.
FAQ
No. La parte de concurrencia empieza por los fundamentos (modelo de memoria, visibilidad, sincronización) antes de subir a executors, CompletableFuture y virtual threads. Lo que sí se asume es soltura con el lenguaje: este no es un curso para quien está aprendiendo Java.
Cuéntanos qué necesitas
Te respondemos en menos de 24h laborables con disponibilidad, opciones de modalidad y propuesta a medida si aplica.
- Diagnóstico inicial sin compromiso.
- Propuesta adaptada al nivel y al sector.
- Asesoramiento sobre formación bonificada.
Cursos relacionados
Ver todos los cursos- Ver curso
Programación24 horasJava intermedio: POO, colecciones y excepciones
- Ver curso
Programación16 horasJava moderno: novedades de Java 21 a 25 LTS
- Ver curso
Programación30 horasDesarrollo backend con Java y Spring Boot
