Java es un lenguaje de programación de alto nivel y propósito general desarrollado por Sun Microsystems. Es concurrente, basado en clases, orientado a objetos y diseñado específicamente para tener la menor cantidad posible de dependencias de implementación. Java estaba destinado a seguir el principio de «Escribir una vez y ejecutar en cualquier lugar» (WORA), es decir, Java está destinado a ser independiente de la plataforma.
Para obtener más información sobre el lenguaje de programación Java en detalle, haga clic aquí .
Como cualquier otro software, Java también viene con muchas versiones diferentes a medida que se desarrolla y mejora, y se agregan nuevas funciones en cada actualización importante.
Java 9 fue una actualización importante de Java 8 que nos ha brindado muchas características para los desarrolladores. Java 9 se lanzó el 21 de septiembre de 2017. En este artículo, analizaremos las características de Java 9 en detalle:
1. Javadoc mejorado
La actualización de Java 9 vino con una documentación de Java actualizada. Ya no necesitamos usar Google para encontrar la documentación adecuada. El nuevo Javadoc vino con búsqueda directamente en la propia documentación de la API. Además, la salida de Javadoc era compatible con HTML5. Cada página de Javadoc incluye información sobre de qué módulo JDK proviene la clase o la interfaz.
2. Métodos de fábrica para colecciones (como List, Map, Set y Map.Entry):
Muchas veces, desea crear una colección (por ejemplo, una lista o un conjunto) en su programa Java y llenarla con algunos elementos. Eso conduce a una codificación repetitiva en la que crea una instancia de la colección, seguida de varias llamadas ‘agregar’. Con Java 9, se han agregado varios de los llamados métodos de fábrica de recopilación.
Las interfaces List y Set tienen métodos «of()» para crear una lista inmutable vacía o no vacía o objetos Set como se muestra a continuación:
Ejemplo de lista vacía:
List immutableList = List.of();
Ejemplo de lista no vacía:
List immutableList = List.of("one", "two", "three");
Map tiene dos conjuntos de métodos: métodos of() y métodos ofEntries() para crear un objeto Map inmutable y un objeto Map.Entry inmutable respectivamente.
Ejemplo de mapa vacío:
jshell> Map emptyImmutableMap = Map.of() emptyImmutableMap ==> {}
Ejemplo de mapa no vacío:
jshell> Map nonemptyImmutableMap = Map.of(1, "one", 2, "two", 3, "three") nonemptyImmutableMap ==> {2=two, 3=three, 1=one}
3. JShell: el REPL interactivo de Java
Oracle Corp. ha introducido una nueva herramienta llamada «jshell». Significa Java Shell y también se conoce como REPL (Read Evaluate Print Loop). Muchos lenguajes ya cuentan con un bucle de lectura-evaluación-impresión interactivo, y Java ahora se une a este club. Se utiliza para ejecutar y probar cualquier construcción de Java como clase, interfaz, enumeración, objeto, declaraciones, etc. muy fácilmente. Puede iniciar jshell desde la consola y comenzar a escribir y ejecutar código Java directamente. Los comentarios inmediatos de jshell lo convierten en una excelente herramienta para explorar las API y probar las funciones del lenguaje.
4. Mejoras en la API de transmisión:
En Java SE 9, Oracle Corp. ha agregado cuatro nuevos métodos útiles a la interfaz java.util.Stream. Como Stream es una interfaz, todos esos nuevos métodos implementados son métodos predeterminados. Le permite crear canalizaciones declarativas de transformaciones en colecciones. Hay cuatro nuevos métodos agregados a la interfaz Stream: dropWhile, takeWhile, ofNullable. El método de iteración obtiene una nueva sobrecarga, lo que le permite proporcionar un Predicado sobre cuándo dejar de iterar.
5. Métodos privados en Interfaces:
En Java 8, podemos proporcionar la implementación de métodos en interfaces utilizando métodos predeterminados y estáticos. Sin embargo, no podemos crear métodos privados en Interfaces. Para evitar el código redundante y una mayor reutilización, Oracle Corp. introdujo métodos privados en las interfaces Java SE 9. Desde Java SE 9 en adelante, también podemos escribir métodos estáticos privados y privados en una interfaz usando la palabra clave ‘privado’.
public interface Card{ private Long createCardID(){ // Method implementation goes here. } private static void displayCardDetails(){ // Method implementation goes here. } }
6. API de imagen de resolución múltiple:
En Java SE 9, Oracle Corp. presentó una nueva API de imágenes de resolución múltiple. La interfaz importante en esta API es MultiResolutionImage. Está disponible en el paquete java.awt.image. MultiResolutionImage encapsula un conjunto de imágenes con diferentes alturas y anchuras y nos permite consultarlas con nuestros requisitos.
7. El sistema de módulos de la plataforma Java(9):
Uno de los grandes cambios de la característica de Java 9 es el sistema de módulos. Oracle Corp. presentó las siguientes características como parte de Jigsaw Project:
- JDK modulares
- Código fuente Java modular
- Imágenes modulares en tiempo de ejecución
- Encapsular las API internas de Java
- Sistema de módulo de plataforma Java
Antes de las versiones de Java SE 9, usamos Monolithic Jars para desarrollar aplicaciones basadas en Java. Esta arquitectura tiene muchas limitaciones e inconvenientes. Para evitar todas estas deficiencias, Java SE 9 viene con el sistema de módulos.
8. Mejoras en la API de procesos:
Java SE 9 viene con algunas mejoras en Process API. Han agregado un par de clases y métodos nuevos para facilitar el control y la gestión de los procesos del sistema operativo.
Dos nuevas interfaces en Process API:
- java.lang.ProcessHandle
- java.lang.ProcessHandle.Info
9. Cliente HTTP/2
Una nueva forma de realizar llamadas HTTP llega con Java 9. Como la API de cliente HTTP existente o heredada tiene numerosos problemas (como admite el protocolo HTTP/1.1 y no admite el protocolo HTTP/2 y WebSocket, funciona solo en modo de bloqueo y muchos problemas de rendimiento .), están reemplazando esta HttpURLConnection API con un nuevo cliente HTTP. Van a presentar una nueva API de cliente HTTP 2 en el paquete «java.net.http». Es compatible con los protocolos HTTP/1.1 y HTTP/2. Es compatible con los modos síncrono (modo de bloqueo) y asíncrono. Admite el modo asíncrono mediante la API de WebSocket.
HttpClient client = HttpClient.newHttpClient(); HttpRequest req = HttpRequest.newBuilder(URI.create("http://www.google.com")) .header("User-Agent", "Java") .GET() .build(); HttpResponse resp = client.send(req, HttpResponse.BodyHandler.asString());
10. Funciones varias de Java 9:
- Mejoras en el GC (recolector de basura)
- API de recorrido de pila
- Filtrar datos de serialización entrantes
- Desactivar la API de applet
- Indique la concatenación de strings
- Manejadores de método mejorados
- Servicio y API de registro de la plataforma Java
- Cuerdas compactas
- API de analizador para Nashorn
- Búsqueda Javadoc
____________________________________________________________________________________________________________________
P.D.: Java SE 9 ha llegado al final del soporte. Los usuarios de Java SE 9 deben cambiar a Java SE 10 o posterior.
Enlaces útiles para aprender más sobre Java:
1. Wikipedia
2. Documentación de Oracle