Ce n'est pas nécessairement la meilleure façon, mais cela pourrait fonctionner pour vous.
Vous pouvez écrire une application de bootstrap (ala le lanceur World of Warcraft, si vous avez joué à WoW). Ce bootstrap est responsable de la vérification des mises à jour.
- Si une mise à jour est disponible, elle la proposera à l'utilisateur, s'occupera du téléchargement, de l'installation, etc.
- Si l'application est à jour, elle permettra à l'utilisateur de lancer l'application
- En option, vous pouvez autoriser l'utilisateur à lancer l'application, même si elle n'est pas à jour
De cette façon, vous n'avez pas à vous soucier de forcer la sortie de votre application.
Si votre application est basée sur le Web et s'il est important qu'elle dispose d'un client à jour, vous pouvez également effectuer des vérifications de version pendant l'exécution de l'application. Vous pouvez les faire à intervalles, tout en effectuant une communication normale avec le serveur (certains ou tous les appels), ou les deux.
Pour un produit sur lequel j'ai récemment travaillé, nous avons effectué des vérifications de version au lancement (sans application de boot strapper, mais avant l'apparition de la fenêtre principale), et lors des appels au serveur. Lorsque le client était obsolète, nous comptions sur l'utilisateur pour quitter manuellement, mais nous interdisons toute action contre le serveur.
Veuillez noter que je ne sais pas si Java peut invoquer le code de l'interface utilisateur avant d'afficher votre fenêtre principale. Nous utilisions C # / WPF.