Esta no es necesariamente la mejor manera, pero podría funcionar para usted.
Puedes escribir una aplicación de arranque (como el lanzador de World of Warcraft, si has jugado WoW). Ese bootstrap es responsable de buscar actualizaciones.
- Si hay una actualización disponible, la ofrecerá al usuario, manejará la descarga, instalación, etc.
- Si la aplicación está actualizada, permitirá al usuario iniciar la aplicación.
- Opcionalmente, puede permitir que el usuario inicie la aplicación, incluso si no está actualizada.
De esta manera, no tiene que preocuparse por 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, también puede verificar la 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, realizamos verificaciones de versión al momento del lanzamiento (sin una aplicació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 saliera 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 que aparezca la ventana principal. Estábamos usando C # / WPF.