Os desenvolvedores Java reagiram intensamente ao anúncio do arquiteto-chefe da plataforma Java na Oracle Mark Reinhold, de que o projeto Jigsaw, o futuro framework de modularidade para a tecnologia Java, seria adiado novamente para o Java 9, como foi reportado no InfoQ.com e no InfoQ Brasil. O Jigsaw estava originalmente planejado para o Java 7 em 2011; depois foi adiado para o Java 8 e passa a ser adiado novamente para 2015.
O Jigsaw pretende atender dois conjuntos distintos de requisitos: fornecer um sistema de módulos em Java para novas aplicações e separar a plataforma Java em módulos que podem ser excluídos se não forem necessários.
As reações ao anúncio de Mark Reinhold podem ser divididas em três grupos:
- Bom desenvolvimento ágil: entregue cedo e frequentemente; se o Jigsaw está atrasado, adie-o para a próxima versão e entregue o Java 8 no prazo;
- O Java 8 sem o Jigsaw não vale nem o disco em que está armazenado; espere pelo Jigsaw;
- O Jigsaw já foi adiado duas vezes e ninguém sabe se será mesmo entregue. Desista, Oracle, e apoie uma tecnologia existente.
Os apoiadores do framework OSGi acreditam que esse padrão já está bem estabelecido para uso em aplicações Java, então há certa frustração quanto à direção tomada pela Oracle.
O ex-diretor da OSGi Alliance Peter Kriens disse ao InfoQ que os projetos devem parar de esperar e adotar o OSGi:
Se a Sun/Oracle não tivesse gasto os últimos sete anos com a síndrome "Não inventado aqui", nossa indústria teria sido mais produtiva. Está claro que a adoção do OSGi sofreu com medo, incerteza e dúvida com relação ao Jigsaw. Se seguirem esse novo "planejamento", teremos modularidade (limitada) na plataforma Java por volta de 2015, uma década inteira depois da JSR 277 e surpreendentes 17 anos depois da OSGi Alliance ter sido fundada. Para quem estava esperando pelo Jigsaw, chegou a hora de adotar o OSGi e obter os benefícios da modularidade. Além de não existir uma alternativa, melhorou muito o suporte de ferramentas como o projeto bndtools.
O ex-líder do expert group do OSGi Enterprise, Eric Newcomer, falou ao InfoQ.com sobre como as coisas poderiam ter sido:
Há quatro anos, convidamos o pessoal do Jigsaw para juntarmos forças. Não aceitaram, e receio que todo mundo esteja pagando agora o preço daquela decisão infeliz. A modularidade é um problema complexo por definição (como o pessoal do Jigsaw já reconheceu). Não acredito que o OSGi tenha sido seriamente avaliado como solução geral.
O especialista em OSGi na Paremus, Neil Bartlett, vê o adiamento do Jigsaw como uma oportunidade perdida:
Parece que não teremos os benefícios de uma plataforma modular até pelo menos 2015. Isso é triste para os desenvolvedores que estão usando o OSGi, assim como para todos que estão desenvolvendo para a plataforma Java. Afinal, quem não gostaria de ter uma plataforma somente com as funcionalidades necessárias?
Além diso, a maneira que o próprio OSGi interage com a plataforma atual deixa muito a desejar, porque um bundle não consegue requisitar somente os módulos necessários. Com uma plataforma modular, poderíamos verificar em tempo de compilação quais APIs são usadas pelo bundle, e até mesmo usar o serviço Resolver da versão R5 do OSGi para determinar quais módulos devem ser instalados juntamente com aquele bundle. Ainda tenho esperanças de que chegaremos a esse ponto no futuro.
O diretor executivo da Fundação Eclipse, Mike Milinkovitch disse ao InfoQ.com:
Está claro que a plataforma Java se beneficiaria muito, tanto com um sistema de módulos quanto com a modularização da própria plataforma. É triste que a entrega desse trabalho importante tenha sido empurrada até 2015. Estou particularmente preocupado com o impacto a decisão pode ter no futuro da plataforma Java em ambientes embutidos e móveis. Um atraso adicional de dois anos nesses segmentos, que estão crescendo rapidamente, coloca em questão a relevância de toda a plataforma Java. Neste momento, qualquer plataforma que não oferece muitas funcionalidades para desenvolvedores de sistemas embutidos ou móveis corre o risco de se tornar irrelevante.
Ao mesmo tempo, esse atraso permite o avanço da "outra" tecnologia de modularidade Java. O OSGi precisa melhorar para sobreviver no longo prazo, e esse adiamento de dois anos é uma oportunidade para os seus apoiadores. A comunidade OSGi precisa investir em ferramentas e em usabilidade para atrair mais desenvolvedores Java.
O IDE Eclipse é impactado significativamente por tudo isso, já que é usado por entre 65% e 70% de todos os desenvolvedores Java. Além disso, a nossa comunidade está comprometida com o OSGi, já que o padrão suporta o modelo de plug-ins do Eclipse. A continuidade dessa tecnologia é claramente importante para o futuro da comunidade Eclipse.
Por outro lado, o vice-presidente de desenvolvimento da Oracle, Cameron Purdy, defende o argumento da agilidade:
Embora seja desapontador que a entrega do Jigsaw tenha sido adiada, é importante que o processo seja feito corretamente. Se isso significa que a inclusão da tecnologia tem que ser atrasada, então que isso seja feito. Seria muito pior colocar algo incompleto na plataforma Java. Fazer da maneira certa sempre vai demorar mais que o esperado.
Um tema comum entre as reações é a dúvida de por quanto tempo ainda se vai esperar. O consultor Markus Karg falou sobre isso no seu comentário ao post de Reinhold:
É rídiculo que o Jigsaw seja adiado para o Java 8 depois de ter sido adiado para o Java 7. O que vem depois disso? Adiá-lo para o 10 depois do 9, 11 depois do 10? Simplesmente desista e use o Maven. Ele nos serve bem.
O líder do desenvolvimento do Groovy na SpringSource/VMware Guillaume Laforge disse:
Não fomos muito longe com a modularidade no Groovy 2 porque não queríamos duplicar o que estava planejado no Java 8 - que agora não estará nas mãos dos desenvolvedores por mais dois anos e em produção por mais três. Isso significa que o Jigsaw, se sair algum dia, estará sendo feito há mais de cinco anos. Parece muito, mesmo para uma tarefa grande como essa.
O diretor de pesquisa do Gartner Kirk Knoernschild tuitou um conselho prático para a Oracle:
Por que não entregar o sistema de módulos no Java 8 e modularizar a própria plataforma no Java 9? Por que fazer as duas coisas na mesma versão?
Até a Oracle entregar o projeto Jigsaw, portanto, os times de desenvolvimento terão que escolher entre esperar ou adotar alternativas existentes.