in primis grazie per l'attenzione.

La storia della libreria eseguibile la so ma preferieri distribuire l'exe. So anche che ci sono dei tool che convertono in .exe ma in questo modo il programma girerà sempre sulla Java Virtual Machine? penso di no essendo appunto .exe e quindi puro binario e non bytecode. prendendo per vera l'ultima affermazione come fanno alcuni programmi java ad essere .exe e girare su JVM?

Tu sei a conoscenza di qualche framework per gestire l'aggiornamento? niente che una ricerca non possa dire ma se ne conosci già te uno è meglio.

per l'ultima soluzione, creare io l'aggiornamento, potrei creare un serverino domestico, lo connetto a un servizio come no-IP (non avendo l'ip statico), da li tramite web-server comunico con la mia applicazione e creo la logica per l'aggiornamento. l'unica cosa non chiara, come faccio ad auto aggiornare il programma? cioè quando il programma si connette al server e scarica l'aggiornamento(che sarà lo stesso programma con applicati gli aggiornamenti) dovrei prima installare il programma scaricato e poi cancellare il primo programma, ma come faccio a fare ciò automaticamente? o esiste un modo per fare in modo che il programma si autosostituisca con quello scaricato?