Newsletter Java: Novedades de la Semana 1 Junio 2025
Tu newsletter semanal de Programando En Java
👋 ¡Hola dev! Bienvenido a una nueva edición de “Programando En Java”.
Hoy te traigo lo último del JDK 24, mejoras en Spring Boot y un framework AI made in JVM que te va a volar la cabeza.
Todo listo para que sigas subiendo de nivel en Java. ¡Vamos al lío! ☕💻
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: ¡Mejora el rendimiento de tu aplicación de JAVA!
¿Tu aplicación Java va lenta? En el video de esta semana te muestro cómo mejorar su rendimiento usando GraalVM, una máquina virtual avanzada que puede darte un impulso brutal en velocidad y eficiencia.
👉 ¡No te lo pierdas y lleva tu código al siguiente nivel!
🛠️ Novedades OpenJDK
¡Se ponen serios con JDK 25! Cuatro JEPs que estaban en “Proposed to Target” pasan a Targeted:
– JEP 521: Generational Shenandoah
Introduce una versión generacional del recolector de basura Shenandoah, lo que mejora el rendimiento al optimizar la recolección separando objetos jóvenes y antiguos.
🔗 Ver JEP | Anuncio
– JEP 520: JFR Method Timing & Tracing
Permite a Java Flight Recorder medir el tiempo que tarda cada método, mejorando el análisis de rendimiento y facilitando la localización de cuellos de botella.
🔗 Ver JEP | Anuncio
– JEP 518: JFR Cooperative Sampling
Introduce un nuevo enfoque de muestreo cooperativo en JFR que reduce la sobrecarga en la aplicación al hacer que los hilos participen en la recolección de datos de rendimiento.
🔗 Ver JEP | Anuncio
– JEP 470: PEM Encodings of Cryptographic Objects (Preview)
Añade soporte para leer y escribir claves y certificados en formato PEM, ampliamente usado en sistemas criptográficos. Estará disponible como preview.
🔗 Ver JEP | Anuncio
– JEP 509: JFR CPU-Time Profiling
Se eleva a Proposed to Target para JDK 25. Permite a JFR capturar perfiles de tiempo de CPU en Linux, ideal para diagnósticos precisos sin depender de herramientas externas.
🔗 Ver JEP | Propuesta (revisión abierta hasta el 4 de junio)
☕ JDK 25
La nueva Build 25 del JDK 25 en fase Early Access ya está lista para descargar y probar.
🔗 Descárgala aquí
🛠️ Incluye correcciones importantes respecto a la build anterior. Puedes consultar todos los bugs resueltos:
🔗 Ver issues corregidos en la Build 25
📋 Notas de la versión completas:
🔗 Release Notes
🐞 ¿Has detectado un bug?
¡Repórtalo y contribuye a mejorar el JDK!
🔗 Formulario de reporte oficial
OpenJDK JDK 24.0.1
Pattern Matching para switch
(JEP XXXX)
Segunda preview: ahora permite patrones anidados y guard clauses.
💡 Desestructura registros al vuelo y simplifica tus if-else
.
🔗 Descargar EA
• Structured Concurrency (JEP XXXX)
Nueva incubadora: gestiona hilos virtuales con StructuredTaskScope
, shutdown coordinado y propagación de excepciones.
🔗 RFC y ejemplos
• Virtual Threads (Project Loom)
Mejor rendimiento I/O: menos “hot spots” en sockets, nuevas métricas por thread.
🧵 Tu código bloqueante escala (ahora sí) sin miedo.
🔗 Más info
🎓 ¿Ya conoces Java y quieres llevar tus habilidades al siguiente nivel?
He creado un Curso de Java Intermedio pensado para ti que ya dominas lo básico y quieres avanzar con conceptos como POO avanzada, colecciones, concurrencia, servlets, y más.
💡 Ideal si estás buscando mejorar tu perfil profesional o prepararte para proyectos reales
💻 Acceso de por vida + proyecto final que revisaré personalmente
🔝 Solo 9,99 €
💪 Al comprarlo, me ayudas directamente a seguir creando contenido gratuito en YouTube, newsletter y más.
Es una forma sencilla de apoyar mi trabajo y seguir aprendiendo.
¡Gracias por ser parte de esta comunidad de desarrolladores Java! 🙌
🐠 GlassFish
• GlassFish 8.0.0-M12 ya pasa el TCK de Jakarta EE 11 Web Profile y Platform.
🆕 Mejoras clave:
– Optimización del class loader y uso de propiedades para evitar copias innecesarias de clases.
– Builds más robustos con Maven, nadmin
y asadmin
, corrigiendo errores comunes con rutas con espacios en Windows.
🔗 Notas de la versión
• GlassFish 7.0.25 también recibe actualizaciones importantes:
– ClassLoaders
ahora son parallel capable con nombres formales.
– Mejoras en GJULE (Java Util Logging Extension): corrige condiciones de carrera y errores en el logging.
🔗 Notas de la versión
🚀 Jakarta EE
• 🗞️ #HashtagJakartaEE por Ivar Grimstad:
– Jakarta EE 11 está a punto de ser GA. GlassFish ya pasa el TCK en Java 17 y 21. El release ballot está en marcha.
– Las specs para EE 12 ya han alcanzado Milestone 0, enfocándose en integración continua y publicación directa a Maven Central tras el cierre de OSSRH.
🔗 Resumen completo
• 🛣️ Roadmap EE 11:
– 5 hitos principales.
– Core Profile (dic 2024), Web Profile (abr 2025), RC final previsto para antes de junio 2025.
⚡ TornadoVM
• ¡Llega GPULlama3.java (v0.1.0-beta)!
Ejecuta modelos LLaMA 3 directamente en GPU con TornadoVM:
– Compilación JIT, paralelismo y aceleración hardware.
– Compatible con OpenCL y PTX (NVIDIA).
– Soporte para modelos en formato GGUF.
🔗 Releases
🌱 Spring Framework
• Spring Modulith 1.4.0:
– Nuevo método detectNamedInterfaces()
para mejorar la detección de interfaces nombradas.
– ApplicationModuleInitializer
valida metadata antes de instanciar módulos.
🔗 Notas de la versión
• Spring Cloud 2025.0.0 "Northfields":
– Compatible con Spring Boot 3.5.0.
– Actualizaciones en Kubernetes (3.3.0), Stream (4.3.0), Function (4.3.0) y más.
– 🚨 Breaking change en Spring Cloud Gateway: renombrado de módulos/starter según estilo (server vs proxy, MVC vs WebFlux). Artefactos anteriores muestran warnings en logs.
🔗 Release Notes
• 🛡️ Spring Cloud Gateway (v4.3.0 y parches):
– Corrigen la vulnerabilidad CVE-2025-41235, relacionada con cabeceras X-Forwarded-For
.
– Estas cabeceras vienen ahora desactivadas por defecto para mayor seguridad.
🔗 CVE Info
• Spring Boot 3.2.0-M3
AOT para
spring-data-jdbc
yspring-kafka
con GraalVMNuevo starter de observabilidad (
spring-boot-starter-actuator-observability
)Tomcat 10.1.14 y Undertow 2.4.12 actualizados
🔗 Release notes
• Spring Cloud 2025.0.0-RC1 “Panama”
Spring Cloud Gateway con HTTP/3 (QUIC)
Azure Key Vault integrado para secret rotation
spring-cloud-stream-binder-rsocket
para mensajería reactiva
🔗 Más detalles
💥 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.
🧪 JUnit 5.10.0
@EnabledIfJre
y@DisabledIfJre
@ExpectExceptionType
: validación precisa de erroresSoporte para Toolchains en Maven/Gradle
🔗 Notas y descarga
🧪 Testcontainers 1.18.3
Timeouts configurables, shutdown hooks robustos
MSSQLServerContainer
(Microsoft oficial)Listener opcional para logs streaming
🔗 Changelog
🦘 Hibernate
• Hibernate Reactive:
– v3.0.0.Final y v4.0.0.Beta1 ya disponibles.
– Compatibilidad con ORM 7.0.0, Vert.x (4.15.5 en Final, 5.0.0 en Beta), Mutiny 2.9.0.
– Ajuste en el return type de getResultType()
para validación.
🔗 3.0.0 | 4.0.0.Beta1
• Hibernate Search 8.0.0.CR1:
– Corrección de bugs, compatibilidad con ORM 7.0.0.
– Mejoras en el DSL API para facilitar migraciones.
🔗 Issues resueltos
🦄 Quarkus
• Quarkus 3.23.0:
– Soporte para múltiples persistence units con Hibernate Reactive.
– Autenticación OIDC con bearer token.
🔗 Releases
🐍 Groovy
• Groovy 5.0.0-Beta1:
– Compatibilidad con JEP 394 (Pattern Matching for instanceof, JDK 16).
– Nuevo método injectAll()
para transformar iterables y devolver todas las combinaciones.
🔗 Release Notes
🎉 JHipster
• JHipster Lite 1.32.0:
– Mejoras en documentación, refactorings, soporte Docker Compose con Spring Boot.
– Más cobertura de tests con Cypress y Vitest.
– Alineado con Spring Boot 3.5.0.
🔗 Releases
🤖 Inteligencia Artificial: Embabel Agent Framework con Rod Johnson
Embabel: nuevo framework AI para la JVM, construido con Spring y Kotlin.
Planificación tipo videojuegos (GOAP), testing first, fuerte tipado, agentes composables.
Highlights:
3 modos de ejecución: Focused / Closed / Open
Soporte para mezcla de modelos (local + remoto)
100% interoperable con Java
Librería para testeo de prompts como beans de Spring
🔗 Framework
🔗 Ejemplos
🔗 Coding Agent
☕ Consejo Java de la Semana: Optional.ifPresentOrElse()
Desde Java 9, Optional
tiene un método muy elegante llamado ifPresentOrElse
, que te permite ejecutar una acción si hay valor presente, o una alternativa si no lo hay — todo sin null
ni else
explícitos.
🔧 Cuándo usarlo: Cuando trabajas con resultados opcionales (por ejemplo, búsquedas en colecciones, configuraciones, etc.) y quieres evitar condicionales verbosos.
✨ Ejemplo:
Optional<String> username = findUsernameById(42);
username.ifPresentOrElse(
name -> System.out.println("Hola, " + name + "!"),
() -> System.out.println("Usuario no encontrado.")
);
Antes habrías escrito un
.isPresent()
conget()
o unif-else
clásico. Con esto, el código es más limpio, seguro y expresivo. 👌
Gracias por seguir aquí.
Nos vemos en la próxima hornada de caos y código.
🤘 ¡Sigue picando fuerte!
¿Te ha molado? Comparte esta newsletter con otro friki del backend 💻
¿Preguntas o sugerencias? Responde a este correo, y charlamos.