Breve histórico: Estou trabalhando no desenvolvimento de uma interface que será implementada por mim e por outros desenvolvedores. Essa interface permitirá que os usuários "plugem" novo código funcional em um sistema para novo uso. Este novo código será chamado de um servidor / aplicativo já em execução. (TLDR: preciso desenvolver a capacidade de os plug-ins serem instalados no meu aplicativo em tempo real)
Todo o trabalho que fiz com as interfaces até agora tem sido para fins de codificação interna, para não ser exposto externamente. A única maneira de pensar para permitir que os usuários plugem novas interfaces de implementação de código seria para o usuário, de alguma forma, conectar um arquivo JAR contendo a classe de implementação e, de alguma forma, definir sua assinatura de classe para chamada. Parece algo que já foi feito antes, mas nunca fui exposto ao lado da codificação.
Existe uma estrutura que eu poderia usar para permitir esse plug-in do novo código Java durante o tempo de execução do servidor / aplicativo? Eu já usei APIs antes, mas em mais serviços da Web, expõe sentido em que você está consumindo um serviço e não "implementando" alguma interface principal.
Para referência, estou usando um back-end Java, com Spring para o aplicativo principal.