アプリケーションによっては凝った画面操作を実現するためにHTMLベースではなくJavaベースで作成されたものがあります。
JNLPとかJava Web Start等と呼ばれているものです(以下、JNLPで統一)。このJNLPですがJavaの古いバージョンでは搭載されていたのですが最新バージョンでは廃止、Javaのライセンス変更やライフサイクル等で古い技術扱いとなっている状況の様ですが、既に稼働しているアプライアンス機器やWebサーバ等のインタフェースとして使わざるを得ない現状があります。
しかし、上記のようにJavaのライセンス変更やライフサイクル等の理由でJNLPが使えるOracle Javaバージョンが使えない状況にあります。
そのため代替として別の方法が必要になります。調べてみるとJNLPのフリー実装としてIcedTeaというものがあります。
このIcedTeaをベースに作ったOpenWebStartというものを今回使ってみたのでTips含めてWindows版をベースに紹介してみたいと思います。
GitHub – AdoptOpenJDK/IcedTea-Web: The new home for IcedTea-Web
The new home for IcedTea-Web. Contribute to AdoptOpenJDK/IcedTea-Web development by creating an account on GitHub.
GitHub – karakun/OpenWebStart: Run Web Start based applications after the release of Java 11
Run Web Start based applications after the release of Java 11 – GitHub – karakun/OpenWebStart: Run Web Start based applications after the release of Java 11
インストール
バイナリがGithubにありますのでそちらをダウンロードしてインストールします。

拡張子との関連付けも行えます。
ファイルをダブルクリックするだけで実行できるようになるので関連付けしておくと便利です。

Javaランタイム(JVM)のダウンロードもインストール時に行われます。
既に他のランタイムがある場合、OpenWebStartの設定の中でどのランタイムを使用するか管理することができます。

無事インストールが終わるとWindowsの場合、下記のようにメニューに新規追加されていると思います。

設定画面を立ち上げてみました。
使っていくとわかるのですがGUIで設定できる項目とできない項目があります(2022/04現在)。
GUIから設定できない場合は、テキストエディタ等で設定ファイルの編集が必要になります。

設定
通常だと設定変更しないと使えないケースが多いと思いますので、ポイントとなりそうな部分を書いておきます。
OpenWebStartの設定全般についてはこちらのドキュメントが参考になります。
Server Whitelist
セキュリティ項目として信頼のおけるサーバを指定しないと実行時にエラーが出て使えないケースがあると思います。Server Whitelistにアクセス先を登録しておくとこの問題を解決できます。
こちらはGUIから設定できないので設定ファイルの編集を行います。
Pathは${USER_HOME}.config\icedtea-web\deployment.propertiesになります。設定ファイルのPathのヒントはGUIのCertificatesの画面で確認できます。

設定ファイルを開いてアクセス先を追加します。下記のようにワイルドカードも使用できます。詳細はこちらを参照ください。
deployment.security.whitelist=https://*:8443, https://*:8080
追加後、GUIでServer Whitelistを開いて設定が反映されているか確認しておくと良いでしょう。

署名アルゴリズム
古いアプリの場合、署名アルゴリズムを変更しないと下記のようにエラーが出て実行できない場合があります。こちらも設定ファイルの編集が必要です。
Application Error: Cannot grant permissions to unsigned jars. Application requested security permissions, but jars are not signed.
Pathは${USER_HOME}.cache\icedtea-web\jvm-cache\adoptium_1.8.0.xxx_x64\jre\lib\security\java.securityになります。
設定ファイルのPathのヒントはGUIのCertificatesの画面で確認できます。
例えば、下記のように変更します。
#jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, \ # DSA keySize < 1024, include jdk.disabled.namedCurves jdk.jar.disabledAlgorithms=MD2, RSA keySize < 1024, DSA keySize < 1024
Javaバージョンによって設定内容は変わる場合があります。また、セキュリティレベルを下げることになりますので自己責任で変更してください。詳細はこちらを参照ください。
Proxy
リモートワーク時代だとトンネリングやProxy経由でのアクセスが必要になるかもしれません。
こちらはGUIで設定変更することが可能です。実情に合わせて変更してください。


キャッシュ
動作と言うかBugに近い話かもしれませんが、JNLP実行時に複数のjarファイルをダウンロードする場合、並列で実施されます。
サイズが大きいあるいは回線が細いとダウンロードが失敗して起動できない場合があります。
一つ一つダウンロードするようにするか、何度かリトライしてすべてキャッシュできた段階であれば起動できるようになります。
どうしてもおかしな動作の場合は、キャッシュをクリアしてから再度実行してみましょう。

