El lanzamiento de las funciones de Java 9 y Java 9 es un hito para el ecosistema de Java.Mantenerse al día con los nuevos lanzamientos es importante para estar al día con la tecnología y comprender la necesidad detrás de lo que se introduce lo acercará más a su .El marco modular desarrollado bajo Project Jigsaw será parte de esta versión de Java SE y las principales características son JShell (herramienta REPL), cambios importantes de API y cambios a nivel de JVM para mejorar el rendimiento y la capacidad de depuración de la JVM.
Antes de desentrañar las características de Java 9 en detalle, echemos un vistazo a las versiones anteriores de Java y veamos cuáles fueron las deficiencias y cómo Java 9 ayudó a superar esas anomalías:
- La plataforma Java Standard Edition y el JDK no eran navegables para pequeños dispositivos informáticos.
- No hubo seguridad y mantenimiento generales de JDK
- No hubo una mejora general en el rendimiento de la aplicación
- Fue difícil para los desarrolladores de Java crear y mantener las bibliotecas de código y las aplicaciones más grandes, tanto para las plataformas Java SE como EE.
En esta publicación de blog, categorizaré las características de Java 9 de la siguiente manera:
- Procesar actualizaciones de API en Java 9
- Cliente HTTP / 2 en Java 9
- Secuencias de comandos de shell de Java (lectura-evaluación-impresión-bucle) en Java 9
- Función de archivos JAR de versiones múltiples en Java 9
- Más funciones de actualizaciones de simultaneidad en Java 9
- Proyecto Jigsaw en Java 9
¿Qué hay de nuevo en Java 9?
He elegido algunas características nuevas de Java 9, que creo que vale la pena conocer. Veamos cuáles son estas características: -
Procesar actualizaciones de API en Java 9
La API de procesos de Java ha sido bastante primitiva,con soporte solo para lanzar nuevos procesos, redirigir la salida de los procesos y los flujos de errores. En esta versión, las actualizaciones de la API de proceso permiten lo siguiente:
- Obtener el PID del proceso JVM actual y cualquier otro proceso generado por JVM
- Enumere los procesos que se ejecutan en el sistema para obtener información como PID, nombre y uso de recursos.
- Gestión de árboles de procesos
- Gestionar subprocesos
Veamos un código de muestra, que imprime el PID actual, así como la información del proceso actual:
public class NewFeatures {public static void main (String [] args) {ProcessHandle currentProcess = ProcessHandle.current () System.out.println ('PID:' + currentProcess.getPid ()) ProcessHandle.Info currentProcessInfo = currentProcess.info () System.out.println ('Información:' + currentProcessInfo)}
Cliente HTTP / 2 en Java 9
Se espera que esta característica de Java 9 cambie en las versiones posteriores e incluso se elimine por completo.
Más temprano Los desarrolladores a menudo recurren al uso de bibliotecas de terceros, como Apache HTTP, Jersey, etc. Además de esto, la API HTTP de Java es anterior a la especificación HTTP / 1.1 y es sincrónica y difícil de mantener. Estas limitaciones exigieron la necesidad de agregar una nueva API. La nueva API de cliente HTTP proporciona lo siguiente:
- Una API simple y concisa para manejar la mayoría de las solicitudes HTTP.
- Soporte para la especificación HTTP / 2
- Mejor presentación
- Mejor seguridad
- Algunas mejoras más
Veamos un código de muestra para realizar una solicitud HTTP GET con las nuevas API. A continuación se muestra la definición del módulo definida en el archivo module-info.java:
module newfeatures {requiere jdk.incubator.httpclient}
El siguiente código usa la API de cliente HTTP, que es parte del módulo jdk.incubator.httpclient:
import jdk.incubator.http. * import java.net.URI public class Http2Feature {public static void main (String [] args) throws Exception {HttpClient client = HttpClient.newBuilder (). build () HttpRequest request = HttpRequest .newBuilder ( nuevo URI (http://httpbin.org/get)) .GET () .version (HttpClient.Version.HTTP_1_1) .build () HttpResponse.String response = client.send (request, HttpResponse.BodyHandler.asString ()) System.out.println ('Código de estado:' + response.statusCode ())
System.out.println ('Cuerpo de respuesta:' + response.body ())}}}
Secuencias de comandos de shell de Java (lectura-evaluación-impresión-bucle) en Java 9
Debes haber visto lenguajes, como Ruby, Scala, Groovy, Clojure y otros que se envían con una herramienta, que a menudo se llama REPL ( Lectura-Evaluación-Impresión-Bucle ). Esta herramienta REPL es extremadamente útil para probar las funciones del idioma. Por ejemplo, en Scala, podemos escribir un programa simple de Hello World como scala> println ('Hola mundo')
Algunas de las ventajas del JShell REPL son como sigue:
invertir un número en java
- Los desarrolladores experimentados pueden hacer prototipos y experimentar rápidamente antes de adoptarlo en su base de código principal
- Los desarrolladores de Java ahora pueden presumir de un REPL
Ejecutemos el comando JShell, como se muestra en la siguiente imagen:
Función de archivos JAR de versiones múltiples en Java 9
A partir de ahora, los archivos JAR pueden contener clases que solo se pueden ejecutar en la versión de Java para la que fueron compilados. Para aprovechar las nuevas funciones de la plataforma Java en versiones más recientes, los desarrolladores de la biblioteca deben lanzar una versión más nueva de su biblioteca. Pronto, los desarrolladores mantendrán varias versiones de la biblioteca, lo que puede ser una pesadilla. Para superar esta limitación, estas características de Java 9 de archivos JAR de múltiples versiones permiten a los desarrolladores crear archivos JAR con diferentes versiones de archivos de clase para diferentes versiones de Java.El siguiente ejemplo lo aclara más.
Aquí hay una ilustración de los archivos JAR actuales:
tarro de raíz - Una clase - Clase B. - C.clase
Así es como se ven los archivos JAR de múltiples versiones:
tarro de raíz - Una clase - Clase B. - C.clase - META-INF - versiones - 9 - Una clase - 10 - Clase B.
En la ilustración anterior, los archivos JAR admiten archivos de clase para dos versiones de Java: 9 y 10.
Entonces, cuando el JAR anterior se ejecuta en Java 9, la clase A. en las carpetas de versiones - 9 se selecciona para su ejecución.
En una plataforma que no admite archivos JAR de varias versiones, las clases del directorio de versiones nunca se utilizan. Entonces, si ejecuta el archivo JAR de múltiples versiones en Java 8, es tan bueno como ejecutar un archivo JAR simple.
Más funciones de actualizaciones de simultaneidad en Java 9
En esta actualización, una nueva clase, java.util.concurrent.Flow Se ha introducido, que tiene interfaces anidadas que admiten la implementación de un marco de publicación-suscripción. El marco de publicación-suscripción permite a los desarrolladores crear componentes que pueden consumir de forma asincrónica un flujo de datos en vivo mediante la configuración de editores que producen los datos y suscriptores que consumen los datos mediante suscripción, que los administra. Las cuatro nuevas interfaces son las siguientes:
- java.util.concurrent.Flow.Publisher
- java.util.concurrent.Flow.Subscriber
- java.util.concurrent.Flow.Subscription
- java.util.concurrent.Flow.Processor (que actúa como editor y suscriptor).
Proyecto Jigsaw en Java 9
El principal objetivo de este proyecto es introducir el concepto de modularidad apoyo para crear módulos en Java 9 y luego aplicar lo mismo al JDK es decir, modularizar el JDK .
Algunos de los beneficios de modularidad son como sigue:
- Fuerte encapsulación : Los módulos pueden acceder solo a aquellas partes del módulo que se han puesto a disposición para su uso. Por lo tanto, las clases públicas de un paquete no son públicas a menos que el paquete se exporte explícitamente en el archivo de información del módulo.
- Dependencias claras : Los módulos deben declarar qué otros módulos utilizarían mediante la cláusula require.
- Combinando módulos para crear un tiempo de ejecución más pequeño, que se puede escalar fácilmente a dispositivos informáticos más pequeños.
- De confianza : Las aplicaciones son más fiables al eliminar tiempo de ejecución errores . Ejemplo:- debe haber experimentado que su aplicación falla durante el tiempo de ejecución debido a clases faltantes, lo que resulta en ClassNotFoundException .
Hay varios JEP , que forman parte de este proyecto, de la siguiente manera:
- JEP 200 - JDK modular : Esto aplica el sistema de módulos de la plataforma Java para modularizar el JDK en un conjunto de módulos que se pueden combinar en tiempo de compilación, tiempo de construcción o tiempo de ejecución.
- JEP 201 - código fuente modular : Esto modulariza el código fuente de JDK en módulos y mejora las herramientas de construcción para compilar los módulos.
- JEP 220 – modular runtime images : Esto reestructura las imágenes en tiempo de ejecución de JDK y JRE para acomodar módulos y mejorar el rendimiento, la seguridad y el mantenimiento.
- JEP 260: encapsula la mayoría de las API internas : Esto permite acceder a muchas API internas directamente o mediante reflexión. Acceder a las API internas que están destinadas a cambiar es bastante arriesgado. Para evitar su uso, se encapsulan en módulos y solo las API internas que se utilizan ampliamente están disponibles hasta que una API adecuada esté en su lugar.
- JEP 261 - sistema de módulos : Esto implementa la especificación Java del sistema de módulos al cambiar el lenguaje de programación Java, JVM y otras API estándar
- JEP 282: jlink, el enlazador de Java : Esto permite empaquetar módulos y sus dependencias en tiempos de ejecución más pequeños.
Entonces, esto fue todo sobre Java 9 y las nuevas características de Java 9.
Ahora que ha entendido las características de Java 9, consulte la por Edureka, una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo.
cómo instalar php en windows 7
GRAMO ¿Tiene una pregunta para nosotros? Por favor, menciónelo en la sección de comentarios de este blog de 'Java 9' y nos comunicaremos con usted lo antes posible.