module-info.java
Declare un módulo
module-info.java es una lección gratuita de Java Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Java Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Java Academy incluye 4 lecciones en total.
El sistema de módulos
El Java Platform Module System (JPMS), introducido en Java 9, permite agrupar paquetes en módulos con nombre, dependencias explícitas y límites definidos.
La declaración se encuentra en un archivo especial: module-info.java.
Por qué usar módulos
Antes de los módulos, el classpath era un conjunto plano y desestructurado de archivos JAR. Cualquiera podía acceder a cualquier clase pública, y las dependencias que faltaban solo se detectaban en tiempo de ejecución.
Los módulos añaden encapsulación sólida y una configuración fiable, que se verifican en tiempo de compilación y al iniciar la aplicación.
Dónde se encuentra module-info
module-info.java se encuentra en la raíz del árbol de código fuente, por encima de los directorios de paquetes. Se compila en un module-info.class situado en la raíz del módulo.
Hay exactamente uno por módulo.
Declaración mínima
El módulo más sencillo solo tiene un nombre. Por convención, los nombres utilizan el formato de DNS inverso, como los paquetes.
module com.example.app {
}Declarar una dependencia
Utilice requires para depender de otro módulo. Todos los módulos requieren implícitamente java.base, por lo que nunca debe declarar esa dependencia.
module com.example.app {
requires java.sql;
requires java.logging;
}Exponer un paquete
De forma predeterminada, los paquetes de un módulo están ocultos. Utilice exports para hacer visibles a otros módulos los tipos públicos de un paquete.
module com.example.app {
exports com.example.app.api;
}Encapsulación fuerte
Cualquier paquete que no export es completamente inaccesible desde fuera, incluso sus clases públicas. Esta es la gran diferencia con el mundo del classpath.
Los paquetes internos permanecen internos, y la JVM lo hace cumplir.
Reglas para nombrar módulos
Los nombres de los módulos siguen las mismas reglas léxicas que los paquetes: identificadores separados por puntos. Elija un nombre estable y único a escala global, porque otros módulos dependen de él por su nombre.
Cambiar el nombre de un módulo es un cambio incompatible para sus consumidores.
Un ejemplo más completo
Una declaración real combina requires y exports. Este módulo depende del sistema de logging y expone únicamente el paquete que contiene su API pública.
module com.example.orders {
requires java.logging;
requires com.example.payments;
exports com.example.orders.api;
}Compilar un módulo
La compilación se realiza con opciones compatibles con módulos. Las opciones --module-source-path y -d indican al compilador dónde se encuentran las fuentes y dónde debe colocar la salida.
javac -d out --module-source-path src $(find src -name '*.java')java --module-path out --module com.example.app/com.example.app.Main
La ruta de módulos
Los módulos se resuelven desde la ruta de módulos (--module-path), la sucesora modular del classpath. Antes de ejecutarlo, el lanzador lee el descriptor de cada módulo para construir un grafo de dependencias.
Comprobación rápida
Recuerde la visibilidad predeterminada de los paquetes.
Resumen
Ha aprendido los conceptos básicos de module-info.java:
- Un descriptor por módulo en la raíz del código fuente
requiresdeclara dependencias;java.basees implícitoexportsexpone un paquete; todo lo demás queda encapsulado- Se compila y se ejecuta con
--module-pathy--module
A continuación: las directivas requires y exports en profundidad.
Preguntas frecuentes
¿La lección «module-info.java» es gratis?
Sí — el texto completo de «module-info.java» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Java Academy, actualiza a CoddyKit PRO. El curso de Java Academy incluye 4 lecciones en total.
¿Qué aprenderé en «module-info.java»?
Declare un módulo Practicas Java Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Java Academy?
No se requiere experiencia previa. Java Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «module-info.java»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Java Academy?
Sí. Cada lección de Java Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- module-info.java
- requires y exports
- Servicios con provides/uses
- Migración a módulos