Java9以降様々なトピックがあった模様のOracle製のJava。Java9以降は商用利用が有償化していたので少し敬遠していたが、なんとJava17以降は再度無償化する(*1)(*2)とのこと。今回は、Java17+JavaFXの環境構築をやってみることにする。
■ JavaFXとは?
JavaFXはJava8でJDKに標準搭載されたクライアントUI(デスクトップアプリ)である。Javaのクライアントでは他にawtやswingがあるが、FXMLによるデザインの分離等、より使いやすいGUIを目指したのがJavaFXとなる。
一方、JDKの小型化を目指したOracleの方針(
*3)により、Java11からは標準ライブラリから分離したものの、OpenJDKプロジェクトの主導によりプロジェクトは継続しており、JDKのバージョンアップに合わせてリリースを続けている。2021年現在はJavaFX 17として、外部ライブラリのような形で利用可能となっている。
■ 自己完結型アプリケーションにも対応
Javaのデスクトップアプリのデメリットとして、利用者側にJREのインストールが必要なことがあげられるが、Java8からは自己完結型アプリケーションに変換することでexe形式と同様の扱いができるようになっている。もちろん、JavaFXアプリケーションでも自己完結型アプリケーションを作成できる(
*4)。
■ インストール / ダウンロード
まずは事前環境構築として以下をインストール。特に問題はなかったので、詳細は割愛。
- Java SE Development Kit 17.0.1
- pleiades (Eclipse 2021 PlatForm)
次にJavaFXをダウンロードする。
ここから自分の環境に合わせたJavaFX(sdk)をダウンロードして解凍する。(どうやら、Gluonという企業がJava FXの支援を行っている模様で、公式のダウンロードリンクがGluonのページにつながっている)
解凍したファイルはEclipseから参照することになるので、一時的な場所でなく、長期保存する場所に置いておく。(とりあえず、Javaのインストールフォルダに入れておいた)
■ Eclipse設定(プラグインのインストール)
次にeclipse(pleiades)を起動する。
「ヘルプ-新規ソフトウェアのインストール」を開く。
作業対象に「https://download.eclipse.org/releases/2021-09」を入力。 その後、以下のソフトウェアをインストールする。
- 「プログラミング言語」の「Eclipse Java 開発ツール」
- 「プログラミング言語」の「JavaDoc ヘルプ・フィーチャー」
同様に「http://download.eclipse.org/releases/oxygen」から、以下のソフトウェアをインストールする。
- 「一般用ツール」の「e(fx)clipse - IDE」
インストールが終わったら、「ヘルプ-新規ソフトウェアのインストール」の右下のリンク「すでにインストールされている」をクリックして、目的のソフトウェアがインストールが完了したことを確認する。
なお、eclipseの右下のバーに以下のような表示がある場合、インストール中のためしばらく待てばOK。
■ Eclipse設定(インストール済みJDKの関連付け)
「ウィンドウ-設定」にて「Java-インストール済みのJRE」にインストールしたJDKパスを設定する。
■ Eclipse設定(JavaFXライブラリへのパスを定義)
elipcseにダウンロード済みのJavaFXライブラリへのパスを定義します。
「ウィンドウ - 設定」ダイアログを開き、「Java - ビルド・パス - ユーザー・ライブラリ」を選択する。
「新規」ボタンを押下して、ユーザー・ライブラリー名に「JavaFX」と入力して、「OK」ボタンを押下する。
「外部JARの追加」を選択する。
ダウンロード済みのJavaFXの「lib/*.jar」をすべて選択して、「OK」ボタンを押下する。
これで、ユーザ定義した外部JARグループ「JavaFX」が作成されました。
■ プロジェクト作成(ユーザ・ライブラリの関連付け、実行構成)
いよいよプログラミング…の前に、プロジェクトの設定から。 「ファイル - 新規 - プロジェクト」から「JavaFX - JavaFX プロジェクト」を選択。適当なプロジェクト名をつけ、後の設定はデフォルトのままで新規プロジェクト作成。
プロジェクト作成直後は、プロジェクトにJavaFXのライブラリが関連付けられていないため、コンパイルエラーが発生している。このため、作成したプロジェクトに先ほど作成したユーザー・ライブラリ「JavaFX」を関連付ける。
「プロジェクト・エクスプローラー」のプロジェクト名を右クリックして「ビルド・パス - ビルド・パスの構成」を選択する。
「ライブラリー」の「クラスパス」を選択し、「ライブラリーの追加」を押下する。
「ユーザー・ライブラリー」を選択して、「次へ」ボタンを押下。
「JavaFX」にチェックを入れて、「完了」を押下。
この時点でコンパイルエラーが消えます。
最後に、実行時にJavaFXを利用するための実行構成を定義します。プロジェクト名を右クリックして、「実行 - 実行の構成」を選択。
左のリストから「Javaアプリケーション - Main」を選択し、「引数」タブの「VM引数」に以下のように入力。その後、「適用」ボタンを押下してからダイアログを閉じる。
--module-path "(ダウンロードしたJavaFXのlibフォルダへのフルパス)" --add-modules javafx.controls,javafx.fxml
■ 実行
プロジェクトをJavaパースペクティブで開きます。プロジェクト内にsrc/application/Main.javaが作成されており、以下のようなソースがデフォルトで作成されていることがわかります。詳しい説明は次回以降に説明していくが、JavaFXではApplicationクラスを継承したクラスから始まることを覚えておく。
◇サンプルコード
package application;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
Scene scene = new Scene(root,400,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
まずは何も考えずに実行(
)すると、ウィンドウが表示される。
改訂履歴
・2021年11月25日 一部改訂。不要なプラグインを削除