¿Cómo puedo escribir una aplicación Java que pueda actualizarse en tiempo de ejecución?

Me gustaría implementar una aplicación java (aplicación de servidor) que pueda descargar una nueva versión (archivo .jar) de una URL determinada y luego actualizarse en tiempo de ejecución. ¿Cuál es la mejor manera de hacer esto? ¿Es posible? Supongo que la aplicación puede descargar un nuevo...