OpenJDK 11にJavaFXを導入する

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 アプリケーションを開発する手順について説明します。

この記事を共有しませんか?