Java 11 + EclipseでJavaFXアプリ開発

前回の記事では、OpenJDK 11OpenJFXをマージしてJavaFXがバンドルされたJDKを作成しました。今回は、このJavaFXをバンドルしたJDKとEclipseを使ってJavaFXアプリケーションの開発環境を構築していきます。

JavaToolsをダウンロードする

Oracle OpenJDKのWindowsバイナリはZIP形式で配布されています。インストーラーは提供されていないため、展開したJDKにPATHを通すといった作業を自前で行う必要があります。この作業を自動化するためのバッチファイルを用意しました。

JavaTools.zipをダウンロード・展開して適当なフォルダー(たとえばC:\Javaなど)にコピーします。

JavaFXをバンドルしたJDKをコピーする

前回作成したJavaFXをバンドルしたJDKフォルダーをJavaTools.zipを展開したのと同じ場所にコピーします。

Eclipse 2018-09をダウンロードする

2018年9月からEclipseのリリースサイクルとリリース名が変更になりました。惑星の名前をアルファベット順に付けるという長年続いたリリース名が廃止になってしまったのは残念です。 Callisto、Europa、Ganymede、Galileo、Helios、Indigo、Juno、Kepler、Luna、Mars、Neon、Oxygen、Photon … 振り返ってみるとDFが無かったりGが2つあったりしますね。

今後は13週(3ヵ月)ごとのローリングリリースとなり2018-09といった年月がそのままリリース名になります。内部のプラットフォーム・バージョンは継続しており、Eclipse 2018-09のバージョンは4.9、次にリリースされるEclipse 2018-12は4.10と続いていきます。

閑話休題。

eclipse.orgからWindows 64ビット版をダウンロードします。Oracle OpenJDKおよびGluon OpenJFXが提供しているWindowsバイナリは64ビット版のみであるためWindowsでJavaFXアプリケーションを開発するには64ビットWindowsが必須となっています。

https://www.eclipse.org/downloads/packages/

今回はEclipse IDE for Java Developersパッケージを使用しますが、Webアプリケーションの開発も視野に入れている場合は、Eclipse IDE for EE Developersパッケージを選択してもいいかもしれません。

ダウンロードしたZIPファイルを展開してJDKと同じ場所にコピーします。

フォルダー名はeclipseのままでも問題ありませんが、バージョンが分からなくなってしまうのも不便なので、eclipse-java-2018-09-win32-x86_64にリネームしておきました。

Eclipseを起動する

JavaTools、OpenJDK + OpenJFX、Eclipse を同じフォルダーに展開すれば準備完了です。Eclipse.batをダブルクリックして実行します。

このEclipse.batは同じ場所にあるJDKフォルダーを検索してPATHを通してからeclipse.exeを実行してくれるバッチファイルです。Eclipseのスプラッシュ・スクリーンが表示されます。少し時間がかかりますが焦らずに待ちましょう。

初回起動時にはウェルカムページが表示されます。今後、ウェルカムページを表示する必要がない場合は右下のAlways show Welcome at startupのチェックを外します。右上のWorkbenchをクリックするとワークベンチ画面に切り替わります。

定期的なニュースの取得を無効にする

Eclipse 2018-09を起動してしばらく時間が経つと以下のエラーダイアログが表示されます。

‘Polling news feeds’ has encountered a problem.
An internal error occurred during: “Polling news feeds”.

これはJava 11でJAXB(Java Architecture for XML Binding)がJDKに同梱されなくなったことが原因です。Eclipseは最新情報を取得するために内部でJAXBを使用しているのですが、それが見つからないためにエラーが発生しています。

JAXBを追加してきちんと最新情報を取得できるようにしたほうが望ましいのかもしれませんが、今回は、とりあえずニュースの取得を無効化することでエラー表示を回避します。 WindowPreferences をクリックします。

左側のツリーから GeneralNews を開きます。右側のEnable automatic news pollingのチェックを外してApply and Close

これで定期的にニュースをチェックすることもなくなりエラーが表示されなくなります。

Java 11 Support for Eclipse 2018-09をインストールする

実はEclipse 2018-09はJava 11に完全対応しているわけではありません。Javaプロジェクト作成時のJREとしてJava 11が選択できないといった問題があります。

Eclipse MarketplaceからJava 11 Support for Eclipse 2018-09をインストールすることで問題が解決します。 HelpEclipse Marketplace… を開きます。

Eclipse Marketplaceのウィンドウが表示されたら、Find欄にjava11と入力してEnterを押します。そうすると、Java 11 Support for Eclipse 2018-09 (4.9) 4.9が見つかるので Install をクリックします。

インストールが始まると途中で選択機能の確認画面が表示されます。 Keep my installation the same and modify the items being installed to be compatibleが選択された状態で Confirm > をクリックします。

ライセンス確認画面も表示されます。ライセンスに同意する場合はI accept the terms of the license agreementを選択して Finish をクリックします。

インストールには少し時間がかかります。インストールが完了するとEclipseの再起動を促すダイアログが表示されます。Restart Now をクリックしてEclipseを再起動します。

JavaFXアプリケーションを作ってみる

Eclipseが再起動したら簡単なJavaFXアプリケーションを作ってみます。左側のPackage Explorerを右クリックして NewJava Project を選択します。

Java 11 Support for Eclipse 2018-09をインストールしたおかげでJREの選択欄にJavaSE-11が表示されていますね。

Project nameにfx-sampleと入力して Finish をクリックします。

モジュール作成ダイアログが表示されますが、今回はモジュールを作成しないのでそのまま Don’t Create をクリックします。

空のJavaプロジェクトが作成されました。fx-projectを展開してsrcを右クリック、 NewClass を選択します。

以下の内容を入力して Finish をクリックします。

  • Package: com.example
  • Name: Sample1

空のファイルSample1.javaを開いて編集します。

Sample1.javaに以下のソースコードを貼り付けて、Ctrl + S で上書き保存します。

Sample1.javaクリップボードへコピー
package com.example; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.stage.Stage; public class Sample1 extends Application { public static void main(String[] args) { launch(args); } public void start(Stage stage) { Button button = new Button("Hello, World!!"); button.setOnAction((event) -> { stage.close(); }); Scene scene = new Scene(button, 320, 240); stage.setTitle("JavaFX"); stage.setScene(scene); stage.show(); } }

Sample1.javaを右クリックして Run AsJava Application を選択します。

JavaFXアプリケーションが起動すれば成功です! ウィンドウをクリックするとこのアプリケーションは終了します。

あらかじめJavaFXをバンドルしたJDKを用意していたので、OpenJFXの設定を意識することなくJavaFXアプリケーションを開発・実行することができました。JavaFXを使用する際には、OpenJFXOpenJDKにマージしてしまうのがオススメの方法です。

前回の記事で説明したOpenJDKのマージではモジュールだけでなくsrc.zipもマージされています。JDKのsrc.zipにJavaFXのsrc.zipの中身が統合されていますので、EclipseでそのままJavaFXのjavadocをホバー表示したり、JavaFXのソースコードにステップ・インしていくことができます。

e(fx)clipseをインストールするときの注意

Eclipseにe(fx)clipseプラグインを追加すると、JavaFXアプリケーションの開発がさらに便利になります。ですがJava 11環境で実行しているEclipseへのe(fx)clipseインストールには注意してください。

e(fx)clipse 3.3まではJava 11に対応していません。e(fx)clipse 3.3以前のバージョンをインストールしてしまうとEclipseが起動できなくなってしまうので気を付けてください。

HelpInstall New Software… からアップデートサイト http://download.eclipse.org/releases/2018-09 を選択して e(fx)clipse をインストールしようとするとJava 11未対応のバージョン 3.3.0 しか表示されません。この方法でe(fx)clipseをインストールしないでください。

HelpEclipse Marketplace… から fx で検索すると、e(fx)clipse 3.4.1 が見つかりました。e(fx)clipse 3.4でJava 11対応がされているので、e(fx)clipse 3.4以上のバージョンをインストールすれば大丈夫です。

OpenJDK + OpenJFX + Eclipse 環境でのJavaFXアプリケーション開発手順の説明は以上です。