Newsletter Java: Novedades de la Semana 4 Abril 2025
Tu newsletter semanal de Programando En Java
✨¡Bienvenidos a otra semana de Java Weekly!
Esta semana, nos encontramos con un aluvión de lanzamientos y actualizaciones que podrían hacer que incluso tu abuelita quiera aprender a programar. ¡Así que pon atención! 🔥
Redes Sociales
📘 Facebook: Programando en JAVA
🐦 X (Twitter): ProgEnJava
📸 Instagram: Programando en Java
💼 LinkedIn: Ricardo Romero Benítez
▶️ YouTube: Programando en Java
🎵 TikTok: Programando en Java
🧵 Threads: Programando en Java
💬 Discord: Comunidad de Programando en JAVA
🎥 Video de la Semana en YouTube: Netflix y Monos: ¿Cómo Netflix escala sin colapsar?
¿Sabías que Netflix prueba constantemente sus sistemas... ¡atacándolos con monos! 🐒 En el video de esta semana te explico cómo funciona el famoso Chaos Monkey, parte de su estrategia para asegurar que su plataforma no se venga abajo, ni siquiera en los peores escenarios. Un vistazo fascinante a cómo escalan a lo grande sin perder la cabeza.
🔥 OpenJDK Update: ¡8 Nuevos JEPs a Candidate!
Semana explosiva en OpenJDK: ocho JEPs acaban de saltar de Draft a Candidate. Esto significa que están en la recta final rumbo a la incorporación oficial. ¿Qué hay dentro? Vamos por partes:
JEP 512: Compact Source Files and Instance Main Methods
¿Recuerdas los clásicos "hola mundo" que te volvían loco por detalles innecesarios? Este upgrade simplifica el inicio de los novatos para que enfoquen en aprender y no en reverse engineering de sintaxis compleja.
Viene desde JDK21 con cuatro previas que han pulido el camino (JEP 445 a 495).
Un golazo para la educación Java, bye-bye fricción.
JEP 511: Module Import Declarations
Trae una manera simple de importar toda la ropa (paquetes) de un módulo sin maromas.
Dos previas en JDK23 y 24 ya probaron esto sin cambios, ahora directo a Candidate para finiquitar.
Lee aquí para no quedarte en la ignorancia.
JEP 510: Key Derivation Function API
Seguridad al 1000%, por fin una API estándar para derivar claves desde una base secreta.
Esto hace que puedas construir sistemas super seguros y aún más fáciles de mantener.
¿Quieres ser un ninja cripto? Aquí la info.
JEP 509: JFR CPU-Time Profiling (Experimental)
Mejora el JDK Flight Recorder para Linux con profiling de cpu en tiempo real. Amplía tu arsenal para detectar cuellos de botella.
Más detalles, porque ser pro es saber medir, no adivinar.
JEP 508: Vector API (Décima Incubación)
Décima ronda, sin cambios desde JDK 24. Sigue incubando fuerte para que la manipulación vectorial rinda como una bestia a nivel CPU.
Proyecto Valhalla influye para la siguiente gran evolución.
JEP 507: Primitive Types en Patterns, instanceof y switch (Tercer Preview)
Ahora tus patterns y switches tratan primitivas como nunca. ¡Bye bye cajas innecesarias!
Más poder para el control de flujo a nivel bajo.
JEP 506: Scoped Values
Comparte datos inmutables entre threads sin el drama de los thread-locals, vital para la Era de los virtual threads.
Complejo pero súper útil, mira la evolución que lleva desde JDK20.
JEP 505: Structured Concurrency (Quinto Preview)
Dale orden a tus tareas concurrentes como un jefe. Manejo de errores y cancelaciones más simple y robusto.
Cambios cool en API, como pasar de constructores públicos a fábricas estáticas para scope de tareas.
🚀 JDK 25: Lo Que Viene & Calendario Troglodita
Menos de 2 meses para congelar las features en Rampdown Fase 1 (5 de junio, no lo olvides).
Ya confirmado en el set:
JEP 503: Adiós al port x86 32-bit. Sí, el dinosaurio muere.
JEP 502: Stable Values en Preview, apuntando a inmutabilidad poderosa.
Y ojo: JEP 508 (Vector API) va directo a la fiesta oficial en JDK 25.
Fechas clave para programadores hardcore:
Jupiter: 5/junio - Freeze features.
Lunático: 17/julio - Fase 2 rampdown.
Apocalipsis Release Candidate: 7/ago y 21/ago.
¡13 de septiembre llega el JDK25 a tu vida!
Calendario oficial y trackea bien para no quedar fuera de la jugada.
🤩 ¡Tu opinión importa!
¡Ayúdame a mejorar esta newsletter!. Responde esta encuesta (menos de 1 minuto) para contarme qué temas prefieres y cómo puedo mejorarla.
🚀 LittleHorse: La Nueva Bestia en Orquestación de Microservicios con Java y Más
Si pensabas que llevar la coordinación de microservicios y APIs externas era un dolor de cabeza, prepárate para conocer a tu nuevo mejor amigo: LittleHorse. Este proyecto open-source en Java está diseñado para orquestar sistemas distribuidos de manera inteligente, manejando desde el estado de las tareas hasta la recuperación automática de errores. Y sí, olvídate de aprender ningún maldito DSL especializado: LittleHorse usa lenguajes que ya conoces como Java, Go, Python, C# y .NET.
¿Qué hace? Orquesta workflows en tiempo real, maneja errores con retries automáticos, integra tareas humanas y se adapta a tus APIs y microservicios.
¿Cómo lo hace? Su motor principal, el LittleHorse Kernel (¡antes Server!), está construido en Java y utiliza Apache Kafka para mantener un registro duradero y confiable de estados.
Caso de uso: Desde manejo de procesos de negocio hasta workflows complejos en ambientes microservicio.
¿Cómo escribir un workflow? Con código. Sí, lees bien: Workflow-as-Code. Creas plantillas llamadas WfSpecs que definen paso a paso tu proceso, variables, condiciones y más.
Tareas? Cada unidad de trabajo dentro del workflow es una Task, declarada en código y manejada por workers que se comunican con el Kernel.
Ejemplo genial para que veas lo directo que es (en Java):
public class KycWorkflow implements Workflow {
@Override public String getName() { return "kyc-workflow"; }
@Override public void workflow(WorkflowThread wf) {
WfRunVariable customerInfoVar = wf.addVariable("customer-info", VariableType.JSON);
WfRunVariable verificationResultVar = wf.addVariable("verification-result", VariableType.JSON);
wf.execute("verify-identity-task", customerInfoVar).output(verificationResultVar);
// Define el resto de la lógica según el resultado...
}
}
Y para las tareas concretas:
public class VerificationTasks {
@LHTaskMethod("verify-identity-task")
public VerificationResult verifyIdentity(CustomerInfo customer) {
System.out.println("Verificando identidad de: " + customer.getName());
// Lógica de verificación...
return new VerificationResult(true);
}
}
🛠️ Deployment y Tooling
Kernel Open Source bajo licencia SSPLv1 (sí, open source para que puedas trastear a gusto).
También ofrecen servicio en la nube y versión para Kubernetes (LittleHorse For Kubernetes).
Herramientas top con dashboard web para monitoreo y línea de comandos con
lhctl
.SDKs por montón para que programar tu workflow sea pan comido.
🤓 Bonus Track: Origen y Comunidad
Detrás de LittleHorse está Colt McNealy, hijo de Scott McNealy, cofundador de Sun Microsystems. Abrieron el código en 2023 porque, según ellos, el software hecho para desarrolladores debe estar al alcance de todos. Por cierto, ambos fueron parte del keynote en JavaOne 2025 — nada mal para arrancar ¿no?
💥 Construye tu Backend en Minutos, No en Semanas
¿Cansado de perder tiempo construyendo infraestructura? ¡Déjalo en mis manos! Con Spring Boot JWT Starter Pack podrás lanzar tu backend YA.
✅ Autenticación segura con JWT
✅ Gestión de roles sin dolor de cabeza
✅ API documentada y lista para producción
✅ Compilación nativa para rendimiento superior
🚀 Menos configuración. Más código que importa.

🐦 BellSoft No Se Queda Atrás: Liberica JDK Al Día
Seguimos con parches, BellSoft anda muy activo lanzando actualizaciones de su Liberica JDK con todos los CPUs (Critical Patch Updates) cubriendo decenas de CVEs y más de 740 arreglos en total. Las versiones 21.0.6.0.1, 17.0.14.0.1, hasta la 6u461 recibieron cariño para dejar los exploits fuera del juego. Detalles aquí:
🌸 Spring Framework 7.0.0-M4: Nuevos Converters y Soporte JEP 484
El framework que no puede faltar en ningún proyecto moderno sigue evolucionando y lanza su milestone 4 con mejoras jugosas:
Incluye la clase
OptionalToObjectConverter
para convertir automáticamenteOptional<T>
a su objeto contenido, eliminando boilerplate molesto.Añade
ClassFileMetadataReader
que le mete mano a JEP 484 (Class-File API), facilitando la lectura y escritura de bytes de clases Java de forma limpia y optimizada.
Perfecto para cualquiera que quiera explotar las últimas capacidades de la JVM y tener código más claro. Más detalles en el blog oficial y en las release notes.
🕸️ Spring for GraphQL 1.4.0-RC1: Más Observabilidad y Mejor Server Transport
Para los que usan GraphQL, el primer release candidate de la versión 1.4 trae:
Observación mejorada con
graphql.dataloader
que mide con precisión los tiempos de carga de datos para trazas más exactas.Optimización en los transports del servidor para cancelar operaciones reactivas en vuelo, reduciendo carga y evitando llamadas innecesarias.
Todo para un desarrollo más pulido y eficiente. Explora las novedades aquí: release notes.
💦 Payara Platform Abril 2025: Logs Custom & Pooling Softened
Payara nos trae su combo de abril:
Control total para personalizar qué logs se mandan a los syslogs remotos, porque no todo lo que genera tu app es oro.
Nueva propiedad para pools de conexión que permite desactivar la verificación de propiedades cliente cuando pooling está en falso, dándole flexibilidad a configuraciones complejas.
Ideal para quien necesita mayor control en ambientes empresariales. Consulta las notas para Community y Enterprise:
🌱 Micronaut 4.8.2: Bugs Petados & Plugins Afinados
Micronaut Foundation no dice ni mu y lanza la versión 4.8.2 con actualizaciones bomba para:
Micronaut Core 4.8.11 y mejoras en el Maven Plugin.
Mejoras en JSON Schema, Micrometer y soporte Servlet.
Si tu stack tiene Micronaut, actualizar es un must. Más info en las release notes oficiales.
🏃 JobRunr 7.5.0: Adecuación Quarkus & Micronaut, Más Control de Config
JobRunr le mete nueva versión que ahora soporta Quarkus 3.20.0 y Micronaut 4.8.0. Incluye mejoras en la detección de fallos entre las interfaces JobRequest
y JobRequestHandler
. Nuevo detalle intenso: la clase InMemoryStorageProvider
ya no se carga automáticamente si no configuras nada en Quarkus o Micronaut, debes definir explícitamente la propiedad jobrunr.database.type=mem
o registrar un bean custom.
Ojo con este breaking change para los que van a full serverless o testing a capa. Lee completo el changelog aquí: JobRunr 7.5.0 release
💡 Jox 1.0.0: Virtual Threads & Channels Desatados
A la jugada llega Jox con su 1.0.0, una librería pensada para explotar los virtual threads con canales eficientes. Cambios cool en la API:
Bye bye
collectAsView()
enSource
yCollectSource
, ahora ese poder lo tiene la claseFlows
.Integración con Renovate para tener dependencias siempre actualizadas sin mover un dedo.
Ideal para los que quieren manejo avanzado y simple de canales concurrentes en Java. Más detalles en las release notes.
📊 Micrometer 1.15.0-RC1 & Tracing 1.5.0-RC1: Instrumentación al Siguiente Nivel
Micrometer no se duerme y presenta RC1 con:
Nuevo
OtlpMetricsSender
conRequest
inmutable y builder, para hacer tus métricas más robustas.Métricas específicas para el método
newVirtualThreadPerTaskExecutor()
que aprovecha los nuevos virtual threads.
Y para cerrar, Tracing 1.5.0-RC1 elimina la dependencia en la API incubadora de OpenTelemetry y actualiza sus dependencias, haciendo el tracing más ligero y potente.
Explora los detalles:
⚛️ Project Reactor 2025.0.0-M2 y 2024.0.5: Dependencias Al Día
Project Reactor apostando fuerte: segunda milestone de 2025 ya con actualizaciones serias en reactor-core, reactor-netty y reactor-pool, mientras que reactor-addons y otros quedan estables para no romper todo.
La versión 2024.0.5, quinta de mantenimiento, también recibe actualizaciones puntuales para seguir siendo sólida y confiable.
Para los detalles técnicos y versiones exactas:
🤝 Commonhaus Foundation da la bienvenida a Kroxylicious 🚀
Para cerrar, una buena noticia para los amantes de Kafka: Kroxylicious se une a Commonhaus Foundation, organizacion sin fines de lucro que ayuda a mantener proyectos de OSS. Kroxylicious es para quienes quieren hacer proxies Kafka sin tener que reinventar la rueda en cada proyecto, con muchas funcionalidades comunes listas para usar.
Así que si estás en ese mundo, mantén ojo en Kroxylicious que promete facilitar la vida en este tópico.
Más info aquí:
🎓 DOMINA Java y Spring Boot desde cero
¿Cansado de tutoriales aburridos que no van al grano? Estos cursos no son para quienes solo quieren "mirar código", sino para quienes quieren escribirlo como un PRO.

💡 Consejo Java: Evita la sobreingeniería con patrones de diseño
Los patrones de diseño son útiles, pero no siempre necesarios. A veces, complicamos nuestro código usando un patrón solo "porque suena bien", cuando una solución más directa sería más clara y mantenible.
🎯 Ejemplo real:
Imagina que necesitas calcular el precio final de un producto con o sin descuento.
❌ Sobreingeniería con Strategy:
interface PricingStrategy {
double calculatePrice(double basePrice);
}
class RegularPrice implements PricingStrategy {
public double calculatePrice(double basePrice) {
return basePrice;
}
}
class DiscountPrice implements PricingStrategy {
public double calculatePrice(double basePrice) {
return basePrice * 0.9;
}
}
✅ Solución simple y clara:
public double calculatePrice(double basePrice, boolean hasDiscount) {
return hasDiscount ? basePrice * 0.9 : basePrice;
}
📌 Conclusión:
No necesitas un patrón de diseño para todo. A veces, un if
bien puesto es más que suficiente. Úsalos cuando realmente aporten claridad, extensibilidad o reutilización.
📩 Si te ha gustado esta edición, compártela con otros desarrolladores y nos vemos la próxima semana con más novedades.
¡Feliz coding! 🚀
Ricardo