A logo showing the text blog.marcnuri.com
English
Inicio»Java»Java 10: Probando las nuevas funcionalidades

Entradas Recientes

  • Fabric8 Kubernetes Client 7.2.0 está disponible!
  • Conectarse a un servidor MCP con JavaScript y AI SDK
  • Conectarse a un servidor MCP con JavaScript y LangChain.js
  • El Futuro de las Herramientas para Desarrolladores en la era de la IA
  • Conectarse a un servidor Model Context Protocol (MCP) con Java y LangChain4j

Categorías

  • Antiguo
  • Front-end
  • Go
  • Herramientas
  • Industria y negocios
  • Inteligencia Artificial
  • Java
  • JavaScript
  • Operaciones
  • Personal
  • Proyectos personales

Archivos

  • mayo 2025
  • abril 2025
  • marzo 2025
  • febrero 2025
  • enero 2025
  • diciembre 2024
  • noviembre 2024
  • agosto 2024
  • junio 2024
  • mayo 2024
  • abril 2024
  • marzo 2024
  • febrero 2024
  • enero 2024
  • diciembre 2023
  • noviembre 2023
  • octubre 2023
  • septiembre 2023
  • agosto 2023
  • julio 2023
  • junio 2023
  • mayo 2023
  • abril 2023
  • marzo 2023
  • febrero 2023
  • enero 2023
  • diciembre 2022
  • noviembre 2022
  • octubre 2022
  • agosto 2022
  • julio 2022
  • mayo 2022
  • marzo 2022
  • febrero 2022
  • enero 2022
  • diciembre 2021
  • noviembre 2021
  • octubre 2021
  • septiembre 2021
  • agosto 2021
  • julio 2021
  • diciembre 2020
  • octubre 2020
  • agosto 2020
  • junio 2020
  • mayo 2020
  • marzo 2020
  • febrero 2020
  • enero 2020
  • noviembre 2019
  • octubre 2019
  • julio 2019
  • diciembre 2018
  • agosto 2018
  • julio 2018
  • junio 2018
  • mayo 2018
  • marzo 2018
  • febrero 2018
  • noviembre 2017
  • octubre 2017
  • agosto 2017
  • julio 2017
  • enero 2017
  • julio 2016
  • enero 2016
  • diciembre 2015
  • noviembre 2015
  • diciembre 2014
  • marzo 2014
  • febrero 2011
  • junio 2008
  • mayo 2008
  • abril 2008
  • enero 2008
  • junio 2007
  • mayo 2007
  • abril 2007
  • marzo 2007

Java 10: Probando las nuevas funcionalidades

2018-03-31 en Java / Antiguo etiquetado Java / Java 10 por Marc Nuri | Última actualización: 2021-03-21
English version

Introducción

Java 10 se liberó el pasado 20 de marzo siguiendo el nuevo programa para liberar versiones cada 6 meses. Esta versión viene tras el lanzamiento de Java 9 el pasado septiembre de 2017 y deja esta última version obsoleta.

Java 11 se liberará como una versión de soporte prolongado (LTS) y tendrá un periodo de vida mucho más amplio, pero hasta entonces, veamos cuáles son algunas de las nuevas funcionalidades en Java 10.

Versionado de lanzamientos basado en tiempo

Java 10 introduce el nuevo versionado basado en tiempo (JEP 322) que es una reestructuración de JEP 223 liberado en Java 9 para permitir el nuevo modelo de lanzamientos. De ahora en adelante los números de versión seguirán este patrón:

$FEATURE.$INTERIM.$UPDATE.$PATCH

Cada 6 meses una nueva versión de funcionalidad (feature release) se liberará, cada 3 años (comenzando en septiembre de 2018) la versión de funcionalidad será de soporte prolongado (LTS).

Diagrama con el nuevo modelo de lanzamientos
Diagrama con el nuevo modelo de lanzamientos

Inferencia en el tipo de variables locales

Java 10 incluye una serie de nuevas funcionalidades, pero para la mayoría de nosotros la más aparente es JEP 286: Local-Variable Type Inference. Esta funcionalidad mejora la experiencia de desarrollo al eliminar el código adicional, necesario hasta ahora, para declarar variables locales expresando el tipado completo de la variable.

var shouldBeString = "Hello Java 10";
assertTrue(String.class.isInstance(shouldBeString));

De ahora en adelante las variables locales podrán declararse empleando la palabra reservada var. La seguridad de tipado se preservará, ya que el tipo de la variable se determinará en el momento en el que se le asigne un valor por primera vez.

De este modo, el siguiente código dará un error de compilación:

Local-variable type inference
Local-variable type inference

Otras funcionalidades incluidas en esta versión

  • JEP 296: Consolidate the JDK Forest into a Single Repository (Consolidar la maraña del JDK en un único repositorio)
  • JEP 304: Garbage-Collector Interface (Interfaz para el “Recolector de basura”)
  • JEP 307: Parallel Full GC for G1 (“Recolección de basura” en paralelo para G1)
  • JEP 310: Application Class-Data Sharing (Permitir classes de aplicación en “Class-Data Sharing (CDS)”)
  • JEP 312: Thread-Local Handshakes
  • JEP 313: Remove the Native-Header Generation Tool (javah) (Eliminar la herramienta javah del JDK)
  • JEP 314: Additional Unicode Language-Tag Extensions (Extensiones Unicode Language-Tag adicionales)
  • JEP 316: Heap Allocation on Alternative Memory Devices (Asignación de Heap en dispositivos de memoria alternativos)
  • JEP 317: Experimental Java-Based JIT Compiler (Compilador Java JIT experimental)
  • JEP 319: Root Certificates (Certificados Raíz)

Mejoras en esta versión

Método Optional.orElseThrow()

Se ha creado un método adicional orElseThrow() en la clase Optional para reemplazar el método estándar get() ya que el nombre de éste era confuso y los desarrolladores podrían no esperarse que un “getter” lanzase una excepción. A partir de ahora ésta será la alternativa recomendada, en futuras versiones el método get() se marcará como obsoleto.

final Optional<String> optional = Optional.ofNullable("Optional improvement in Java 10");
final String string = optional.orElseThrow(); // Returns OK
final Optional<String> optional = Optional.ofNullable(null);
final String string = optional.orElseThrow(); // Throws NoSuchElementException

Collectors inmodificables

Nuevos métodos toUnmodifiableList(), toUnmodifiableSet(), y toUnmodifiableMap() se han añadido a la clase Collectors para facilitar la creación de colecciones inmodifcables.

Stream.of(1, 2, 3).collect(Collectors.toUnmodifiableSet());
Stream.of(1, 2, 3).collect(Collectors.toUnmodifiableList());
Stream.of(1, 2, 3).collect(Collectors.toUnmodifiableMap(Function.identity(), Function.identity()));

Código fuente

El código fuente completo de este artículo con tests para las nuevas funcionalidades y mejoras puede encontrarse en GitHub.

Java 10
Java 10
Twitter iconFacebook iconLinkedIn iconPinterest iconEmail icon

Navegador de artículos
Spring Boot: ¿Cómo cambiar el puerto de la aplicación?Java 8 Streams: Convertir List en Map
© 2007 - 2025 Marc Nuri