Novedades y nuevas características de Java 25

Escrito por el .
java planeta-codigo
Enlace permanente Comentarios

Habitualmente publicaba un artículo por cada versión de Java, pero teniendo en cuenta que para producción es recomendable usar preferentemente las versiones LTS estoy prefiriendo publicar uno en cada versión LTS con el acumulado de características de la versión anterior. En este caso de Java 25 como nueva LTS que sucede a Java 21.

Java

Java destaca por ser un lenguaje en el que la compatibilidad hacia atrás es importante, por ello migrar de una versión anterior a una nueva no suele dar excesivos problemas, aunque no fue así en el caso de Java 8 a Java 11 por cambios relevantes en el lenguaje y eliminación de clases en el JDK. Los problemas suelen estar en las librerías de las aplicaciones más que en el lenguaje en sí.

Entre las dos LTS, de Java 21 a Java 25 ha habido 3 versiones no LTS algunas con nuevas características en modo de previsualización sujetas a cambios hasta su versión definitiva y actualizaciones de esas características en su versión final. También en todas estas nuevas versiones hasta Java 25 se han publicado varias características en su versión definitiva.

En septiembre de 2025 se ha publicado la versión 25 del lenguaje de programación Java y su SDK, siguiendo el calendario que se estableció hace tiempo con el que las releases de Java son más frecuentes y previsibles.

Introducción

Java 25 es especial al ser una versión LTS, esto es de soporte prolongado más adecuado para entornos en el que la seguridad es más relevante que tener las últimas características del lenguaje, y especialmente dirigida a entorno empresariales y aplicaciones cuyo soporte en parches de seguridad es una característica deseada y prioritaria.

El soporte de esta versión 25 llegará hasta septiembre del 2030 para cuya fecha y con algunos años de antelación ya se habrá publicado una nueva versión LTS. El soporte de Java 21, la anterior LTS, tiene de soporte hasta septiembre de 2028 para cuya fecha las aplicaciones en producción es recomendable que migren a la siguiente LTS por seguridad.

Todas estas nuevas características están detalladas en las notas de las versiones cuyos enlaces anoto a continuación.

Nuevas características de Java

Una de las características destacadas de Java 21 fueron los virtual threads.

Desde Java 21 las características que destaco son las siguientes en sus versiones finales y no previsualización o experimentales, o alguna en previsualización destacada. Me centro más en las que tienen un impacto desde el punto de vista del desarrollador, también hay muchas novedades en cuanto al recolector de basura, seguridad con nuevos algoritmos y mejor soporte de Unicode.

Cada una incorpora muchas actualizaciones en modo previsualización y menos en su versión definitiva, entre las 4 desde Java 22 hasta Java 25, proporcionan una mejora incremental notable sobre Jav 21.

En las notas de publicación de cada una de las características las siguientes y otras están explicadas más extensamente y mejor.

Java 22

  • Unnamed Variables & Patterns, los nombres de las variables que son requeridas pero no son usadas ahora pueden nombrarse como «_» lo que mejora la legibilidad del código en varios aspectos.

Java 23

  • Graal JIT now Available, el compilador de Graal JIT ahora es incluido como parte del JDK.
  • Markdown Documentation Comments, los comentarios pueden ser escritos usando el formato Markdown en vez de solo como una mezcla de HTML y anotaciones.
  • String Templates, eliminada y esta es la razón por la que no es recomendable usar características en modo previsualización ni definitivas para aplicaciones en producción.

Java 24

  • Ahead-of-Time Class Loading & Linking, proporciona una mejora en el tiempo de arranque de las aplicaciones mediante el uso de una cache para la carga de claes y enlazado. Los usuarios de Spring Boot pueden usar esta característica mediante Class Data Sharing y con el soporte de Buildpacks o el archivo Dockerfile. En la descripción del JEP la mejora del tiempo de arranque llega hasta el 40%.
  • Stream Gatherers, permiten aplicar operaciones de transformación al usar stream que eran difícil de aplicar sin estos nuevos añadidos a la API.
  • Class-File API, proporcionan una API standard para parsear, generar y transformar archivos class de Java. Será muy útil para las librerías que hacen manipulación de código en tiempo de compilación y ejecución.

Java 25

  • Flexible Constructor Bodies, la llamada a super en el constructor ya no es necesario que sea la primera línea, esto permite poner delante validaciones sobre los argumentos del constructor.
  • Scoped Values, permite compartir datos inmutables entre threads. Son más eficientes y de razonar que las variables thread-local. Útil al usar virtual threads y structured concurrency.
  • Ahead-of-Time Command-Line Ergonomics, hace más fácil usar las caches ahead-of-time.


Comparte el artículo: