El módulo es una colección de paquetes diseñados para su reutilización, y Module JAR es un JAR normal con un descriptor de módulo en su carpeta raíz. Un módulo automático es un JAR del classpath que se ha colocado en la ruta del módulo. Su nombre se deriva del nombre del archivo jar de forma predeterminada.
Por lo tanto, hay una enorme cantidad de bibliotecas preexistentes que puede usar en sus aplicaciones. Muchos de estos aún no están modularizados, pero para facilitar la migración, puede agregar el archivo JAR de cualquier biblioteca a la ruta del módulo de una aplicación y luego usar los paquetes en ese JAR. Cuando lo hace, el archivo JAR implícitamente se convierte en un módulo automático y especifica que la declaración del módulo requiere una directiva.
Exporta todos los paquetes, por lo que cualquier módulo que pueda leer módulos automáticos tiene acceso a todos los tipos públicos en los paquetes de módulos automáticos. Lee o requiere todos los demás módulos, por lo que un módulo automático tiene acceso a todos los tipos públicos expuestos por el otro módulo del sistema
Denominación de los Módulos Automáticos
- Si el nombre sigue a la expresión regular “-(\\d+(\\.|$))”, entonces el nombre del módulo se derivará de la subsecuencia que precede al guión de la primera aparición.
- Se elimina el sufijo o la extensión “.jar”.
- Todos los caracteres no alfanuméricos [^A-Za-z0-9] en el nombre del módulo se reemplazan con un punto “.” ,
- Todos los puntos repetidos se reemplazan por un solo punto, “.”, y se eliminan todos los puntos iniciales y finales.
Recursos en Módulos Automáticos
Cuando el módulo automático requiere recursos, como audios, imágenes, videos y más, esos recursos deben empaquetarse con el módulo para garantizar que estén disponibles cuando los tipos del módulo se usen en el momento de la ejecución.
Por convención, los recursos generalmente se colocan en una carpeta llamada res debajo del directorio raíz del módulo junto con el archivo module-info.java, y esto se conoce como encapsulación de recursos (que se muestra a continuación).
Usos de los Módulos Automáticos:
- Los módulos automáticos le permiten tratar un artefacto si tiene el atributo Automatic-Module-Name en su entrada de manifiesto principal.
- Los niveles tradicionales de encapsulación, como todos los paquetes, están abiertos para acceso reflexivo profundo y exportados para acceso ordinario en tiempo de compilación y tiempo de ejecución a sus tipos públicos.
- Podemos leer cualquier otro módulo con nombre, ya sea automático o explícito.
- Podemos usarlo para encontrar errores antes porque eso fue posible con el classpath.
- Los módulos automáticos hacen que nuestra aplicación sea liviana y también mejoran el rendimiento de una aplicación. Por esto, se puede ejecutar en más dispositivos.
- Nos ayuda a desarrollar una aplicación modular o modularizar nuestras aplicaciones existentes sin esperar a que las bibliotecas de terceros se modularicen.
Ejemplo:
simple-add/src/simple/add/calculate.java
Java
// Java program to define the sum() // method inside the calculate class package simple.add public class calculate { public static int sum(int a1, int a2) { return a1 + a2; } }
El ejemplo anterior tiene una clase llamada Calcular , que tiene una función (suma) para devolver la suma de dos dígitos.
add.app/src/com/example/main.java
Java
// Java program to import and use the // methods of the calculate class package com.example import simple.add.calculate; public class main { public static void main(String[] args) { int sum = calculate.sum(10, 7); System.out.println("sum is " + sum); } }
El código anterior tiene una clase principal y usa la función suma de Calcular clase al importarlos.
add.app/src/module-info.java
module add.app { requires simple.add; }
La declaración del módulo anterior requiere el módulo jar de dependencia (automático) por su nombre, que se transformará de «matemáticasfáciles.jar» a «matemáticasfáciles».
Salida: a continuación se muestra la salida deseada del código anterior mediante el uso del módulo automático
E:\automatic-module-example\add.app>java --module-path out;lib --module add.app/com.example.main sum : 17
¿Por qué módulos automáticos?
El módulo Automático se introdujo para hacer que la compilación y el inicio de aplicaciones sean más fluidos y confiables y para encontrar fallas o errores antes de lo que era posible con el classpath. Para mantenerlos sin problemas, no hay forma de que una declaración de módulo requiera algo más que un módulo con nombre, que excluye todo lo cargado desde el classpath. Si la historia terminara aquí, un módulo JAR solo se basa en otros módulos JAR, que penetrarían en el entorno para modularizar de abajo hacia arriba.
Publicación traducida automáticamente
Artículo escrito por goutamverma84009 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA