Java 25 ya está disponible como versión de soporte extendido (LTS) desde el pasado 16 de septiembre, y viene con cambios: desarrollar programas sencillos es más fácil, las apps se inician antes, consumen menos memoria y diagnosticar problemas es más sencillo. Además, los IDEs como IntelliJ IDEA ya lo soportan desde el día uno, así que empezar es cuestión de minutos.
Lo nuevo
- Archivos fuente compactos y main “de instancia”: puedes crear ejemplos, utilidades y prototipos sin la ceremonia de siempre; menos boilerplate y más foco en la lógica. Ideal para aprender, hacer demos rápidas o pruebas de concepto.
- Importaciones por módulo: se acabó pelearse con import repetidos cuando usas muchas clases del mismo módulo; una forma más limpia de organizar tus fuentes en ejemplos y prototipos.
- Constructores más flexibles: ahora puedes validar o preparar datos antes de llamar a super(), lo que hace que ciertos diseños sean más naturales sin trucos raros.
Concurrencia y contexto
- Scoped Values (valores con alcance): una alternativa moderna a ThreadLocal pensada para hilos virtuales; compartir datos inmutables entre llamadas y tareas hijas es más fácil y seguro.
Rendimiento
- Inicio más rápido: la JVM puede usar perfiles de ejecuciones anteriores para rendir mejor nada más arrancar, reduciendo el tiempo hasta el “ritmo de crucero”.
- Menos memoria por objeto: las “cabeceras compactas” reducen la huella, algo que se nota en servicios con muchos objetos pequeños y despliegues elásticos.
- GC más suave: Shenandoah ahora es generacional y hay mejoras en carga/enlace de clases, lo que ayuda a recortar pausas en cargas tipo servidor.
Mejor observabilidad (diagnosticar es más fácil)
- JFR con muestreo cooperativo y trazas/tiempos de método: perfiles más precisos con menos impacto y más detalle para seguir qué hace tu app cuando “va justa”.
Si vienes de Java 21, también encontrarás
- Stream Gatherers (operaciones intermedias personalizadas), JavaDoc en Markdown, variables anónimas con “_” y mejoras en hilos virtuales (sin “pinning” al sincronizar).
Listo para usarlo ya en tu IDE
- En IntelliJ IDEA puedes descargar el JDK 25 desde el propio IDE y fijar el “Language level: 25 – Compact source files, module imports”; soporte pleno para las nuevas ayudas y quick-fixes.
- Concurrencia estructurada (preview): organiza tareas concurrentes como una unidad, con código más legible y cancelación/errores mejor gestionados.
- Patrones con tipos primitivos (preview): unifica cómo usamos instanceof y switch con primitivos, simplificando lógica y evitando conversiones innecesarias.
- Stable Values (preview): objetos inmutables que la JVM puede optimizar como “constantes”, mejorando rendimiento en escenarios repetitivos.
- Vector API (incubator): operaciones vectoriales que aprovechan SIMD del CPU para acelerar cálculos numéricos y de datos.
- Seguridad: PEM encodings y KDF API: soporte nativo para formatos PEM y nuevas funciones de derivación de claves para fortalecer la gestión cripto.
- AOT Command‑Line Ergonomics: facilidades para generar caches AOT y mejorar el tiempo de arranque sin complicar el flujo de build.
- Calendario y soporte LTS: soporte de larga duración y actualizaciones periódicas que dan estabilidad para planificar la adopción.