Image Image Image Image Image
Scroll to Top

Topo

modulos de sistemas

09

jan
2012

Sem Comentários

Em Blog
Java

Por Allison

Java 8 e módulos: o estado atual do projeto Jigsaw

Em 09, jan 2012 | Sem Comentários | Em Blog, Java | Por Allison

Mark Reinhold, arquiteto-chefe da plataforma Java na Oracle, publicou uma nota detalhando a situação atual do projeto Jigsaw e apontando novidades nessa área para o Java 8. O projeto Jigsaw tem como objetivo permitir a criação de módulos de sistemas (coleções de classes e interfaces) dentro da Plataforma Java.

Para obter a modularidade foram seguidos alguns princípios:

  • A linguagem Java em si precisa ter suporte à criação de módulos;
  • Os módulos devem controlar quais classes podem ser acessadas externamente a eles;
  • Deve haver uma identificação de versão, caso ocorra a necessidade de os módulos serem adicionados ou removidos durante a execução do programa.

A seguir, são mostrados exemplos de como será o uso de módulos.

O exemplo abaixo cria um módulo, informando a sua versão, e define qual o pacote de classes públicas será compartilhado com outros módulos:

module br.infoq.foo @ 1.0 {
/* Permite que os outros módulos tenham acesso às classes públicas deste pacote. */
exports br.infoq;
}

O exemplo a seguir cria um módulo que possui uma dependência com outro módulo (podendo ser especificada a versão):

module zoo {
requires br.infoq.foo @ 1.0;
}

Note que é informada uma dependência do módulo br.infoq.foo na versão 1.0. Pode-se também especificar uma condição, por exemplo @ >= 2.0, que nesse caso informa a necessidade de uma versão maior ou igual à versão 2.0 do módulo.

O exemplo a seguir cria um módulo que possui uma dependência e aproveita para compartilhar essa dependência com outros módulos. Também demonstra como definir quais módulos podem acessar o módulo em questão:

module bar {
/* Permite que os módulos dependentes de bar, também acessem o módulo zoo. */
requires public zoo;
/* Somente o módulo baz pode acessar este módulo. */
permits baz;
}

Mark Reinhold também descreveu tarefas pendentes, além de revisões que serão realizadas no projeto, e futuras implementações que ocorrerão na parte de compilação, empacotamento, bibliotecas, repositórios, API de modularização de sistemas e modularização do JDK. No site do Jigsaw há mais informações sobre o histórico do projeto, além de sua documentação.

Fonte: Rafael Sakurai/InfoQ

Tags | , , ,