A partir de Java 9, la plataforma Java recibió una de sus mayores actualizaciones con la introducción del sistema de módulos, también conocido como Project Jigsaw. El principal objetivo de este proyecto era hacer Java más escalable para dispositivos pequeños, mejorar el rendimiento, facilitar el mantenimiento y evolución de las librerías y aplicaciones Java, además de ofrecer un sistema más seguro y robusto en términos de encapsulación de código.

¿Qué son los módulos?

Un módulo es una agrupación de código y datos que proporciona una funcionalidad completa y se puede compilar y distribuir de forma independiente. En el contexto de Java, un módulo puede contener uno o más paquetes y está definido por un archivo especial llamado module-info.java. Este archivo declara explícitamente qué paquetes exporta el módulo para ser utilizados por otros módulos, qué módulos son necesarios para su funcionamiento y qué servicios ofrece o consume.

¿Por qué módulos?

Antes del sistema de módulos, Java usaba el classpath para localizar sus clases y bibliotecas. Sin embargo, el classpath tenía varias desventajas: era propenso a errores, no ofrecía un medio para expresar dependencias y no imponía ningún tipo de encapsulación fuerte. Con el sistema de módulos, cada módulo tiene un espacio de nombres aislado, lo que reduce los conflictos y hace que el sistema sea más seguro y fácil de administrar.

Componentes del sistema del módulo

El sistema de módulos de Java se compone de varios componentes clave:

  • module-info.java: el archivo de definición del módulo, que contiene declaraciones, exportaciones y dependencias del módulo.
  • jmod: Un nuevo formato de archivo que le permite empaquetar módulos para su distribución.
  • jlink: una herramienta que le permite crear imágenes de tiempo de ejecución personalizadas que contienen solo los módulos que necesita una aplicación.

Definición de un módulo

Un módulo se define mediante un archivo module-info.java en la raíz del directorio fuente del módulo. Este archivo contiene la declaración del módulo, que comienza con la palabra clave module, seguida del nombre del módulo y un bloque que puede contener las siguientes directivas:

módulo com.myapp {
    requiere java.sql;
    exporta com.myapp.util;
    proporciona com.meuapp.servicos.InterfaceServico
        con com.meuapp.servicos.ImplementacaoServico;
}

Aquí, requires se usa para especificar una dependencia en otro módulo, exporta para declarar qué paquetes están disponibles para otros módulos y proporciona. con con para definir un servicio ofrecido por el módulo.

Resolver dependencias

Con el sistema de módulos, las dependencias se resuelven en el momento de la compilación, lo que significa que todos los módulos necesarios deben estar disponibles para que la compilación se realice correctamente. Esto elimina el problema del "infierno JAR" que era común al usar el classpath.

Fuerte encapsulación

Además de resolver dependencias, el sistema de módulos permite una encapsulación sólida. Esto significa que un módulo puede ocultar sus clases internas a otros módulos, exponiendo solo lo necesario. Esta característica aumenta la seguridad e integridad del código, ya que evita el mal uso de clases internas que no están destinadas al uso público.

Compilar y ejecutar módulos

Para compilar un módulo, utiliza el compilador javac con el archivo module-info.java. Una vez compilado, el módulo se puede ejecutar con la herramienta java, especificando el nombre del módulo y la clase que contiene el método main.

Conclusión

El sistema de módulos introducido en Java 9 es un avance significativo para la plataforma Java. Ofrece una mejor manera de organizar y administrar código y dependencias, proporciona una encapsulación más sólida y facilita la creación de aplicaciones Java más livianas y seguras. Si bien la transición al sistema de módulos puede requerir una curva de aprendizaje y refactorización del código existente, los beneficios a largo plazo son significativos para la comunidad Java.

Debido a que el sistema de módulos supone un cambio profundo en la forma en que se organiza y ejecuta Java, es importante que los desarrolladores se familiaricen con sus conceptos y herramientas. La migración al sistema de módulos puede ser un proceso gradual, pero es un paso importante para garantizar que las aplicaciones Java sean sostenibles y estén preparadas para futuros desafíos informáticos.

Ahora responde el ejercicio sobre el contenido:

¿Cuál de las siguientes afirmaciones sobre el sistema de módulos de Java, introducido en Java 9, es verdadera?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Explorando la biblioteca Java estándar (java.util, java.io, java.math, etc.)

Siguiente página del libro electrónico gratuito:

155Explorando la biblioteca Java estándar (java.util, java.io, java.math, etc.)

5 minutos

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.