Como posso escrever um aplicativo Java que pode se atualizar em tempo de execução?

Gostaria de implementar um aplicativo java (aplicativo de servidor) que pode baixar uma nova versão (arquivo .jar) de um determinado url e, em seguida, atualizar-se em tempo de execução. Qual é a melhor maneira de fazer isso e é possível? Acho que o aplicativo pode baixar um novo arquivo .jar...