2018 年 9 月 25 日に Java 11 正式版がリリースされました。このバージョンから JDK に JavaFX が同梱されなくなったため、 JavaFX アプリケーションの開発には別途 OpenJFX の導入が必要になりました。
この記事では Windows に OpenJDK と OpenJFX を導入する方法を解説します。
- 2020-04-21 追記
- 多くのディストリビューターが OpenJDK を配布するようになり、 LibericaJDK や Zulu Community といった OpenJFX を同梱している OpenJDK ディストリビューションも登場しています。JavaFX の開発にはこれらの OpenJDK を使用するのがお手軽です。
👉 JavaFX アプリケーション開発には Liberica JDK がオススメ
OpenJDKをダウンロードする
Java 11 では JavaFX だけでなく JDK (Java Development Kit)も大きく変わりました。Oracle は有償サポートを提供する商用向けの Oracle JDK とは別に、 無償利用可能な Oracle OpenJDK という JDK を提供しています。
Oracle OpenJDK offers the same features and performance as Oracle JDK under the GPL license.
OpenJDK にも有償の Oracle JDK と同じ機能とパフォーマンスが提供されています。というわけで、 今回は JDK として Oracle OpenJDK を使用します。
OpenJDK サイトから Windows 用のバイナリ (zip ファイル) をダウンロードしてください。
OpenJFXをダウンロードする
OpenJFX の Windows 用バイナリは Gluon からダウンロードできます。
JavaFX Windows SDK
と JavaFX Windows jmods
の 2 つのファイルをダウンロードしてください。
ダウンロードした OpenJDK と OpenJFX のファイルを適当なフォルダー (たとえば C:\temp
など) に保存します。
OpenJDKにOpenJFXをマージする
JDK から分離されたことで JavaFX の扱い方がいままでよりも難しくなりました。OpenJFX に PATH を通したり、 アプリケーション実行時の VM 引数として --add-modules javafx.controls
を指定したりとかなり煩雑です。
この煩雑さは JavaFX が JDK から分離されていることに起因しています。JavaFX を JDK にマージしてしまえば、 モジュール指定などを気にすることなく従来の Java と同様に JavaFX を使えるようになります。
OpenJDK に OpenJFX をマージするためのバッチファイルを作成しました。
merge-openjfx.zip ダウンロード
(133KB)
merge-openjfx.zip
をダウンロード ・ 展開して、 中にあるファイルを OpenJDK、 OpenJFX を保存した場所にコピーしてください。
このようなファイル構成になっている状態で merge-openjfx.bat
をダブルクリックして実行します。merge-openjfx.bat
を実行するとコマンドプロンプトが表示され処理が開始されます。しばらく待つと 「続行するには何かキーを押して下さい」 とメッセージが表示されます。何かキーを押すとコマンドプロンプトが閉じます。
jdk-11.0.1
フォルダーが作成されています。
この OpenJDK は OpenJFX がバンドルされた状態になってるので、 いままでと同様に JDK の一部として JavaFX を使用することができます。
AdoptOpenJDKにOpenJFXをマージすることもできます
今回は Oracle OpenJDK に OpenJFX をマージする手順を説明しましたが、 Oracle OpenJDK の代わりに AdoptOpenJDK を使って、 AdoptOpenJDK に OpenJFX をマージすることもできます。
手順は OpenJDK の場合と同じです。openjfx-*_windows-x64_bin.zip
の代わりに AdoptOpenJDK のサイトからダウンロードした OpenJDK*-jdk_x64_windows_hotspot_*.zip
を配置して merge-openjfx.bat
を実行するだけです。
次回は、 この OpenJFX をマージ済みの OpenJDK 11 と Eclipse を使って、 JavaFX アプリケーションを開発する手順について説明します。