Как я могу написать приложение Java, которое может обновляться во время выполнения?

Я хотел бы реализовать приложение Java (серверное приложение), которое может загружать новую версию (файл .jar) с заданного URL-адреса, а затем обновлять себя во время выполнения. Как лучше всего это сделать и возможно ли это? Я предполагаю, что приложение может загрузить новый файл .jar и...