Módulos Java 9

Java 9 módulos são uma das maiores mudanças na estrutura do Java. Aqui vou fornecer uma breve introdução de alto nível sobre o “Sistema de Módulos do Java 9”.

Módulos do Java 9

Vamos abordar os seguintes tópicos sobre o sistema de módulos do Java 9.

  1. Introdução
  2. Java SE 9: Projeto Jigsaw
  3. Problemas do Sistema Java Atual?
  4. Vantagens do Sistema de Módulos do Java SE 9
  5. Comparação entre JDK 8 e JDK 9
  6. O que é um Módulo Java 9?
  7. Mãe do Sistema de Módulos do Java 9
  8. 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 novidades (além de algumas melhorias e novos recursos).

  1. Expressões Lambda
  2. API de Fluxo
  3. API de Data

Da mesma forma, o Java SE 9 chega com três grandes recursos (além de algumas melhorias e novos recursos):

  1. Sistema de Módulos do Java (Projeto Jigsaw)
  2. Java REPL
  3. Projeto de Moagem de Moeda

Neste post, vamos discutir os fundamentos 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 muito 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, foi adiado para o Java SE 8 e depois adiado novamente. Agora está prestes a ser lançado com o Java SE 9 em setembro de 2017. Principais Objetivos do Projeto Jigsaw:

  • O JDK Modular
    Como sabemos, o sistema atual do JDK é muito grande. Portanto, eles decidiram dividir o JDK em pequenos módulos para obter uma série de 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, certo? 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 entender essas coisas claramente, NÃO se preocupe. Vamos discutir esses conceitos em profundidade com alguns exemplos úteis nas próximas seções e também em minhas próximas postagens.

Problemas do Sistema Java Atual?

Nesta seção, discutiremos “Por que precisamos do Sistema de Módulos Java SE 9”, o que 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 reduzi-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.
  • Os 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 suportar um melhor desempenho.
  • Não há Encapsulamento Forte no Sistema Java atual porque o modificador de acesso “public” é muito aberto. Qualquer um pode acessá-lo.
  • Como o JDK, o JRE é muito grande, é difícil testar e manter aplicativos.
  • Como o público é muito aberto, eles não podem evitar o acesso a algumas APIs Internas Não Críticas como sun.*, *.internal.*, etc.
  • Como o usuário também pode acessar APIs Internas, a Segurança também é um grande problema.
  • O aplicativo é muito grande.
  • É um pouco difícil suportar um Menor Acoplamento entre componentes.

Para resolver todos esses problemas, a Oracle Corp vai lançar o sistema de módulos Java na versão Java SE 9.

Vantagens do Sistema de Módulos Java SE 9

O Sistema de Módulos do Java SE 9 vai fornecer os seguintes benefícios

  • Como o Java SE 9 vai dividir o JDK, JRE, JARs etc., em módulos menores, podemos usar os módulos que quisermos. Portanto, é muito fácil dimensionar a aplicação Java para dispositivos pequenos.
  • Facilidade de Teste e Manutenção.
  • Suporta melhor Desempenho.
  • Como público não é apenas público, suporta 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 de forma muito segura, podemos obter melhor Segurança.
  • A aplicação é pequena demais porque podemos usar apenas os módulos que desejamos.
  • É fácil apoiar um Menor Acoplamento entre os componentes.
  • É fácil apoiar o Princípio da Responsabilidade Única (SRP).

Vamos explorar todos esses conceitos um por um em breve.

Comparar JDK 8 e JDK 9

Sabemos o que um software JDK contém. Após instalar o software JDK 8, podemos ver alguns diretórios como bin, jre, lib etc na pasta Java Home. No entanto, a Oracle Corp alterou esta estrutura de pastas de forma um pouco diferente, conforme mostrado abaixo. Estrutura da Pasta JDK 8: Estrutura da Pasta JDK 9: Aqui o JDK 9 NÃO contém JRE. No JDK 9, o JRE está separado em uma pasta de distribuição separada. O software JDK 9 contém uma nova pasta “jmods”. Ele contém um conjunto de Módulos Java 9, conforme mostrado abaixo. No JDK 9, Não rt.jar e Não tools.jar NOTA:- A partir de hoje, “jmods” contém 95 módulos. Pode aumentar na versão final. A pasta “jmods” está disponível em ${JAVA_HOME}/jmods. Estes são conhecidos como Módulos JDK.

O que é 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

A partir de agora, o Sistema de Módulos do 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 do 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 módulo. É por isso que o Módulo “java.base” também é conhecido como A Mãe dos Módulos do Java 9. É o módulo padrão para todos os Módulos do JDK e Módulos Definidos pelo Usuário.

Comparar Aplicações Java 8 e Java 9

Já desenvolvemos muitas aplicações Java usando 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 conforme mostrado abaixo: Em aplicações Java 8 ou anteriores, 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 com isso. Apenas introduziu 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 aí. O resto da aplicação é igual às versões anteriores das aplicações, como 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 tem 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 de Módulo
  • Conjunto de Pacotes
  • Conjunto de Tipos e Recursos

Aqui os Recursos podem ser module-info.java (Descriptor do Módulo) ou quaisquer outras propriedades ou XML. Discutimos teoria demais neste post. Acho que é o suficiente para entender o básico do sistema de Módulos do Java 9. Vamos começar o desenvolvimento de alguns Módulos básicos no meu próximo post. Vou discutir alguns conceitos teóricos adicionais ou terminologia do Sistema de Módulos do Java 9 conforme necessário. Isso é tudo sobre o tópico “Introdução ao Sistema de Módulos do Java 9”. Vamos discutir alguns outros conceitos do Sistema de Módulos do Java SE 9 nos meus próximos posts. Por favor, deixe um comentário se você gostou do meu post ou tiver algum problema/sugestão/erro tipográfico. Obrigado por ler meus tutoriais. Feliz aprendizado do Java SE 9! Referência: Projeto Jigsaw

Source:
https://www.digitalocean.com/community/tutorials/java-9-modules