Eclipse Migration Toolkit for Java (EMT4J) simplifica a atualização de aplicativos Java
A Adoptium apresentou o Eclipse Migration Toolkit for Java (EMT4J), um projeto Eclipse de software livre capaz de analisar e atualizar aplicativos do Java 8 para o Java 11 e do Java 11 para o Java 17. O EMT4J suportará a atualização para futuras versões LTS.
As organizações aconselham manter o Java runtime atualizado para obter segurança e melhorias funcionais. Enquanto isso, as versões Java Long Term Support (LTS) serão lançadas a cada dois anos e projetos como o Spring Framework 6 agora requerem o Java 17. Infelizmente, a adoção de novas versões Java é relativamente lenta. Por exemplo, em 2022, quatro anos após seu lançamento, o Java 11 foi usado por menos de 49% dos aplicativos Java.
Atualizar um aplicativo para uma nova versão do Java significa que os desenvolvedores precisam resolver todos os problemas introduzidos pelas alterações e remoções dentro do Java. Isso inclui funcionalidades como a remoção dos pacotes Nashorn, J2EE e Java, uma alteração nas APIs e acesso aos componentes internos do Java que se tornaram mais restritos.
O EMT4J oferece um plugin Maven (ainda não disponível na central Maven), agente Java e solução de linha de comando para analisar incompatibilidades de projetos com novas versões Java e a saída é gravada nos formatos TXT, JSON ou HTML.
Para demonstrar o EMT4J, considere o seguinte aplicativo de exemplo que faz uma chamada para o método Thread.stop() que foi removido no Java 11:
Depois de clonar o repositório Git e configurar as cadeias de ferramentas Maven para JDK 8 e JDK 11, o projeto pode ser construído com:
Isso resulta em um arquivo .zip no diretório emt4j-assembly/target que pode ser extraído. Dentro do diretório extraído, a análise pode ser iniciada. Por exemplo, na linha de comando:
Isso analisa os arquivos de classe no diretório especificado e exibe possíveis problemas ao atualizar do Java 8 para o Java 17 no arquivo java8to17.html. Alternativamente, os scripts .bat ou .sh no diretório bin do arquivo extraído podem ser usados para iniciar a análise da linha de comando. O arquivo README descreve todas as opções disponíveis para analisar classes e arquivos JAR.
O arquivo HTML resultante exibe a descrição, resolução e localização do problema:
Como alternativa, o agente EMT4J pode ser usado ao iniciar um aplicativo Java ou o plugin Maven ao criar o projeto.
O projeto contém conjuntos de regras para atualização de Java 8 para 11 e de Java 11 para 17. Por exemplo, a regra de API interna do JDK é usada para verificar se um aplicativo usa os componentes internos do JDK:
Os modos de suporte (modes) indicam se a regra pode ser usada com o modo de agente(agent) e/ou por meio da análise estática, modo de classe(class), com a linha de comando ou plugin Maven. Os pacotes de recursos de tradução são vinculados por meio do resultado do código, neste caso, JDK_INTERNAL, que mapeia para os arquivos de tradução JDK_INTERNAL.properties e JDK_INTERNAL_zh.properties dentro do diretório emt4j-common/src/main/resources/default/i18n.
O EMT4J verifica o aplicativo em busca de pacotes e classes como sun.nio e sun.reflect definidos no arquivo de pacote de classe jdk_internals.cfg no diretório emt4j-common/src/main/resources/default/rule/8to11/data/
A classe de referência do tipo de regra real está localizada dentro do diretório emt4j-common/src/main/java/org/eclipse/emt4j/common/rule/impl, pois a regra interna do JDK possui modes, agent e class.
As regras existentes podem oferecer inspiração para adicionar regras personalizadas seguindo as instruções no arquivo README.
Fontes (Em Inglês):
https://www.infoq.com/news/2022/12/eclipse-migration-toolkit-java
Comentários
Postar um comentário