JavaFX on Java8(JavaFX8)のことはじめ
ようやく、Java8がリリースされました。自分的に注目なのが、JavaFXです。
以前の記事にも書いていますが、Java7までのJavaFX2.X系は、業務などで本格的にアプリを開発しようとした場合は、まだまだ機能不足でした。
JavaFX8になり、コントローラ「DatePicker」、「印刷機能」「3D機能」が追加され、AWT/Swingに負けない機能がそろいました。
ここでは、JavaFXの新機能というより、開発する上でのマイナーな情報を紹介。
JavaFX8のデモプログラム
Java7までは、JavaFXのデモ用プログラムは別途ダウンロードでしたが、Java8からは、Javaのデモ用プログラムに同梱されています。
「jdk-8-windows-(x64|x86)-demos\jdk1.8.0\demo\javafx_samples」以下に格納されています。
JavaFXのソース
Java8から、Swingに変わり、正式にJava用のGUIライブラリになったので、ソースのJDKに添付されることになりました。
JDK8をインストールしたフォルダ直下に「javafx-src.zip」として格納されています。
JavaFXのライブラリの実体
Java7までは、JavaFXを起動する際には、JarファイルをJavaFX専用のパッケージングするか、「jre\lib\jfxrt.jar」にクラスパスを通す必要がありました。
Java8からは、完全に組み込まれることとなり、専用のパッケージングは必要なくなり、通常のJavaのMain関数と同様に起動できるようになりました。
Scene Builder2.0
JavaFX8用の「Scene Builder2.0」は、まだ正式リリースになっていませんが、ほぼ問題なく利用2014年3月に正式リリースされています。
もっとも大きいのが、個人的に拡張したコントローラが利用できるようになることです。
自分で作成したJar/FXMLファイルをインポートすることで、既存のコントローラと同様に配置できます。
以前のScene Builder1.xも、直接FXMLをいじれば独自のコントローラも利用できましたが、プレビューなどできないため、あまりうれしくありませんでした。
また、Development Kitも配布され、直接SceneBuilderを呼べるようになり、今後、EclipseなどのIDEのプラグインでSwingのVisualEditorのように、直接FXMLを組み立てられたりできるようになると思います。
現状のプラグイン「e(fx)clipse」は、SceneBuilderのプログラムを単に呼び、FXMLを編集できるだけでした。
これは、プラグインの開発者さんに期待です。
サードパーティ製のライブラリ
Webアプリもそうですが、画面を作るとかならず発生する問題が、入力値検証(Validator)、レベルごとのメッセージ表示(error、warn、info)、Javaのプリミティブ型とのマッピング(Converter)をどうするかです。
JavaFX2.Xの時点では、ライブラリがほぼ存在しなく、自作していました。
JavaFX8になり、というより、JavaFX8向けに各種ライブラリが作られていました。
Oracleのページの「JavaFX Third Party Tools and Utilities」に紹介されています。
- 「JideFX」:Validaton、Conveter、専用のControlerが各種そろっています。ただし、Beta版。
- 「JFXtras」:JavaFX2.xから存在していた、JavaFXの標準にない様々なコントローラがあります。スケジューラなどのようなコンポーネントもあります。
個人的には、「JideFX」がお勧めですが、JavaFXのライブラリは今後増えていくと思います。
対応プラットフォーム
下記のURLから、サポートするOS、グラフィックカードなどが確認できます。
http://www.oracle.com/technetwork/java/javase/certconfig-2095354.html
JavaFX2.xのときから思ったのですが、RHEL5.x/CentOS5.xではJavaFXはサポートしていないことが残念です。
5.x系の場合、glib2のバージョンが古く、モジュール「libgio-2.0.so.0」が足りず、JavaFXの起動に失敗するためです。
なので、独自にGUIライブラリをビルドしてインストールすれば、Redhat5.xでも利用できると思いますが、あまりお薦めはしません。
当然、WindowsXPは、マイクロソフトのサポートが2014年4月に終了するので、Java8自体、WindowsXP以前のOSはサポートしていません。