Novedades de Java 20
Escrito por
el .
java
planeta-codigo
Enlace permanente
Comentarios
La cadencia de una nueva versión de Java cada 6 meses continúa. En Java 20 no hay novedades en el lenguaje solo nuevas vistas previas de funcionalidades que se publicarán en un futuro en su versión definitiva. En cualquier caso la versión incorpora otra serie de cambios más pequeños que mejoran la seguridad, el rendimiento del JDK y corrigen errores. La siguiente versión Java 21 será una versión LTS que la hace más destacada por su más prolongado tiempo de soporte y porque incorpora todas las novedades desde la anterior LTS para aquellos que migran de LTS a LTS.
En marzo de 2023 se ha publicado la versión 20 de Java. En general las novedades no añaden nada al lenguaje simplemente incorporan nuevos JEP que definen nuevas vistas previas de anteriores funcionalidades.
Estos JEP permiten experimentar, probar y modificarlas antes de publicarse como versiones definitivas en posteriores versiones de Java. En Java 20 no se añade nada nuevo en el lenguaje pero hay varios nuevos JEPs que sí serán importantes novedades en el lenguaje.
Después de cambiar el ciclo de publicación de tres a dos años para las versiones LTS la versión del JDK 21 será una LTS. Las versiones LTS son versiones especiales por su periodo prolongado de soporte que en un ámbito empresarial es algo deseado por lo que se suele esperar a estas versiones, momento en el cual se obtienen todas las novedades de las versiones no LTS.
Contenido del artículo
Introducción
Entre las novedades de Java 20 aunque son todo vistas previas cada una de estas novedades serán muy destacadas cuando se incorporen de forma definitiva. A destacar están los virtual threads, structured concurrency, scoped values que sustituirán a los ThreadLocal que se han usado hasta ahora para compartir datos entre threads. En cada una de las nuevas versiones de los JEP en el apartado de history de detallan los cambios de estas nuevas vistas previas sobre la anterior.
Más allá de los JEPs el JDK 20 incorpora otro conjunto de novedades destacadas y cambios relativos a la seguridad, marcar como deprecated varios métodos no tan destacados como los cambios en el lenguaje tienen relevancia en los casos que apliquen.
- Características de Java 20
- Notas de publicación de Java 20
- Documentación de Java 20
- Documentación Javadoc de Java 20
- JavaMagazine: Java 20 is here: Strengthening Java’s foundation for the future
Las novedades incluidas en esta versión son:
- 429: Scoped Values (Incubator)
- 432: Record Patterns (Second Preview)
- 433: Pattern Matching for switch (Fourth Preview)
- 434: Foreign Function & Memory API (Second Preview)
- 436: Virtual Threads (Second Preview)
- 437: Structured Concurrency (Second Incubator)
- 438: Vector API (Fifth Incubator)
Con cada nueva versión los medios publican artículos que detallan cada una de las novedades.
- Oracle Releases Java 20
- Java 20 sneak peek
- The Arrival of Java 20!
- JDK 20: The new features in Java 20
- Java 20 Guide
- Java 20 Delivers Features for Projects Amber, Loom and Panama
- Java 20: A Sneak Peek on the Panama FFM API
No incluyo ejemplos de código ya que todas estas novedades ya las he mencionado en versiones anteriores de novedades de Java y en los artículos de esta lista se muestran de forma detallada.
Otros cambios
Entre la lista de cambios adicionales en el JDK está el soporte para unicode 15.
Para algunos algoritmos de criptografía versiones optimizadas de las funciones para las instrucciones AVX512, AVX, AVX2, funciones intrinsic optimizadas por un humano en vez del compilador que permite mejorar el rendimiento es secciones críticas del código.
Se ha cambiado el comportamiento de los métodos Thread.suspend(), Thread.resume(), Thread.stop() que ahora lanzan una excepción. Estos métodos han sido problemáticos en su uso en ambientes concurrentes y se está haciendo un esfuerzo por eliminarlos para evitar sus problemas.
Se elimina el soporte para generar bytecode -source/-target/–release, con la política definida en JEP 182 se soporta únicamente 1+3 anteriores versiones. Por ejemplo, en Java 9 se soportan las versiones 9, 8, 7, 6.
Se actualiza la base de datos de zonas horarias a 2022c, afecta en casos en los que se usen zonas horarias de antes de 1970. Las zonas horarias cambian más a menudo de que en un principio se puede pensar y la base de datos de zonas horarias se ha de actualizar de forma periódica, actualizar la base de datos de zonas horarias requiere actualizar el JDK o cambios adicionales y por ello es un motivo de preferir usar una librería.
Novedades futuras
Como ocurre con las versiones en vista previa tardan en publicarse como versión definitiva. Entre los cambios futuros posibles y que se incorporen en el lenguaje están los siguientes.
Los universal generics permitirán crear colecciones de tipos primitivos. Esto permitirá simplificar los algoritmos que manejan genéricos y reducir el número de métodos a crear para soportar los tipos primitivos.
Los sequenced collections tiene el objetivo de proporcionar unos métodos unificados de manejo de colecciones más universal, ahora varias clases de colecciones tiene métodos diferentes para operaciones similares lo que ocasiona cierta inconsistencia.
Los string templates permite realizar interpolación de cadenas en el lenguaje.