Java 9 modules são uma das maiores mudanças na estrutura do Java. Aqui vou fazer uma breve introdução de alto nível sobre o “Sistema de Módulos do Java 9”.
Módulos do Java 9
Vamos explorar os seguintes tópicos sobre o sistema de módulos do Java 9.
- Introdução
- Java SE 9: Projeto Jigsaw
- Problemas do Sistema Java Atual?
- Vantagens do Sistema de Módulos do Java SE 9
- Comparação entre JDK 8 e JDK 9
- O que é o Módulo Java 9?
- Mãe do Sistema de Módulos do Java 9
- Comparação entre Aplicações Java 8 e Java 9
Introdução
A Oracle adiou o lançamento do Java 9 de março de 2017 para setembro de 2017. Como sabemos, o Java SE 8 veio com três grandes recursos novos (além de algumas melhorias e novos recursos).
- Expressões Lambda
- API de Fluxo
- API de Data
Da mesma forma, o Java SE 9 está chegando com três grandes recursos (além de algumas melhorias e novos recursos):
- Sistema de Módulos do Java (Projeto Jigsaw)
- Java REPL
- Projeto Coin de Fresagem
Neste post, discutiremos os conceitos básicos do projeto Oracle Jigsaw.
Java SE 9: Projeto Jigsaw
O projeto Jigsaw vai introduzir um conceito completamente novo no Java SE 9: Sistema de Módulos Java. É um projeto grande e prestigioso da Oracle Corp no lançamento do Java SE 9. Inicialmente, eles começaram este projeto como parte do lançamento do Java SE 7. No entanto, com grandes mudanças, ele foi adiado para o Java SE 8 e, novamente, adiado. Agora está prestes a ser lançado com o Java SE 9 em setembro de 2017. Principais Metas do Projeto Jigsaw:
- O JDK Modular
Como sabemos, o sistema JDK atual é muito grande. Então eles decidiram dividir o JDK em pequenos módulos para obter diversos benefícios (discutiremos em breve nas próximas seções).- Código Fonte Modular
Os arquivos de código fonte atuais em jar são muito grandes, especialmente o rt.jar é muito grande. Então eles vão dividir o código fonte do Java em módulos menores.- Imagens de Tempo de Execução Modulares
O principal objetivo desta funcionalidade é “Reestruturar as imagens de tempo de execução do JDK e JRE para acomodar módulos”.- Encapsular a Maioria das APIs Internas
O principal objetivo desta funcionalidade é “Tornar a maioria das APIs internas do JDK inacessíveis por padrão, mas deixar algumas APIs internas críticas e amplamente utilizadas acessíveis”.- Sistema de Módulo da Plataforma Java
O principal objetivo desta funcionalidade é “Permitir que o usuário crie seus próprios módulos para desenvolver suas aplicações”.- jlink: O Linker Java
O principal objetivo desta ferramenta jlink é “Permitir que o usuário crie executáveis para suas aplicações”.
Se você não entendeu claramente essas coisas, NÃO se preocupe. Vamos discutir esses conceitos detalhadamente com alguns exemplos úteis nas próximas seções e também em minhas próximas postagens.
Problemas do Sistema Java Atual?
**Em Seção, Vamos Discutir “Por Que Precisamos do Sistema de Módulos Java SE 9” Isso Significa os Problemas do Sistema Java Atual. Os Sistemas Java SE 8 ou anteriores têm os seguintes problemas no desenvolvimento ou entrega de aplicativos baseados em Java.
- Como o JDK é muito grande, é um pouco difícil dimensioná-lo para dispositivos pequenos. O Java SE 8 introduziu 3 tipos de perfis compactos para resolver esse problema: compact1, compact2 e compact3. Mas isso não resolve o problema.
- Arquivos JAR como rt.jar, etc., são muito grandes para serem usados em dispositivos e aplicativos pequenos.
- Como o JDK é muito grande, nossos aplicativos ou dispositivos não conseguem oferecer um melhor desempenho.
- Não há uma forte encapsulação no sistema Java atual porque o modificador de acesso “public” é muito aberto. Qualquer pessoa pode acessá-lo.
- Assim como o JDK, o JRE é muito grande, tornando difícil testar e manter aplicativos.
- Como o público é muito aberto, eles não conseguem evitar o acesso a algumas APIs internas não críticas, como sun.*, *.internal.*, etc.
- Como o usuário pode acessar APIs internas também, a segurança também é uma grande questão.
- O aplicativo é muito grande.
- É um pouco difícil oferecer um acoplamento menor entre os componentes.
Para resolver todos esses problemas, a Oracle Corp está prestes a lançar o sistema de módulos Java no Java SE 9.
Vantagens do Sistema de Módulos Java SE 9
O Sistema de Módulos do Java SE 9 vai proporcionar os seguintes benefícios
- Como o Java SE 9 vai dividir o JDK, JRE, JARs etc., em módulos menores, podemos usar quaisquer módulos que desejarmos. Portanto, é muito fácil dimensionar a aplicação Java para dispositivos pequenos.
- Simplicidade de Teste e Manutenção.
- Suporta melhor Desempenho.
- Como público não é apenas público, ele oferece uma Encapsulação muito forte. (Não se preocupe, é um conceito grande. vamos explorá-lo com alguns exemplos úteis em breve).
- Não podemos mais acessar APIs Internas Não-Críticas.
- Os módulos podem ocultar detalhes indesejados e internos com muita segurança, podemos obter uma melhor Segurança.
- A aplicação é pequena demais porque podemos usar apenas os módulos que desejamos.
- É fácil suportar Menos Acoplamento entre os componentes.
- É fácil suportar o Princípio da Responsabilidade Única (SRP).
Vamos explorar todos esses conceitos um por um em breve.
Comparar JDK 8 e JDK 9
Nós sabemos o que um software JDK contém. Depois de instalar o software JDK 8, podemos ver alguns diretórios como bin, jre, lib etc na pasta Home do Java. No entanto, a Oracle Corp mudou um pouco essa estrutura de pasta conforme mostrado abaixo. Estrutura de Pasta do JDK 8:
Estrutura de Pasta do JDK 9:
Aqui o JDK 9 NÃO contém o JRE. No JDK 9, o JRE é separado em uma pasta de distribuição separada. O software JDK 9 contém uma nova pasta “jmods”. Ela contém um conjunto de Módulos Java 9 conforme mostrado abaixo. No JDK 9, Não há rt.jar e Não há tools.jar
NOTA:- Até o momento, “jmods” contém 95 módulos. Pode aumentar na versão final. A pasta “jmods” está disponível em ${JAVA_HOME}/jmods. Esses são conhecidos como Módulos JDK.
O que é um Módulo Java 9?
A Module is a self-describing collection of Code, Data, and some Resources. It is a set of related Packages, Types (classes, abstract classes, interfaces etc) with Code & Data and Resources. Each Module contains only a set of related code and data to support Single Responsibility (Functionality) Principle (SRP). The main goal of Java 9 Module System is to support Modular Programming in Java. We will discuss on “What is a Module Descriptor” and “How to develop Java Modules” in my coming posts.
Mãe do Sistema de Módulo Java 9
Neste momento, o Sistema de Módulos Java 9 possui 95 módulos no JDK de Acesso Antecipado. A Oracle Corp separou os JARs do JDK e as Especificações do Java SE em dois conjuntos de Módulos.
- Todos os Módulos do JDK começam com “jdk.*”
- Todos os Módulos de Especificações do Java SE começam com “java.*”
O Sistema de Módulos Java 9 possui um Módulo “java.base”. É conhecido como Módulo Base. É um módulo independente e NÃO depende de nenhum outro módulo. Por padrão, todos os outros módulos dependem deste. É por isso que o Módulo “java.base” também é conhecido como A Mãe dos Módulos Java 9. É o módulo padrão para todos os Módulos do JDK e Módulos Definidos pelo Usuário.
Compare as Aplicações Java 8 e Java 9
Já desenvolvemos muitas aplicações em Java utilizando Java 5, 6, 7 ou 8. Sabemos como uma aplicação Java 8 ou anterior se parece e o que ela contém. Em resumo, eu representei uma aplicação Java 8 em um diagrama, como mostrado abaixo: Em uma aplicação Java 8 ou anterior, o componente de nível superior é um Pacote. Ele agrupa um conjunto de tipos relacionados em um grupo. Também contém um conjunto de recursos. Aplicações Java 9 não têm muita diferença em relação a isso. Apenas introduziram um novo componente chamado “Módulo”, que é usado para agrupar um conjunto de Pacotes relacionados em um grupo. E mais um novo componente chamado Descritor de Módulo (“module-info.java”). É isso. O restante da aplicação é o mesmo das versões anteriores, conforme mostrado abaixo.
Assim como as aplicações Java 8 têm Pacotes como componentes de nível superior, as aplicações Java 9 têm Módulo como componentes de nível superior. NOTA: Cada Módulo Java 9 possui um e apenas um Módulo e um Descritor de Módulo. Ao contrário dos Pacotes Java 8, não podemos criar vários módulos em um único Módulo. Em resumo, posso dizer que um Módulo Java 9 contém os seguintes componentes principais:
- Um Módulo
- Nome do Módulo
- Descritor do Módulo
- Conjunto de Pacotes
- Conjunto de Tipos e Recursos
Aqui os Recursos podem ser module-info.java (Módulo Descritor) ou qualquer outra propriedade ou XML. Discutimos muita teoria neste post. Acredito que isso seja suficiente para entender os conceitos básicos do sistema de módulos Java 9. Vamos começar o desenvolvimento de módulos básicos no meu próximo post. Abordarei alguns conceitos teóricos adicionais ou terminologia do Sistema de Módulos Java 9 conforme necessário. Isso resume a introdução ao tópico “Sistema de Módulos Java 9”. Vamos discutir mais conceitos do Sistema de Módulos Java SE 9 nos meus próximos posts. Por favor, deixe um comentário se gostou do meu post ou se tiver algum problema/sugestão/erro tipográfico. Agradeço por ler meus tutoriais. Feliz aprendizado do Java SE 9! Referência: Projeto Jigsaw
Source:
https://www.digitalocean.com/community/tutorials/java-9-modules