Yo he hecho hace poco un programita de gestión para un cliente y te explico como controlo lo de las actualizaciones:
En la base de datos del programa guardo un timestamp (da igual como si queires guardar la fecha exacta) en la que el programa comprueba la actualizacion y cada vez que arranca mira esa fecha y si han pasado X dias te pregunta si quieres comprobar actualizaciones, responda lo que responda actualizo el campo con la fecha del dia.
Para comprobar si hay version nueva guardo en el hosting donde alojan la web un fichero txt con la version del ejecutable de la ultima version. Abro el fichero y comparo la version con la del propio ejecutable que tenga instalado, si ve que la version difiere abro un segundo fichero donde contiene el nombre del instalador de la nueva versión.
Entonces el propio programa con una ruta pre-establecida y el nombre del ejecutable de la nueva versión lo descarga, una vez acaba se cierra el programa y lanza el instalador.
Así cada vez que hago algún cambio en la aplicación subo los 3 ficheros al hosting (archivo de version, archivo con nombre del instalador y el instalador) y ya está.
No se si es una forma muy ortodoxa, pero no domino demasiado de programar (bueno, soy mas bien un piltrafilla que conozco lo básico para lo que he necesitado) y me funciona que es lo importante
PD: El mio no es en java, es en VB.NET pero vamos que la teoria la tienes ahi.
EDITO: Si el programa no tiene base de datos el dato del timestamp puedes guardalo en algún fichero, y si en vez de un instalador solo subes el programa pues en vez de ejecutar el instalador tendrás que hacer un segundo ejecutable que se encargue de borrar el fichero del ejecutable viejo, renombrar el descargado (que tendrá un nombre temporal) y de volver a lanzar el ejecutable (vamos, 3 lineas de codigo ese segundo ejecutable).
EDITO2: Para descargar el instalador lo hago en segundo plano a través de una conexión ftp (el hacerlo mediante la URL por navegador lo vi demasiado cutre hasta para mi).