Esto no es necesariamente el mejor forma, pero podría funcionar para usted.
Puede escribir una aplicación de arranque (como el lanzador de World of Warcraft, si jugó WoW). Ese bootstrap es responsable de buscar actualizaciones.
- Si hay una actualización disponible, se ofrecen al usuario, manejar la descarga, instalación, etc.
- Si la solicitud es hasta la fecha, que permitirá al usuario para iniciar la aplicación
- Opcionalmente, puede permitir al usuario iniciar la aplicación, aunque no es hasta la fecha
de esta manera usted no tiene que preocuparse de forzar la salida de su aplicación.
Si su aplicación está basada en la web, y si es importante que tengan un cliente actualizado, entonces también puede hacer comprobaciones de versión mientras se ejecuta la aplicación. Puede hacerlo a intervalos, mientras realiza una comunicación normal con el servidor (algunas o todas las llamadas) o ambas.
Para un producto en el que trabajé recientemente, hicimos comprobaciones de versión tras el lanzamiento (sin una aplicación de corrección de arranque, pero antes de que apareciera la ventana principal) y durante las llamadas al servidor. Cuando el cliente estaba desactualizado, confiamos en que el usuario salga manualmente, pero prohibimos cualquier acción contra el servidor.
Tenga en cuenta que no sé si Java puede invocar el código de la interfaz de usuario antes de abrir la ventana principal. Estábamos usando C#/WPF.
¿Has mirado Java Web Start? Sin embargo, no se actualiza en el tiempo de ejecución, creo, (se requiere reiniciar), para eso es probable que tengas que mirar OSGi. – Thilo
@Thilo: creo que sería fácil descargar un archivo de una url determinada y luego iniciarlo con un comando de Linux desde el archivo jar en ejecución. – Jonas
El diseño de la API de Java WebStart hace que sea imposible actualizar mientras se ejecuta. Desafortunadamente. –