Newsletter Java: Novedades de la Semana 2 Mayo 2025
Tu newsletter semanal de Programando En Java
👋 ¡Hola devs!
Esta semana en la newsletter: un vistazo a la historia de Java, lo nuevo en JDK 25 con código más limpio, y actualizaciones clave en Spring, Quarkus y más.
¡Vamos al grano que hay mucho por explorar! ☕🚀
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: La historia de Java ☕
¡Ya está disponible mi nuevo video! Esta vez exploramos el fascinante origen del lenguaje de programación Java: cómo nació, por qué fue revolucionario en su época y cómo ha logrado mantenerse relevante durante décadas.
Desde sus raíces en un proyecto secreto de Sun Microsystems hasta convertirse en uno de los lenguajes más utilizados del mundo, Java tiene una historia llena de innovación, desafíos y evolución tecnológica.
Si alguna vez te preguntaste por qué tantos sistemas, apps y dispositivos siguen usando Java hoy en día, este video es para ti.
🚀 OpenJDK: ¡Finalmente llegan los Compact Source Files y los Instance Main Methods! (JEP 512)
¿Cansado de escribir esa aburridísima clase pública solo para imprimir “Hola mundo”? Pues agárrense, que JDK 25 acaba de hacer que programar en Java sea MUCHO más simple con la integración final de JEP 512: Compact Source Files and Instance Main Methods. Sí, Java por fin se pone un poco menos rígido y más amigable.
¿Qué demonios significa esto?
Compact Source Files
Ahora puedes escribir código Java sin declarar explícitamente una clase. Los métodos y campos que pongas fuera de clases serán automáticamente envueltos en una clase “sin nombre” que el compilador genera por ti. ¡Adiós a ese boilerplate agotador para “programitas” sencillos!// Antes: tedioso pero necesario public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }
// Ahora con JEP 512: todo más limpio y simple void main() { IO.println("Hello, World!"); }
Instance Main Methods
No necesitas que el métodomain
sea estático. ¡Sí, escuchaste bien! El launcher de Java puede invocar un métodovoid main()
que es un método de instancia. Java hará la magia de crear el objeto para ti antes de llamar ese método. ¡Por fin puedes dejar de torturarte con elstatic
para programas básicos!La clase mágica
java.lang.IO
Agregaron una clase utilitaria para todas esas cosas básicas de consola que en el pasado implicaban cargarScanner
o ensuciar el código conSystem.out
. Esjava.lang.IO
, siempre disponible sin importar imports.Métodos que amarás:
IO.print(Object obj);
IO.println(Object obj);
IO.println();
IO.readln(String prompt);
IO.readln();
Ejemplo interactivo:
void main() { String name = IO.readln("Please enter your name: "); IO.print("Pleased to meet you, "); IO.println(name); }
Autómatas y adiós a los imports molestos
Las Compact Source Files importan automágicamente todas las clases públicas en el módulojava.base
, incluyendojava.util.List
,java.io.File
,java.math.BigDecimal
, etc. Esto hace posible que escribas cosas como:void main() { var authors = List.of("Bazlur", "Shaaf", "Mike"); for (var name : authors) { IO.println(name); } }
sin tener que importar nada explícitamente. Sí, Java está aprendiendo a ser más cool y no tan pesado al empezar.
🎓 ¿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 12,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! 🙌
🌱 Spring Framework: Rumbo a la RC1 con Spring AI 1.0.0 M8
Spring AI nos trae la octava milestone con cambios importantes que van a romper cosas (pero para bien 😎) en la próxima RC1. Esta M8 es un puente para suavizar transiciones y preparar a los valientes del upgrade.
No te pierdas las notas para entender qué te va a explotar en las manos y cómo arreglarlo:
También llegó el Release Candidate 1 de Spring Cloud 2025.0.0 (Northfields), con un montón de arreglos y actualizaciones en Kubernetes, Function, Stream & Circuit Breaker. Basado en Spring Boot 3.5.0-RC1. Más info sin spoilers: Release notes Spring Cloud RC1
🐞 Quarkus 3.22.0: Dev Services y más swag
Quarkus no se queda atrás y en la versión 3.22.0 nos tira estas joyas:
Compose Dev Services: Se acabó el buscar archivos Compose. Quarkus los detecta automáticamente y levanta servicios para ti.
UI para HQL: Ejecuta consultas Hibernate más rápido y con una interfaz cool directamente.
Carga de clases para testing mejorada: Menos dolores de cabeza con clases en tiempo de ejecución.
Lee todo el rollo completo aquí: Quarkus 3.22.0 release notes
💥 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.

🤖 LangChain4j entra a la pista con primera Release Candidate (1.0.0-rc1)
Los chicos de LangChain4j lanzan su primer release candidate con cinco módulos clave ahora en estado candidato, incluyendo el núcleo y soporte HTTP y OpenAI. Atención a los 🔥 breaking changes:
Interfaces ChatLanguageModel y StreamingChatLanguageModel han sido renombradas a ChatModel y StreamingChatModel para mayor claridad.
Algunos utilitarios internos fueron movidos y ahora están marcados como @Internal, ¡olvídate de usarlos directamente!
Sí quieres play de primera mano: LangChain4j 1.0.0-rc1 release notes
🌀 JReleaser 1.18.0: Release de peso para tus proyectos Java
Si lo tuyo es hacer releases sin líos, JReleaser 1.18.0 llega con soporte para:
Forgejo (ese hermano ligero y autohospedado de GitHub/GitLab).
Distribuciones tipo FLAT_BINARY para native-image.
Deploys en Nexus 3 (Sonatype) con más facilidad.
Pa' que no falle tu pipeline, más detalles aquí: JReleaser 1.18.0 release notes y el blog aquí: JReleaser 1.18.0
🏛️ WildFly se casa con la Commonhaus Foundation
La leyenda WildFly ahora es parte de la Commonhaus Foundation, una ONG que impulsa la sostenibilidad de librerías open source. ¿Por qué? Porque quieren ampliar su comunidad, ser más transparentes y tener gobierno neutral sin ataduras a ningún vendor.
Brian Stansberry, desde Red Hat, lo dejó claro en este blog: WildFly en Commonhaus.
No están solos: Infinispan, Debezium, JReleaser y más proyectos heavy también están en la familia de Commonhaus.
Para saber más, visita su anuncio oficial: WildFly joins Commonhaus
🤩 ¡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.
💡 Consejo de la Semana: Usa perfiles para separar configuraciones por entorno
Spring Boot permite definir profiles como dev
, test
, y prod
para manejar configuraciones específicas según el entorno. Esto te ayuda a evitar errores costosos por usar credenciales o configuraciones equivocadas.
📁 Por ejemplo:
application-dev.yml
→ configuración localapplication-prod.yml
→ configuración en producción
Y en tu archivo principal (application.yml
), puedes activar un perfil así:
spring:
profiles:
active: dev
📩 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