Lançado em 21 de setembro de 2017, o Java 9 não ficou marcado por pequenas melhorias de sintaxe, mas por algo muito maior:
a introdução do sistema de módulos da plataforma Java, conhecido como JPMS (Java Platform Module System).
Essa foi, sem dúvida, a mudança mais profunda na estrutura do Java desde o seu nascimento.
📌 O contexto antes do Java 9
Antes do Java 9:
-
A JDK era um grande bloco monolítico
-
Todas as APIs ficavam visíveis para qualquer aplicação
-
Não havia encapsulamento real entre bibliotecas internas
-
Dependências transitivas eram difíceis de controlar
Isso funcionou por muitos anos, mas começou a gerar:
-
Aplicações grandes demais
-
Problemas de manutenção
-
Uso indevido de APIs internas
O Java 9 veio para resolver exatamente isso.
📦 O que é o JPMS (Java Platform Module System)?
O JPMS introduziu o conceito de módulos no Java.
Um módulo:
-
Declara explicitamente o que expõe
-
Define suas dependências
-
Controla o acesso às suas APIs
Tudo isso é feito por meio do arquivo:
module-info.java
Esse arquivo descreve:
-
Quais pacotes são exportados
-
Quais módulos são requeridos
-
O que fica encapsulado
🚀 Principais novidades do Java 9
🧱 Modularização da própria JDK
A JDK deixou de ser um bloco único.
Com o Java 9:
-
A JDK foi dividida em módulos
-
APIs internas passaram a ser encapsuladas
-
Acesso indevido começou a gerar avisos e erros
Isso aumentou a segurança e a previsibilidade da plataforma.
🔐 Encapsulamento forte
Antes do Java 9, era comum acessar APIs internas do Java.
Com o JPMS:
-
APIs internas deixaram de ser acessíveis por padrão
-
O uso indevido passou a ser desencorajado
-
Muitas aplicações precisaram ser ajustadas
Esse foi um impacto grande, especialmente em sistemas antigos.
⚠️ Impacto em bibliotecas e frameworks
O Java 9 forçou o ecossistema a amadurecer.
Frameworks tiveram que:
-
Abandonar APIs internas
-
Corrigir acessos ilegais
-
Atualizar suas dependências
Esse processo foi doloroso no início, mas necessário para o futuro do Java.
📦 jlink: JDKs sob medida
O Java 9 introduziu o jlink, permitindo:
-
Criar runtimes Java customizados
-
Incluir apenas os módulos necessários
-
Reduzir tamanho e superfície de ataque
Isso abriu caminho para:
-
Aplicações mais leves
-
Melhor uso em containers e cloud
🧠 Melhor gerenciamento de dependências
Com módulos, o Java passou a:
-
Detectar dependências ausentes em tempo de execução
-
Evitar conflitos de versões
-
Tornar erros mais explícitos
Embora o Maven e o Gradle continuem sendo essenciais, o JPMS trouxe mais rigor estrutural.
📜 Outras melhorias do Java 9
Além dos módulos, o Java 9 trouxe:
-
Métodos de fábrica imutáveis para coleções (
List.of,Set.of) -
Melhorias em Streams
-
REPL interativo (JShell)
-
Ajustes importantes na JVM
Essas mudanças melhoraram bastante a experiência do desenvolvedor.
🧠 O impacto real do Java 9
O Java 9:
-
Não foi adotado em massa como o Java 8
-
Teve impacto mais estrutural do que funcional
-
Preparou o Java para o futuro
Muitos projetos pularam o Java 9, mas todos sentiram seus efeitos.
📌 Java 9 e o caminho para o Java moderno
O Java 9:
-
Inaugurou o ciclo de lançamentos frequentes
-
Forçou limpeza e organização do ecossistema
-
Criou a base para versões LTS mais estáveis
Sem o Java 9, o Java moderno simplesmente não existiria.
📝 Conclusão
O Java 9 não foi uma versão “agradável”, mas foi necessária.
Com o JPMS, o Java:
-
Ganhou estrutura 🧱
-
Ganhou encapsulamento 🔐
-
Ganhou maturidade 📦
Ele pode não ter sido amado, mas foi essencial.