Extensão em programa Java

Olá. Neste tópico eu gostaria que alguém me desse uma sugestão de como fazer um recurso no meu programa. Desde já informo que estou utilizando JavaFX para a interface, mas acho que isso não importa muito. Eu gostaria de criar exatamente o que eu citei no título, uma maneira dos usuários criarem “extensões para o meu programa”. Eu gostaria de fazer algo bem profissional, com uma loja de extensões.

Eu tenho duas ideias, mas o motivo pelo qual eu criei este tópico é para saber qual delas escolher, ou se alguém aqui tem uma ideia melhor.

Primeira ideia: Pensei em criar um editor dentro do programa, e permitir que o usuário interagisse com o programa em Javascript, pois eu vi que o Java possuí uma engine para Javascript, que pelo que eu entendi, permitiria a execução de código Javascript dentro do Java. Essa interação seria feita basicamente por funções pré-definidas por mim. Como por exemplo uma função para criar um menu de contexto. Assim o usuário poderia implementar a sua própria lógica além de interagir com o programa.
O problema é que eu não tenho nem ideia de como fazer isso, e nem se seria possível. Por isso peço a opinião de vocês.

Segunda ideia: Criar várias APIs em linguagens diferentes para permitir que outros programa interajam com o meu programa. É uma ideia bem legal, e eu poderia fazer não só para o meu programa, mas uma API que pudesse ser implementada em qualquer projeto. Essa interação seria feita por meio de arquivos. Teria um arquivo chamado custom_context_menus.xml por exemplo, e aí a API iria lá, adicionaria um menu de contexto e meu programa interpretaria essa informação.

Bem, é basicamente isso que eu tenho em mente, E dependendo do caso pode demorar inclusive mais do que o próprio projeto para ficar pronta. Mas eu realmente gostaria de ter interação dos usuários assim. E provavelmente pretendo fazer isso em mais projetos.

Alguém?