NetRunner: Java Mastery Guide 1.0 Help

Sistema de Módulos Java

Visão Geral

O sistema de módulos do Java (Project Jigsaw) foi introduzido no Java 9 para melhorar a modularidade e escalabilidade de aplicações Java.

Conceitos Fundamentais

Estrutura de um Módulo

MODULE STRUCTURE ├── module-info.java ├── com.example.module │ ├── internal │ └── api └── resources

Declaração de Módulo

Sintaxe Básica

module com.example.mymodule { requires java.base; exports com.example.api; provides com.example.spi.MyService with com.example.impl.MyServiceImpl; }

Diretivas Principais

Exports

  • Controla quais pacotes são acessíveis

  • Permite exportação seletiva

  • Gerencia visibilidade do módulo

Requires

  • Define dependências do módulo

  • Especifica módulos necessários

  • Controla transitividade

Provides/Uses

  • Implementa serviços

  • Define interfaces de serviço

  • Permite extensibilidade

Benefícios

  1. Encapsulamento Forte

    • Melhor segurança

    • Controle de acesso refinado

    • Isolamento de implementação

  2. Dependências Explícitas

    • Clareza nas relações

    • Gestão simplificada

    • Detecção precoce de problemas

  3. Performance

    • Carregamento otimizado

    • Menor footprint de memória

    • Inicialização mais rápida

Práticas Recomendadas

Organização

  • Módulos coesos

  • Interfaces bem definidas

  • Dependências mínimas

Nomenclatura

  • Nomes descritivos

  • Convenções consistentes

  • Hierarquia lógica

Exemplos Práticos

Módulo Básico

module com.example.core { exports com.example.core.api; requires java.logging; }

Módulo de Serviço

module com.example.service { exports com.example.service; provides com.example.spi.Service with com.example.service.impl.ServiceImpl; }

Ferramentas e Comandos

jmod

jmod create --class-path mods/com.example.mymodule

jdeps

jdeps --module-path mods com.example.mymodule

Migração para Módulos

Passos

  1. Análise de dependências

  2. Criação do module-info

  3. Refatoração de código

  4. Testes de integração

Desafios Comuns

  • Dependências circulares

  • Código legado

  • Bibliotecas não modulares

Recursos Adicionais

Documentação

  • JEP 261

  • Java Platform Module System Specification

  • Tutorial oficial do Java

Ferramentas

  • Maven plugins

  • Gradle support

  • IDE integration

26 June 2025