Java 24 llega con cambios significativos

El próximo martes 18 llegará Java 24, una nueva versión de la JDK rica en nuevas funcionalidades, muchas de ellas en estado final. Esta versión es previa a la 25 que será la próxima LTS candidata para septiembre de 2025.
En este artículo te damos un resumen de todo lo nuevo (al menos lo que está anunciado en las JEP del proyecto OpenJDK).
JEPs en estado final (o cambios finales)
(JEP 472) Prepare to Restrict the Use of JNI: Prepara la JDK para restricciones futuras en el uso de la Interfaz Nativa de Java (JNI).
(JEP 475) Late Barrier Expansion for G1: Optimiza el recolector de basura G1.
(JEP 479) Remove the Windows 32-bit x86 Port: Elimina el soporte para Windows de 32 bits.
(JEP 483) Ahead-of-Time Class Loading & Linking: Permite cargar y enlazar clases antes de la ejecución.
(JEP 484) Class-File API: Proporciona una API para manipular archivos .class.
(JEP 485) Stream Gatherers: Permite operaciones más complejas en streams a partir de poder crear funciones intermedias en la API de stream.
(JEP 486) Permanently Disable the Security Manager: Desactiva el Security Manager.
(JEP 490) ZGC: Remove the Non-Generational Mode: Elimina el modo no generacional de ZGC.
(JEP 491) Synchronize Virtual Threads without Pinning: Mejora la sincronización de hilos virtuales eliminando el problema del pinning que hablamos ya en el pasado en este blog. Esto es un paso enorme en la adopción masiva de los hilos virtuales.
(JEP 496) Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism: Introduce algoritmos resistentes a ataques cuánticos.
(JEP 498) Warn upon Use of Memory-Access Methods in sun.misc.Unsafe: Advierte sobre el uso de métodos inseguros en sun.misc.Unsafe.
JEPs en Preview
(JEP 478) Key Derivation Function API: Introduce una API para derivar claves criptográficas.
(JEP 487) Scoped Values: Cuarto Preview – Continua mejorando la implementacion de valores de ambito en hilos virtuales (forma parte de Loom).
(JEP 488) Primitive Types in Patterns, instanceof, and switch: Segundo Preview – Permite usar tipos primitivos en patrones, instanceof y switch.
(JEP 492) Flexible Constructor Bodies: Tercer Preview – Permite más flexibilidad en la definición de constructores.
(JEP 494) Module Import Declarations: Segundo Preview – Mejora la sintaxis para importar módulos.
(JEP 495) Simple Source Files and Instance Main Methods: Cuarto Preview – Simplifica la definición de métodos main y permite archivos fuente más simples.
(JEP 499) Structured Concurrency: Cuarto Preview – Mejora el manejo de tareas concurrentes (forma parte de Loom).
JEPs experimentales
(JEP 404) Generational Shenandoah: Mejora el recolector de basura Shenandoah para manejar generaciones de objetos.
(JEP 450) Compact Object Headers: Reduce el tamaño de los encabezados de objetos para ahorrar memoria.
JEP en Incubación
(JEP 489) Vector API: Novena etapa de incubación – Optimiza operaciones vectoriales para mejorar el rendimiento en cálculos intensivos.
Luego de la liberación publicaremos algunos ejemplos de aquellas features que consideremos relevantes.