Criação de Módulos em Java
Com o lançamento do JDK 9, um novo recurso foi introduzido na linguagem Java: a modularidade. Este recurso permite organizar o código em unidades estruturais distintas, chamadas módulos. Essencialmente, um módulo é um grupo de pacotes e recursos relacionados, acessível por um nome único.
Antes do Java 9, o encapsulamento de funcionalidades contava com alguns níveis. O primeiro nível era a classe, onde era possível definir variáveis e métodos com diferentes modificadores de acesso. O nível seguinte era o pacote, que agrupava um conjunto de classes. Com o avanço da complexidade dos sistemas, esses níveis se mostraram insuficientes. Assim, o módulo foi introduzido como um nível superior de encapsulamento, projetado para agrupar múltiplos pacotes.
Um módulo é composto por um conjunto de pacotes e, adicionalmente, especifica quais pacotes ele disponibiliza para outros módulos e de quais módulos ele depende. Opcionalmente, pode incluir arquivos de recursos ou bibliotecas nativas.
Para o nome de um módulo, pode ser utilizado qualquer identificador alfanumérico, incluindo o caractere de sublinhado. Contudo, a convenção recomendada é que o nome do módulo corresponda ao nome base dos pacotes que ele contém.
Criação de um Módulo
Para exemplificar, será criado e utilizado um módulo simples. Suponha que os arquivos de código-fonte estejam localizados no diretório C:\java
. Dentro desse diretório, o primeiro passo é criar uma pasta chamada demo
, que representará o módulo.
No diretório demo
, é criado um arquivo chamado module-info.java
com o seguinte conteúdo:
module demo {
}
Este arquivo, conhecido como descritor de módulo, tem como única finalidade conter a definição do módulo.
A palavra-chave module
define o módulo, que neste caso se chama demo
, seguindo o mesmo nome do diretório. O corpo do módulo, delimitado por chaves {}
, está vazio, pois ainda não há instruções a serem definidas.
Em seguida, a estrutura de pacotes é criada. Dentro do diretório demo
, é criada uma pasta com
. Dentro de com
, é criada a pasta programicio
, e dentro de com/programicio
, a pasta hello
.
Na pasta com/programicio/hello
, é criado um arquivo chamado Hello.java
:
package com.programicio.hello;
public class Hello {
public static void main(String[] args) {
System.out.println("Hello Demo Module!");
}
}
O nome do pacote, com.programicio.hello
, reflete a estrutura de diretórios do arquivo. A classe Hello
contém o método main
, responsável por exibir uma mensagem no console.
Ao final, a estrutura do projeto ficará assim:
C:\java └─── demo ├─── com │ └─── programicio │ └─── hello │ └─── Hello.java └─── module-info.java
O próximo passo é a compilação. Através de um terminal ou prompt de comando, navegue até a pasta C:\java
, que contém o diretório do módulo.
A compilação do módulo é feita com o seguinte comando:
javac demo/module-info.java demo/com/programicio/hello/Hello.java
Após a compilação, a execução do programa é realizada com o comando abaixo:
java --module-path demo --module demo/com.programicio.hello.Hello
O parâmetro --module-path
(ou sua forma abreviada, -p
) especifica o caminho para o módulo. O parâmetro --module
(ou -m
) indica a classe principal que deve ser executada.
Como resultado, a mensagem "Hello Demo Module!" será exibida no console:
C:\Windows> cd c:\java c:\java> javac demo/module-info.java demo/com/programicio/hello/Hello.java c:\java> java --module-path demo --module demo/com.programicio.hello.Hello Hello Demo Module! c:\java>
Resumo
- Modularidade: Um recurso do Java 9 que permite organizar o código em módulos.
- Módulo: Um agrupamento de pacotes e recursos relacionados com um nome único.
module-info.java
: O arquivo descritor que define o nome do módulo e suas dependências.- Compilação: A compilação de um módulo é feita com o comando
javac
, que processa tanto os arquivos Java quanto o descritormodule-info.java
. - Execução: A execução de uma aplicação modular é feita com o comando
java
, utilizando os parâmetros--module-path
e--module
.