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.