Melhor abordagem para carregar dinamicamente módulos (classes) em Java

Atualmente, estou escrevendo um aplicativo que exige operar em diferentes tipos de dispositivos. Minha abordagem seria criar um aplicativo "modular" que possa carregar dinamicamente diferentes classes de acordo com o dispositivo em que elas precisam operar.

Para tornar o aplicativo facilmente extensível, meu objetivo é atribuir um caminho específico aos módulos adicionais (arquivos .jar ou .class) deixando o programa principal como está. Isso seria crucial ao ter clientes diferentes que exigem módulos diferentes (sem precisar compilar um aplicativo diferente para cada um deles).

Esses módulos implementariam uma interface comum, enquanto o aplicativo "principal" pode usar esses métodos definidos na interface e permitir que as implementações únicas façam o trabalho.Qual é a melhor maneira de carregá-los sob demanda? Eu estava pensando em usar o URLClassLoader, mas não sei se essa abordagem está atualizada de acordo com novos padrões e tendências de Java, pois gostaria de evitar um aplicativo mal projetado e técnicas obsoletas.Qual é a melhor abordagem alternativa para criar um aplicativo modular e facilmente extensível com o JDK 9 (que pode ser estendido apenas adicionando arquivos de módulo a uma pasta)?

questionAnswers(2)

yourAnswerToTheQuestion