Executar a ferramenta Java Class Dependency Analyzer (JDeps)

Iniciando com o Java 8, o JDK envia um utilitário de linha de comandos chamado jdeps (analisador de dependência de classe Java). O comando jdeps analisa as dependências de classe e fornece parâmetros extras para sinalizar os pacotes JDK internos. Enquanto o WebSphere Migration Tool sinaliza a maioria dos problemas de migração localizados em um aplicativo, a ferramenta jdeps pode fornecer detecção extra de pacotes JDK internos que não estão mais disponíveis após a migração para uma nova versão Java.

É recomendável executar o comando jdeps como uma etapa final depois de resolver os problemas sinalizados pelas ferramentas de migração do WebSphere binário ou de origem. Execute o comando jdeps com relação aos artefatos Java do aplicativo. Para garantir resultados precisos, use o comando jdeps disponível em sua instalação JDK planejada de destino, como JDK 11, com o parâmetro -jdkinternals. Por exemplo, depois de configurar seu ambiente para usar o Java 11, execute o comando a seguir:

jdeps -jdkinternals C:\demo\Apps\myapplication.jar

A partir do Java 9, iniciou-se um esforço para limitar o acesso à maioria dos componentes internos do JDK. No entanto, para auxiliar na migração, esse encapsulamento forte foi desativado por padrão para APIs que existiam no Java 8. A partir do Java 16, o valor padrão da opção do ativador -- ilegal-access é configurado como deny em vez de permit. Embora não recomendado, essa limitação poderia ser ignorada no Java 16 especificando -- illegal-access=permit. -- ilegal-access também poderia ser configurado como warn ou debug para ter o mesmo efeito que permit, mas para emitir uma mensagem de aviso ao usar warn e o rastreio de pilha para operações ilegais de acesso reflexivo ao usar debug.

Ao migrar para o Java 17 ou mais recente, a opção do ativador --ilegal-access está obsoleta. A maioria dos componentes internos do JDK agora está fortemente encapsulada. Apesar de não ser recomendada, essa limitação pode ser ignorada usando a opção do ativador --add-open ou o atributo de manifest JAR Add-Opens para abrir pacotes específicos que são requeridos por suas bibliotecas de aplicativos ou de terceiro.

Certas APIs internas críticas não encapsuladas por esta mudança incluem o seguinte:

O utilitário gera saída que identifica as referências às classes internas do JDK e fornece APIs de substituição sugeridas onde possível. Nota: o comando jdeps aceita apenas arquivos .class, um diretório ou um arquivo JAR.

Para obter mais informações sobre o comando jdeps, consulte a página de referência do jdeps.