Codificación

¿Cuál es la diferencia entre un paquete y un módulo en Java?

Tabla de Contenidos ocultar 1 ¿Qué es el modelo Java y sus conceptos básicos? 2 Ventajas de utilizar módulos Java 2.1 1. El número...

Escrito por Ashok Kumar · Lectura de 5 min >
Empresas de desarrollo de software Java en EE. UU.

El sistema de módulos de la plataforma Java (JPMS), a veces conocidos como módulos Java, se agregaron a Java 9 como una nueva característica. Se ha agregado la capacidad de agrupar paquetes Java y codificarlos en una única entidad conocida como módulo. La falta de una idea de módulo en las primeras versiones de Java dificulta la gestión de todas las aplicaciones. Para solucionar este problema, Java 9 reorganizó JDK en una colección de varios módulos, lo que permite a los desarrolladores acceder sólo a los módulos específicos que necesitan para un proyecto y no a todos los módulos. JDK. Ahora, además de JDK, Java también permite a los programadores diseñar módulos para crear aplicaciones basadas en módulos. Analicemos los roles de Java para identificar la diferencia entre paquetes y módulos en Java. Repasaremos qué son los módulos Java y cómo usarlos en este tutorial.

¿Qué es el modelo Java y sus conceptos básicos?

Los desarrolladores pueden empaquetar un Aplicación Java o una API en módulos Java independientes que utilizan este enfoque de empaquetado. Los desarrolladores también pueden indicar qué paquetes Java contenidos en un módulo deben exponerse a otros módulos Java en forma de un archivo JAR modular. Para los desarrolladores de Java, utilizar módulos Java tiene muchas ventajas. Los siguientes son algunos de los beneficios clave que hacen que el uso de módulos Java para el desarrollo de aplicaciones sea una excelente opción:

1. Las aplicaciones se distribuyen más fácilmente

Todas las API de la plataforma Java están divididas en diferentes módulos por JPMS. Permite a los desarrolladores especificar qué módulos necesita una aplicación. Java puede empaquetar su programa solo con los módulos API Java requeridos utilizando esta información. Se le habría pedido que incluyera todas las API en su aplicación sin JPMS. Con frecuencia, la aplicación era innecesariamente grande y difícil de entregar debido a las API infrautilizadas.

2. Los paquetes internos deberían encapsularse mejor

Los paquetes Java dentro del módulo que pueden ser vistos por los usuarios de otros módulos Java deben ser especificados explícitamente por el módulo Java. Los módulos ocultos sólo pueden ser utilizados internamente por el módulo Java. Crea paquetes muy bien encapsulados.

3. La detección inicial de clases faltantes.

Las aplicaciones Java ahora están incluidas en módulos Java a partir de Java 9 y posteriores. Por lo tanto, cada módulo de aplicación debe enumerar los componentes de la API de Java que necesita. Las organizaciones ahora verifican toda la jerarquía de dependencia de módulos para asegurarse de que no falte ningún módulo. La JVM informa que faltan módulos Java y se apaga si no se encuentran los módulos necesarios. Antes de Java 9, no se podían encontrar las clases faltantes hasta que la aplicación intentaba usarlas durante el tiempo de ejecución. Si para entonces no se puede identificar la clase necesaria, la aplicación fallaría.

Ventajas de utilizar módulos Java

Después de describir los módulos Java y sus ventajas, veamos algunos de los fundamentos de los módulos Java.

1. La cantidad de paquetes

Con frecuencia se incluyen uno o más paquetes Java que forman parte de la misma aplicación en los módulos Java. Un módulo podría ser una plataforma Java o un programa Java completo.

2. Denominación de componentes Java

Un módulo Java necesita un nombre especial. Utiliza las mismas reglas de nombres que los paquetes de Java, excepto que no se permiten guiones bajos porque Java planea usarlos como identificadores reservados en el futuro. Esto también incluye paquetes y clases.

3. Descriptor del módulo 

Es necesario un descriptor de módulo Java llamado module-info.java para los módulos Java. El directorio raíz del módulo es donde debe estar. El descriptor del módulo enumera los paquetes que se deben exportar, así como los paquetes adicionales que necesita el módulo.

4. Exportaciones de módulos

Se deberán indicar específicamente los paquetes que sean necesarios para el resto de módulos, como se indicó anteriormente. El descriptor del módulo contiene una declaración de los paquetes exportados.

¿Cuál es la diferencia entre un paquete y un módulo en Java?

Java 9 introduce módulos Java a través del Java Platform Module System (JPMS). Dependiendo de dónde lo lea, el Java Platform Module System también se denomina a veces Java Jigsaw o Project Jigsaw. Jigsaw fue el nombre del proyecto utilizado internamente durante todo el desarrollo. Posteriormente, Jigsaw adoptó el nombre. Un grupo de clases e interfaces relacionadas se agrupan bajo el espacio de nombres de un paquete. 

Paquetes

Digamos que tenemos dos clases, Employee y Department, que están relacionados entre sí. Podemos ponerlos en un paquete llamado company como sigue:

Luego podemos usar estas clases en otra clase importando el company paquete:

// Employee.java
package company;

public class Employee {
    // fields and methods
}

// Department.java
package company;

public class Department {
    // fields and methods
}

Módulos

Con los módulos podemos organizar el company paquete y sus dependencias en una unidad autónoma. Digamos que tenemos un módulo llamado company.module que contiene el company paquete y sus dependencias:

javaCopy code
// module-info.java
module company.module {
    exports company;
}

La exports declaración indica que el company El paquete es parte del módulo y está expuesto a otros módulos.

Luego podemos usar este módulo en otro módulo declarando una dependencia en él:

// module-info.java
module my.module {
    requires company.module;
}

// Main.java
import company.Employee;
import company.Department;

public class Main {
    public static void main(String[] args) {
        Employee employee = new Employee();
        Department department = new Department();
        // use employee and department objects
    }
}

Aquí el requires declaración indica que el my.module módulo depende de la company.module módulo, y puede utilizar el company paquete y sus clases.

Tenga en cuenta que no necesitamos importar el company paquete explícitamente porque ya es parte del company.module módulo, que es una dependencia de my.module.

Lista de 24 módulos en Java

  1. java.base: contiene las clases e interfaces fundamentales que utilizan todos los demás módulos.
  2. java.compiler: contiene el compilador del lenguaje de programación Java, que se utiliza para compilar el código fuente de Java en código de bytes.
  3. java.datatransfer: proporciona un marco para transferir datos entre diferentes partes de una aplicación o entre diferentes aplicaciones.
  4. java.desktop: contiene las clases e interfaces para crear interfaces gráficas de usuario (GUI) en aplicaciones de escritorio.
  5. java.instrument: proporciona un mecanismo para instrumentar el código de bytes de Java en tiempo de ejecución.
  6. java.logging: proporciona un marco de registro para aplicaciones Java.
  7. java.management: proporciona la API de Java Management Extensions (JMX) para administrar y monitorear aplicaciones Java.
  8. java.management.rmi: proporciona el conector RMI para la API JMX, que permite la gestión y supervisión remota de aplicaciones Java.
  9. java.naming: proporciona la API JNDI (Java Naming and Directory Interface) para acceder a servicios de nombres y directorios.
  10. java.net.http: proporciona el cliente HTTP y las API WebSocket para realizar solicitudes HTTP y manejar respuestas del servidor.
  11. java.prefs: proporciona una forma de almacenar y recuperar datos de preferencias del usuario y del sistema.
  12. java.rmi: proporciona la API de invocación de método remoto (RMI) para la comunicación remota entre aplicaciones Java.
  13. java.scripting: proporciona un marco para integrar lenguajes de scripting en aplicaciones Java.
  14. java.se: incluye todos los módulos de la plataforma Java SE.
  15. java.security.jgss: proporciona la API de Java Generic Security Services (JGSS) para implementar mecanismos de seguridad como Kerberos y GSS-API.
  16. java.security.sasl: proporciona la API de capa de seguridad y autenticación simple (SASL) para implementar mecanismos de autenticación.
  17. java.smartcardio: proporciona la API de E/S de tarjeta inteligente Java para acceder a tarjetas inteligentes y otros dispositivos de tarjetas inteligentes.
  18. java.sql: proporciona la API JDBC para acceder a bases de datos relacionales.
  19. java.sql.rowset: proporciona la API JDBC RowSet para trabajar con datos desconectados.
  20. java.transaction.xa: proporciona la API de transacciones Java (JTA) para coordinar transacciones distribuidas.
  21. java.xml: proporciona la API Java para procesamiento XML (JAXP) para analizar y manipular documentos XML.
  22. java.xml.crypto: proporciona la API de Java para firmas digitales XML (XMLDSig) y cifrado XML (XMLEnc) para proteger documentos XML.
  23. jdk.crypto.cryptoki: proporciona la API de Java Cryptography Architecture (JCA) para la integración con módulos de seguridad de hardware.
  24. jdk.zipfs: proporciona el proveedor del sistema de archivos Zip para trabajar con archivos ZIP.

Esquema básico

Los paquetes pueden conceptualizarse como análogos a varios directorios de computadora. Puede guardar fotos en una carpeta, scripts o programas en otra, y HTML páginas en un tercero. Tiene sentido mantener las cosas organizadas agrupando clases e interfaces comparables en paquetes porque el software creado utilizando el lenguaje de programación Java puede estar compuesto por cientos o miles de clases diferentes. Un módulo es una agrupación de paquetes y recursos Java relacionados con un archivo descriptor que contiene información sobre los paquetes y recursos que expone este módulo, los paquetes que utiliza actualmente y otros detalles. Puede empaquetar una aplicación Java o una API de Java como un módulo Java distinto mediante el proceso de empaquetado conocido como módulo Java.

Un archivo JAR modular es la forma en que se empaqueta un módulo Java. Un módulo Java tiene la opción de declarar qué paquetes Java deberían estar disponibles para otros módulos Java que lo utilicen. Un módulo Java también debe enumerar los módulos Java que necesita para funcionar.

PREMIUM

  • Un paquete reúne clases relevantes pero no se puede implementar por sí solo.
  • La primera versión de Java incluye paquetes.
  • Los paquetes se crearon para permitir a los desarrolladores tener clases con el mismo nombre en paquetes separados y mantener clases similares juntas.
  • Aunque sean privadas, las clases declaradas dentro de un paquete están disponibles mediante reflexión.
  • No es necesario un descriptor de paquete para los paquetes.

Módulo

  • Un módulo reúne paquetes similares y se puede implementar por sí solo.
  • En Java 9, se agregaron módulos.
  • Las preocupaciones de seguridad y el deseo de hacer el JDK más pequeño llevaron a la adición de módulos.
  • No se puede acceder a las clases declaradas dentro de un módulo mediante reflexión desde fuera del módulo.
  • Un módulo se compone de numerosos paquetes (carpetas que contienen archivos.java). Un módulo es esencialmente una biblioteca con un propósito particular.
¿Cuántos módulos hay en Java?

Hay 24 módulos en Java.

¿Cuál es la última versión de Java?

La última versión de Java fue Java 17, que se lanzó el 14 de septiembre de 2021.

Escrito por Ashok Kumar
Director ejecutivo, fundador y director de marketing de Make An App Like. Soy escritor en OutlookIndia.com, KhaleejTimes, DeccanHerald. Contáctame para publicar tu contenido. Mi Perfil

Deje un comentario

Translate »