Comment puis-je écrire une application Java qui peut se mettre à jour lors de l'exécution?

Je voudrais implémenter une application java (application serveur) qui peut télécharger une nouvelle version (fichier .jar) à partir d'une URL donnée, puis se mettre à jour au moment de l'exécution. Quelle est la meilleure façon de procéder et est-ce possible? Je suppose que l'application peut...