segunda-feira, 8 de maio de 2017

Red Hat e IBM se opõem ao projeto de modularização do Java 9

A modularização — divisão de software em partes distintas — será o recurso-chave do Java SE 9 (Standard Edition), que está programado para o fim de julho. Mas a IBM e Red Hat se dizem preocupadas com a possibilidade de que o plano do módulo base possa levar a incompatibilidades com aplicações e sistemas corporativos desenvolvidos em Java.

Em um boletim recente, Scott Stark, vice-presidente de arquitetura para o grupo JBoss da Red Hat, levantou preocupações que a empresa e outros membros do comitê executivo do Java têm em relação ao desenvolvimento do JSR 376 (Java Specification Request) referente ao Java Platform Module System, chamado de Projeto Jigsaw.

"O Jigsaw é o projeto de desenvolvimento de um novo sistema de módulos que tem trabalhado com sucesso para modularização do Java em si, mas ainda não testado amplamente em implantações de produção de aplicações reais em cima de Java Virtual Machine (JVM) [programa que carrega e executa os aplicativos Java]", disse Stark. "Há casos de implantação de aplicativos que não são possíveis sob Jigsaw ou exigiriam uma significativa rearquitetura."

A expectativa é que o JSR 376 forneça uma base para o Java Enterprise Edition 9 até o fim de 2018. Mas Stark tem suas dúvidas. "As limitações do Jigsaw quase certamente impedem a possibilidade de termos o Java EE 9 baseado no Java Platform Module System, como para fazê-lo exigiria que os fornecedores de Java EE eliminassem completamente a compatibilidade, interoperabilidade e paridade de recursos com versões anteriores da especificação Java EE."

O VP do grupo JBoss disse ainda que em alguns casos, a implementação do Jigsaw contradiz anos de práticas recomendadas para implantação de aplicativos modulares.

Os principais pontos do Jigsaw são baseados em uma abordagem reducionista de transmitir a compatibilidade de concepção, disse Stark. "Isto funciona com a modularização do Java em si, mas torna-se restritivo para os casos de uso mais amplos de implantações de aplicativos."

O Java Modular, que será entregue com o Java Development Kit 9 (JDK), em 27 de julho, promete ajudar a melhorar a escalada do Java em sistemas menores. O sistema de módulos em foi baseado no JSR 376. "Aplicando as filosofias que façam sentido para modularização e encapsulamento da plataforma Java, a especificação realmente reduz a capacidade dos desenvolvedores de aplicativos se adaptarem facilmente a implementação específica de um sistema de módulos", disse Stark.

Stark argumenta que a implementação do Jigsaw exigirá milhões de autores e usuários do ecossistema Java para superar os grandes desafios para seus aplicativos e bibliotecas, especialmente se eles lidam com serviços, carregamento de classe ou reflexão.  O plano resultará em uma arquitetura nova, não testada e comprovada, para a implantação de aplicativos de forma modular. Poderá haver dois mundos Java de desenvolvimento de software: uma para Jigsaw e outro para todo o restante, cobrindo o Java SE Classloaders, OSGi e o Java EE e muito mais, diz ele.

Padrões introduzidos dentro Jigsaw podem ser difíceis de corrigir, mesmo em uma versão posterior, por criar problemas de compatibilidade com versões anteriores e mais recentes, disse Stark. "O resultado será um ecossistema Java cada vez mais enfraquecido no espaço de servidor com o aumento da utilização de linguagens como Go."

Em sua crítica de aproximadamente 9,5 mil palavras ao Jigsaw, Stark também levanta questões envolvendo o serviço de carregamento, incluindo personalização e extensibilidade. O Jigsaw altera substancialmente o comportamento do ServiceLoader API e pode afetar a compatibilidade, disse ele. Stark também mencionou a estabilidade como um problema, já que o Jigsaw não especifica a ordem em que os serviços são retornados dentro de uma camada.

Tim Ellison, da IBM, em um post em uma lista de mailing do openjdk, feito na semana passada, disse que as preocupações de Stark demonstram que "ainda há muito trabalho para que a comunidade chegue a um acordo sobre o padrão proposto". A IBM vai votar não no JSR 376, disse ele.

Devido à sua complexidade, modularidade já foi adiada no Java SE 8, lançado em março de 2014, a Java SE 9, adiado devido a essa mesma complexidade.