これは必ずしも最良の方法ではありませんが、あなたにとってはうまくいくかもしれません。
ブートストラップ アプリケーションを作成できます (WoW をプレイしたことがある場合は、World of Warcraft ランチャーも同様です)。そのブートストラップは、更新のチェックを担当します。
- アップデートが利用可能な場合は、ユーザーに提供し、ダウンロード、インストールなどを処理します。
- アプリケーションが最新の場合、ユーザーはアプリケーションを起動できます
- 必要に応じて、アプリケーションが最新でない場合でも、ユーザーがアプリケーションを起動できるようにすることができます
これにより、アプリケーションの強制終了について心配する必要がなくなります。
アプリケーションが Web ベースで、クライアントが最新であることが重要な場合は、アプリケーションの実行中にバージョン チェックを行うこともできます。サーバーとの通常の通信 (一部またはすべての呼び出し)、またはその両方を実行しながら、間隔を置いて実行できます。
私が最近取り組んだ製品では、起動時 (ブート ストラップ アプリは使用せず、メイン ウィンドウが表示される前) とサーバーへの呼び出し中にバージョン チェックを行いました。クライアントが古くなっているときは、ユーザーが手動で終了するように頼っていましたが、サーバーに対するアクションは禁止されていました。
メイン ウィンドウを表示する前に、Java が UI コードを呼び出すことができるかどうかはわかりません。C#/WPF を使用していました。