0Pricing
Java Academy · Aula

module-info.java

Declare um módulo.

module-info.java é uma aula grátis de Java Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Java Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Java Academy inclui 4 aulas no total.

O sistema de módulos

O Sistema de Módulos da Plataforma Java (JPMS), introduzido no Java 9, permite agrupar pacotes em módulos nomeados com dependências e limites explícitos.

A declaração fica em um arquivo especial: module-info.java.

Por que usar módulos

Antes dos módulos, o caminho de classes era um conjunto plano e desestruturado de arquivos JAR. Qualquer pessoa podia acessar qualquer classe pública, e as dependências ausentes só apareciam durante a execução.

Os módulos acrescentam encapsulamento forte e configuração confiável, verificados no momento da compilação e da inicialização.

Onde fica module-info

module-info.java fica na raiz da árvore do código-fonte, acima dos diretórios de pacotes. Ele é compilado em um module-info.class na raiz do módulo.

Há exatamente um por módulo.

Declaração mínima

O módulo mais simples tem apenas um nome. Por convenção, os nomes usam o DNS inverso, como um pacote.

module com.example.app {
}

Declarando uma dependência

Use requires para depender de outro módulo. Todo módulo requer implicitamente java.base, portanto você nunca declara esse módulo.

module com.example.app {
    requires java.sql;
    requires java.logging;
}

Expondo um pacote

Por padrão, os pacotes de um módulo ficam ocultos. Use exports para tornar os tipos públicos de um pacote visíveis para outros módulos.

module com.example.app {
    exports com.example.app.api;
}

Encapsulamento forte

Qualquer pacote que não seja exportado por export fica completamente inacessível a partir do exterior, até mesmo suas classes públicas. Essa é a grande diferença em relação ao mundo do caminho de classes.

Os pacotes internos permanecem internos, por imposição da JVM.

Regras de nomenclatura dos módulos

Os nomes de módulos seguem as mesmas regras lexicais dos pacotes: identificadores separados por pontos. Escolha um nome estável e globalmente exclusivo, pois outros módulos dependem dele pelo nome.

Renomear um módulo é uma alteração incompatível para os consumidores.

Um exemplo mais completo

Uma declaração real combina dependências e exportações. Esse módulo depende do mecanismo de registro e expõe apenas o pacote da sua API pública.

module com.example.orders {
    requires java.logging;
    requires com.example.payments;

    exports com.example.orders.api;
}

Compilando um módulo

A compilação é feita com opções que consideram os módulos. As opções --module-source-path e -d informam ao compilador onde ficam os fontes e a saída.

  • javac -d out --module-source-path src $(find src -name '*.java')
  • java --module-path out --module com.example.app/com.example.app.Main

O caminho de módulos

Os módulos são resolvidos a partir do caminho de módulos (--module-path), o sucessor modular do caminho de classes. O iniciador lê o descritor de cada módulo para criar um grafo de dependências antes da execução.

Verificação rápida

Relembre a visibilidade padrão dos pacotes.

Recapitulação

Você aprendeu os fundamentos de module-info.java:

  • Um descritor por módulo na raiz dos fontes
  • requires declara dependências; java.base está implícito
  • exports expõe um pacote; todo o restante fica encapsulado
  • Compilado e executado com --module-path e --module

A seguir: diretivas de dependência e exportação em profundidade.

Perguntas Frequentes

A aula “module-info.java” é grátis?

Sim — o texto completo de “module-info.java” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Java Academy, atualize para CoddyKit PRO. O curso de Java Academy inclui 4 aulas no total.

O que vou aprender em “module-info.java”?

Declare um módulo. Você pratica Java Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Java Academy?

Nenhuma experiência prévia é necessária. Java Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “module-info.java”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Java Academy?

Sim. Cada aula de Java Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. module-info.java
  2. requires e exports
  3. Serviços com provides/uses
  4. Migrando para módulos
← Voltar para Java Academy