🚀 Novedades de Java 24 para Desarrolladores: Lenguaje, Librerías, Rendimiento y Más

Carlos ExpositoCarlos Exposito
3 min read

Java 24 llegó en marzo de 2025 como una versión de corto plazo (no LTS), pero viene cargada de novedades útiles para el día a día de cualquier desarrollador Java. Desde mejoras de lenguaje hasta librerías optimizadas y herramientas para programación concurrente moderna.

En este artículo te hago un resumen claro y útil de lo más destacado. ☕


🧪 ¿Qué es una versión no-LTS?

Java 24 no es LTS (soporte de largo plazo), lo cual significa que está pensada para probar y adoptar nuevas características.
💡 Java 21 fue la última LTS (septiembre 2023)
🔮 Java 25 será la siguiente (septiembre 2025)


📦 Categorías de novedades en Java 24

  1. ✨ Lenguaje: mejoras de sintaxis y estructura
  2. 📚 API y librerías core
  3. ⚙️ Rendimiento y JVM
  4. 🔐 Seguridad

✨ 1. Características del Lenguaje

🔹 JEP 488 – Pattern Matching con tipos primitivos

Ahora puedes hacer instanceof o switch directamente con int, double, etc.

Object valor = 42;
if (valor instanceof int i) {
    System.out.println("Es entero: " + i);
}

Esto mejora la legibilidad y evita castings manuales.


🔹 JEP 492 – Cuerpo de Constructores Flexibles

Puedes poner lógica antes del super():

class Alumno extends Persona {
    Alumno(String nombre) {
        if (nombre == null || nombre.isBlank()) throw new IllegalArgumentException();
        super(nombre);
    }
}

🔹 JEP 494 – Importaciones de Módulos

¿Cansado de mil import? Ahora puedes importar un módulo completo:

import module java.sql;

public class Ejemplo {
    public static void main(String[] args) {
        System.out.println("Funciona sin importar clases individuales!");
    }
}

Ideal para proyectos no modularizados.


🔹 JEP 495 – Archivos fuente simples y main de instancia

¡No más public static void main obligatorio!

void main() {
    System.out.println("Hola mundo desde Java 24");
}

Se ejecuta con:

java --enable-preview --source 24 Hola.java

📚 2. Mejora en APIs y Librerías

🔹 JEP 485 – Stream Gatherers (nueva joya 💎)

Antes: agrupar elementos en lotes era un lío.
Ahora:

names.stream()
    .gather(Gatherers.windowFixed(3))
    .forEach(System.out::println);

Funciona como map, pero para operaciones más complejas, manteniendo la pereza (laziness) del stream.


🔹 JEP 484 – API para archivos .class

Inspecciona y transforma bytecode fácilmente:

ClassFile classFile = ClassFile.read(Files.readAllBytes(Path.of("MiClase.class")));
classFile.methods().forEach(m -> System.out.println(m.name()));

No más depender de ASM o ByteBuddy.


🔹 JEP 487 – Scoped Values (mejor que ThreadLocal)

Ideal para datos inmutables por hilo (como un ID de transacción):

Carrier scope = ScopedValue.where(ID, "txn-123");
scope.run(() -> {
    System.out.println("Usando ID: " + ID.get());
});

⚙️ 3. Mejoras en JVM y Rendimiento

🔹 JEP 483 – Carga anticipada de clases

Acelera el arranque de apps Java (hasta 40% más rápido) con un cache previo.
Perfecto para microservicios y funciones serverless.


🔹 JEP 491 – synchronized sin "pinning" en hilos virtuales

Ahora puedes usar bloques sincronizados sin bloquear el hilo físico.

synchronized (lock) {
    procesar();
}

Escala mucho mejor con millones de hilos virtuales.


🔹 JEP 450 – Encabezados de objetos compactos

Reduce el uso de memoria por objeto.
🔽 Ahorra hasta 8 bytes por objeto
🧠 Ideal para apps con millones de instancias


🧠 4. Criptografía Resistente a Cuántica

JEPs 478, 496, 497 introducen algoritmos criptográficos resistentes a ataques cuánticos.
Pensado para el futuro... pero ya disponible en Java 24 🔐


🏁 Conclusión

Java 24 no es una LTS, pero trae muchas mejoras útiles para probar hoy mismo.
Ya sea que trabajes con streams, módulos, concurrencia o criptografía, Java 24 te da superpoderes sin reinventar la rueda.

0
Subscribe to my newsletter

Read articles from Carlos Exposito directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Carlos Exposito
Carlos Exposito