Bagaimana cara menulis aplikasi Java yang dapat memperbarui dirinya sendiri saat runtime?

Saya ingin mengimplementasikan aplikasi java (aplikasi server) yang dapat mendownload versi baru (file .jar) dari url tertentu, dan kemudian mengupdate dirinya sendiri saat runtime. Apa cara terbaik untuk melakukan ini dan apakah mungkin? Saya kira aplikasi tersebut dapat mengunduh file .jar...