UbuntuにJavaFX開発環境を構築する
2015-07-12
2015-07-12
こんにちは。今回のテーマは『UbuntuにJavaFX開発環境を構築する』です。Java 8から標準GUIとして位置づけられたJavaFXは現代的なGUI開発を可能としており、SwingからJavaFXへ切り替えようとしている方も多いのではないでしょうか?今回はUbuntuにJavaFX環境の構築方法をお伝えできればと記事にしました。 【関連記事】 Ubuntu 14.04にOpen JDK 8を導入する [adsense02] 【目次】 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を用意します。 [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() { @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); } } [/java]
コンパイル
javac TestApp.java
実行
通常のコンソールアプリやSwingアプリと何も変わりません。以下のように実行します。
$ java TestApp &
実行例 図のようなウィンドウアプリケーションが開くと思います。文字を入力してボタンを押すと内容が反映されます。
最後に
今後のJavaでのGUIアプリケーションの開発はAWT/SwingからJavaFXに変わっていく流れだと思います。ただ、ユーザーサイドにはAWT/Swingに比べると浸透していない感じもあり、「一度書けばどこでも動く」状況ではないのが少々引っかかるところですね。Ubuntu14.04LTSもまだ現役のバージョンですから、openjfxパッケージを公式サポートして欲しいと密かに願っています。 [adsense]