Java 9 Nuevas características

Java 9 fue lanzado el 22 de septiembre de 2017 y trajo muchas características nuevas, siendo el cambio más importante el sistema de módulos ya implementado. A continuación, presentaremos en detalle las nuevas características de Java 9.

Java 9 Nuevas características

  • Sistema de módulos: El módulo es un contenedor de paquetes; uno de los mayores cambios de Java 9 es la introducción del sistema de módulos (proyecto Jigsaw).
  • REPL (JShell): Entorno de programación interactivo.
  • Cliente HTTP 2: El estándar HTTP/2 es la última versión del protocolo HTTP; la nueva API HTTPClient admite WebSocket, flujos HTTP/2 y la función de empuje del servidor.
  • Javadoc mejorado: Javadoc ahora admite búsquedas en los documentos de la API. Además, la salida de Javadoc ahora cumple con el estándar compatible con HTML5.
  • Paquete JAR de múltiples versiones compatible: La función de JAR de múltiples versiones te permite crear versiones de clases que se seleccionan solo cuando se ejecuta el programa en entornos Java de versiones específicas.
  • Métodos de fábrica de colecciones: En las interfaces List, Set y Map, los nuevos métodos de fábrica estáticos pueden crear instancias inmutables de estas colecciones.
  • Métodos privados en interfaces: Utilizar métodos privados en interfaces. Podemos usar el modificador de acceso private para escribir métodos privados en las interfaces.
  • API de procesos: API mejorada para controlar y gestionar los procesos del sistema operativo. Introduce java.lang.ProcessHandle y su interfaz anidada Info para evitar que los desarrolladores tengan que recurrir a código nativo a menudo solo para obtener el PID de un proceso local.
  • API Stream mejorada: La API Stream mejorada agrega algunos métodos convenientes que hacen que el procesamiento de flujos sea más fácil y permiten escribir consultas complejas con colectores.
  • try-with-resources mejorado: Si ya tienes un recurso que es final o equivalente a una variable final, puedes usar esa variable en la sentencia try-with-resources sin tener que declarar una nueva variable en ella.
  • Anotación @Deprecated mejorada: La anotación @Deprecated puede marcar el estado de la API de Java, puede indicar que la API marcada será eliminada o que ya está rota.
  • Operador diamante (Diamond Operator) mejorado: Las clases anónimas pueden usar el operador diamante (Diamond Operator).
  • Clase Optional mejorada: java.util.Optional agrega muchos métodos útiles nuevos. Optional puede convertirse directamente a stream.
  • API de imágenes de múltiples resoluciones: Se define una API de imágenes de múltiples resoluciones, con la que los desarrolladores pueden manipular y mostrar fácilmente imágenes de distintas resoluciones.
  • API CompletableFuture mejorada: El mecanismo asíncrono de la clase CompletableFuture puede ejecutar operaciones cuando el método ProcessHandle.onExit finaliza.
  • API JSON ligera: Se incluye una API JSON ligera integrada.
  • API de flujos reactivos (Reactive Streams): Java 9 introduce una nueva API de flujos reactivos para admitir la programación reactiva en Java 9.

Puedes consultar más características nuevas en el sitio web oficial:What's New in JDK 9

Dirección de descarga de JDK 9:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-doc-downloads-3850606.html

En los ejemplos de artículos sobre Java 9, todos usamos el entorno jdk 1.9. Puedes usar el siguiente comando para ver la versión actual de jdk:

$ java -version
java version "9-ea"
Java(TM) SE Runtime Environment (build 9-ea+163)
Java HotSpot(TM) 64-Bit Server VM (build 9-ea+163, mixed mode)
A continuación, presentaremos en detalle las nuevas características de Java 9:
N.º Característica
1 Sistema de módulos
2 REPL (JShell)
3 Javadoc mejorado
4 Paquete JAR de múltiples versiones compatible
5 Métodos de fábrica de colecciones
6 Métodos privados en interfaces
7 API de procesos
8 Stream API
9 try-with-resources
10 @Deprecated
11 Operador diamante (Diamond Operator) en clases internas
12 Clase Optional
13 API de imágenes de múltiples resoluciones
14 CompletableFuture API
Otras extensiones