Funciones de JDK9: herramientas de modularización y REPL

Insertar descripción de la imagen aquí

Prefacio

Cuando se habla de Java9, lo primero que suele venir a la mente es el proyecto Jigsaw (más tarde rebautizado como Modularity). Como todos sabemos, Java se ha desarrollado durante más de 20 años (lanzado originalmente en 1995). Si bien Java y la ecología relacionada se enriquecen constantemente, algunos problemas están cada vez más expuestos:

  1. El entorno operativo Java está inflado e inflado. Cada vez que se inicia la JVM, se cargarán al menos 30 ~ 60 MB de memoria. La razón principal es que la JVM necesita cargar rt.jar. Independientemente de si las clases que contiene son cargadas por el cargador de clases, se cargará todo el jar. en la memoria por la JVM en el primer paso.
  2. A medida que las bases de código crecen, las posibilidades de crear un "código espagueti" complejo y enrevesado aumentan exponencialmente. La dependencia cruzada de diferentes versiones de bibliotecas de clases causa dolores de cabeza, lo que dificulta la mejora del desarrollo de Java y la eficiencia operativa.
  3. Es difícil encapsular verdaderamente el código y el sistema no tiene un concepto claro de las dependencias entre las diferentes partes (es decir, archivos JAR). Cualquier otra clase pública en el classpath puede acceder a cada clase pública, lo que puede llevar al uso inadvertido de API que no están destinadas a ser accesibles públicamente.

Modular

(La modularización puede cargar las clases requeridas para la operación del programa de acuerdo con las necesidades del módulo).
Esencialmente, la modularización consiste en envolver una capa fuera del paquete (para decirlo sin rodeos, hay muchos módulos en el proyecto) para administrar cada módulo, como Como proyecto de comercio electrónico, hay módulos de pago y módulos de compras a continuación, y los módulos se llaman entre sí para que el código sea más seguro.

La accesibilidad entre módulos es un acuerdo bidireccional entre el módulo utilizado y el módulo consumidor: un módulo hace explícitamente que sus tipos públicos estén disponibles para otros módulos, y los módulos que usan esos tipos públicos declaran explícitamente una dependencia en el primer módulo, todos los paquetes no exportados en un módulo son privados para el módulo y no se pueden usar fuera del módulo.

Caja modular

Crear un proyecto Java normal
Insertar descripción de la imagen aquí

Luego prepare dos módulos bajo este proyecto.

Insertar descripción de la imagen aquí

Luego agregue algunas clases en JDK19Module1

Insertar descripción de la imagen aquí

Entonces debemos considerar cómo usar esta clase en el módulo 2 de JDK19, o usar la clase en el módulo 1.

El primer paso es crear el módulo-info.java respectivo en el src de los dos módulos.

Insertar descripción de la imagen aquí

La estructura creada es:

Insertar descripción de la imagen aquí

En el archivo module-info.java de JDK19Module1. Establecer qué paquetes pueden estar expuestos al mundo exterior.

imagen.png

Luego introduzca el módulo 2 en module-info.java de JDK19Module2

Insertar descripción de la imagen aquí

Pero descubrí que se informó un error. La razón es que necesitamos agregar el módulo 1 como entorno de ejecución del módulo 2. Las operaciones específicas son las siguientes

estructura del proyecto > módulos > JDK19Module2>dependencias >>+modulo lib > JDK19Module1> aplicar >>ok

Insertar descripción de la imagen aquí

Ahora es el momento de utilizar las clases del módulo 1 en el módulo 2.

Insertar descripción de la imagen aquí

Herramienta REPL interactiva

Lenguajes como Python y Scala cuentan desde hace mucho tiempo con entornos de programación interactivos REPL (lectura-evaluación-impresión-bucle), que evalúan declaraciones y expresiones de forma interactiva. Los desarrolladores sólo necesitan ingresar algún código y obtener comentarios sobre el programa antes de la compilación. Para ejecutar código en versiones anteriores de Java, debe crear archivos, declarar clases y proporcionar métodos de prueba.

Para implementar REPL, necesita un comando: comando JShell (comando de shell en Linux, comando de shell en Java)

Insertar descripción de la imagen aquí

Configure la variable de entorno en java9 y puede usar el comando jshell en la consola de control: si hay otras versiones de JDK instaladas en la computadora y las variables de entorno también son otras versiones, puede cambiar al directorio bin de la versión especificada a través de cd en dos, y luego se puede utilizar esta versión de jshell.

Insertar descripción de la imagen aquí

Declaración de salida simple

Insertar descripción de la imagen aquí

El código operado arriba desaparece después de cerrar la ventana. Si necesitamos código relacionado con la persistencia, también podemos hacerlo.

Insertar descripción de la imagen aquí

Salir de jshell

/exit

Supongo que te gusta

Origin blog.csdn.net/qq_28314431/article/details/132916378
Recomendado
Clasificación