Java 26: HTTP/3 en el cliente estándar y avisos para que final signifique final
JDK 26 salió el 17 de marzo de 2026 con diez JEPs. El HttpClient aprende HTTP/3, la JVM empieza a avisar cuando la reflexión modifica campos final y el Applet API desaparece.
JDK 26 alcanzó la disponibilidad general el 17 de marzo de 2026. Es la primera versión después de la LTS 25 y no tiene soporte a largo plazo.
HTTP/3 en java.net.http (JEP 517)
El HttpClient estándar ya habla HTTP/3. Es opcional: el protocolo por defecto sigue siendo HTTP/2 y tienes que pedirlo tú.
var client = HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_3)
.build();Si el servidor no soporta HTTP/3, la petición baja por defecto a HTTP/2 o HTTP/1.1.
Prepararse para que final signifique final (JEP 500)
Modificar un campo final mediante reflexión profunda empieza a generar avisos en tiempo de ejecución. Es el paso previo a prohibirlo por defecto en una versión futura, igual que ya ocurre con los records. Hay opciones de línea de comandos para autorizarlo por módulo (--enable-final-field-mutation) o para convertir los avisos en errores (--illegal-final-field-mutation).
El resto de finales
- JEP 504 — se elimina el Applet API.
- JEP 516 — la caché de objetos Ahead-of-Time funciona con cualquier recolector.
- JEP 522 — G1 mejora su rendimiento reduciendo la sincronización.
En preview
- JEP 526 — Lazy Constants (segunda preview). Es la API que en JDK 25 se llamaba
StableValue, ahora renombrada aLazyConstant. - JEP 525 — Structured Concurrency (sexta preview).
- JEP 530 — Tipos primitivos en patrones,
instanceofyswitch(cuarta preview). - JEP 524 — Codificación PEM (segunda preview) y JEP 529 — Vector API (undécima incubadora).