Resumo: Este artigo aborda o problema encontrado no Java 11 em relação à adição de JARs de dependência em tempo de execução. O Java 11 trouxe várias melhorias e recursos, mas também introduziu desafios relacionados ao gerenciamento de dependências em tempo de execução. Exploraremos os motivos por trás desse problema e discutiremos possíveis soluções.
Introdução
O Java 11 é uma das versões mais recentes da linguagem de programação Java, lançada com várias melhorias e recursos. No entanto, um problema tem preocupado os desenvolvedores desde a adoção dessa versão: a adição de JARs de dependência em tempo de execução.
O problema
Antes do Java 11, era relativamente fácil adicionar JARs de dependência durante a execução de um programa Java. Os desenvolvedores podiam simplesmente adicionar os JARs necessários ao classpath do projeto e o Java iria carregá-los automaticamente. Essa abordagem era amplamente utilizada em diferentes cenários, como plugins de tempo de execução e carregamento dinâmico de módulos.
No entanto, o Java 11 introduziu um novo sistema de módulos chamado Java Platform Module System (JPMS). O JPMS trouxe benefícios significativos, como encapsulamento de código e resolução de dependências estática. No entanto, também impôs restrições ao carregamento dinâmico de JARs em tempo de execução.