UbuntuにJavaFX開発環境を構築する

こんにちは。今回のテーマは『UbuntuにJavaFX開発環境を構築する』です。Java 8から標準GUIとして位置づけられたJavaFXは現代的なGUI開発を可能としており、SwingからJavaFXへ切り替えようとしている方も多いのではないでしょうか?今回はUbuntuにJavaFX環境の構築方法をお伝えできればと記事にしました。
【関連記事】
Ubuntu 14.04にOpen JDK 8を導入する


【目次】
Ubuntuのバージョンにご注意を
OpenJDK 8のインストールと設定
openjfxを導入する
JavaFXの動作を確認する

Ubuntuのバージョンにご注意を

Oracle JDK 8の場合はJavaFXを同梱していますので、JDK導入と同時にJavaFXが使える環境が整うのですが、OpenJDK 8にはJavaFXが含まれていないので別途導入する必要があります。

ここで問題になるのが、Ubuntuのバージョンです。残念ながら公式リポジトリでは14.10(Utopic)からのサポートとなっています。また“PPA for OpenJDK uploads (restricted)” teamでも14.04(Trusty)向けのパッケージはビルド失敗している状態(2015年7月現在)で提供されていません。Ubuntu 14.04LTSユーザーの方の現実的な解決方法は残念ながらOracle Java 8の導入ということになると思います。(ご自身でopenjfxをビルド出来る方は除きます)

本記事の内容はUbuntu 14.10以降のバージョンが対象となりますので、ご注意下さい。

OpenJDK 8のインストールと設定

インストール

OpenJDKでJavaFXを使用する場合バージョン8以降でないと、コンパイルおよび実行が出来ません。以下のコマンドでインストールしておきましょう。

$ sudo apt-get install openjdk-8-jdk

設定

javaコマンドとjavacコマンドにopenjdk8を用いるように設定します。

$ sudo update-alternatives --config java
(番号を選択)
$ sudo update-alternatives --config javac
(番号を選択)

openjfxを導入する

以下コマンドでopenjfxを導入するだけです。

$ sudo apt-get install openjfx

JavaFXの動作を確認する

ここまでで準備は完了です。JavaFXが導入され、コンパイル・実行可能か試してみましょう。

ソースの準備

打ち込んだ文字を返すだけの簡単なコードを用意しました。以下のコードを打ち込んだファイルTestApp.javaを用意します。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
 
public class TestApp extends Application {
    Label label;
    Button button;
    TextField textField;
 
    @Override
    public void start(Stage stage) throws Exception {
        label = new Label("入力された文字:");
        textField = new TextField();
        button = new Button("OK");
        //buttonクリック時のアクション
        button.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent e) {
                String typed_msg = "入力された文字:" + textField.getText();
                label.setText(typed_msg);
            }
        });

        BorderPane borderPane = new BorderPane();
        borderPane.setTop(textField);
        borderPane.setCenter(label);
        borderPane.setBottom(button);
        Scene scene = new Scene(borderPane, 240, 120);
        stage.setScene(scene);
        stage.setTitle("TestApp");
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
 
}

コンパイル

javac TestApp.java

実行

通常のコンソールアプリやSwingアプリと何も変わりません。以下のように実行します。

$ java TestApp &

実行例
図のようなウィンドウアプリケーションが開くと思います。文字を入力してボタンを押すと内容が反映されます。
01

最後に

今後のJavaでのGUIアプリケーションの開発はAWT/SwingからJavaFXに変わっていく流れだと思います。ただ、ユーザーサイドにはAWT/Swingに比べると浸透していない感じもあり、「一度書けばどこでも動く」状況ではないのが少々引っかかるところですね。Ubuntu14.04LTSもまだ現役のバージョンですから、openjfxパッケージを公式サポートして欲しいと密かに願っています。

Sponsored Link


コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です