JavaFX

まず、本サイトは .NET Framework/WPF ユーザーのための Java/JavaFX であることに留意してください。もちろん、Mac や Linux ユーザーにも参考になると思います。

さて、Java/JavaFX はマルチプラットフォームで動作することに特徴がありますが、ハッキリいって、Windows 環境における最強の開発ツールは ..NET Framework/WPF であることに変わりありません。私は、Java/JavaFX を 1 年ほど使っていますが、慣れの問題を考慮しても .NET Framework/WPF のほうが機能と洗練さの度合いですぐれていると思います。もちろん、有料のツールとの比較は公正とは言えませんが。

注 Java/JavaFX はマルチプラットフォームをサポートしますが、事実上 Windows、Mac、Linux の 3 つと考えてよいと思います。ただし、Linux 搭載の市販のパソコンはありませんから Linux で動作するといっても一部のユーザーを除いて一般のユーザーには関係ないかもしれません。ところで、Windows 用のパソコンに Linux をベースとする OS をインストールすることは可能ですが、実用性はないという評判です。そろそろ、Linux を開放すればどうなんでしょうね。そうすれば使用者が一気に増えるのではないかと期待できるのですが。

本題に入る前にバージョンの表記方法について説明しておきます。2016 年 5 月時点における Java および JavaFX のバージョンは 1.8 ですが、Java 8 あるいは JavaFX 8 という風に表記する場合があります。どちらかにしてくれると迷いがないのですが、そういう習慣なので、やむを得ません。ちなみに、JavaFX 8 になったのは 2014 年 3 月です。

Java 8/JavaFX 8 の内容は .NET Framework 4.0 相当と考えてよいと思います。つまり、やっと .NET Framework に追いついたということです。逆にいえば、やっと使えるレベルになったというべきでしょう。最新バージョンでこんな基本的な機能を追加したのかとおどろくこともタビタビです。

注 Java/JavaFX は、Windows 環境をターゲットにしていないでしょうから、.NET Framework との競争を考えなかったのかもしれません。Java/JavaFX が有料であれば、ユーザーの理解を得ることは到底できないと思います。

ところで、Oracle は JavaFX を Android に対応すると明言しています。そもそも私が JavaFX に興味を持った理由はこれです。Android で動作するパソコンがあってもよさそうですが今のところありません。したがって、パソコン用アプリは .NET Framework/WPF で、スマートフォンとタブレット用アプリは Android で開発するのが現実的な選択のような気がします。

Google がどういう選択をするかは分かりませんが、Android が JavaFX で開発可能になれば Java/JavaFX が持つ意味は一気に大きくなる可能性があります。


Java/JavaFX の開発ツール

有料と無料の開発ツールの差かもしれませんが、Java/JavaFX 対応の開発ツールに関する情報が交錯していてある程度知識を得てからでないと理解が難しいようです。WEB 上の情報は予想以上に豊富ですが、まさに玉石混交です。また、Java/JavaFX 関係の資料やマニュアルは英文だけという問題もあります。

注 一部のマニュアルは日本語化されていますが、誤訳や解釈違いもあるようです。ただし、これは訳者の責任というよりも原文に問題があります。Microsoft のほうもそうですが、マニュアルのチェック体制がそもそもあるのだろうかとの疑念を持たざるを得ません。

Java と JavaFX とは、.NET Framework と WPF との関係と似ています。WPF はユーザーインターフェースの作成を中心とする機能を提供しますが、.NET Framework だけでもユーザーインターフェースを作成することはできます。それと同様に、Java だけでもウインドウを作る機能があります。しかし、本サイトは、JavaFX を使う Java アプリケーションの開発をテーマとしています。

さて、Java によるアプリケーション開発のための総合開発環境(IDE "Integrated Development Environment")は、複数あるようです。「あるようです」は、私自身よく知らないからです。したがって、ここで説明することは、私が選択したツールに限定します。

以下は、2016 年 5 月現在の私の環境です。

ツール名前バージョン
総合開発環境NetBeans8.0.2
UI の作成Scene Builder8.2.0

NetBeans と Scene Builder の入手方法

Java/JavaFX アプリケーション開発のための開発ツールは、基本的に無料で提供されています。Java/JavaFX の本家である Oracle 社がまとめて面倒みてくれればいいのですが、どうもその気はないようです。しかし、ボランティア精神旺盛な人が Oracle 社に代わって対応してくれています。

一方、それだけにヤヤコシさもあります。Java/JavaFX は考える以上に頻繁にバージョンアップしています。したがって、最新バージョンが何かを把握することさえ容易ではありません。

上記で示した環境は、2016 年 5 月現在の最新バージョンのはずです。ちょっと前のバージョンでは、Scene Builder の NetBeans への組み込みに失敗する問題がありましたが現在では解決しています。

さて、NetBeans と Scene Builder の入手方法ですが、サイトについては Google をあたってください。というのは、ほとんどがボランティアなので、紹介したサイトが今でも生きているかどうかが分からないからです。バージョンに注意すればどこから入手しても問題はないと思います。


NetBeans への Scene Builder の組み込み手順

  1. NetBeans の [ツール]-[オプション] を選択する
  2. [Java] のページの [JavaFX] タブを選択する
  3. [JavaFX Scene Builder 統合] の [Scene Builder ホーム] に Scene Bulder をインストールしたフォルダを指定する(Scene Builder をインストールしたあとは、すでのフォルダ名が入力されているが、そうでない場合は、[参照] でフォルダを選択する)

ちなみに、Scene Builder のインストール先は、C:\Users\user\AppData\Local\SceneBuilder です。


JavaFX アプリケーションのプロジェクトの作成

  1. [ファイル]-[新規プロジェクト] を選択する
  2. [カテゴリ] で [JavaFX] を選択する
  3. [プロジェクト] で [JavaFX FXML アプリケーション] を選択する
  4. [次] を選択する
  5. [プロジェクト名] に入力する(デフォルトは、JavaFXApplication?、? は番号)
  6. [プロジェクトの場所] と [プロジェクトフォルダ] を設定する(通常は、デフォルトのままでもよい)
  7. [終了] で、以下に示す自動生成されたコードが表示される

NetBeans の左側にあるプロジェクトのリストから新規作成したプロジェクトを選択し、[ソースパッケージ] 内の .fxml ファイルをマウスでダブルクリックすると Scene Builder が起動します。

注 Scene Builder をインストールしないか、使わないようにしている場合に、.fxml ファイルをマウスでダブルクリックすると、.fxml ファイルがコード編集部に表示されます。ただし、実行するまでウインドウの状況を確認することはできません。

ところで、私は、Scene Builder を使っていません。その完成度が使えるレベルにないからです。ちょっとがっかりするほどです。

一方、WPF では Expression Blend が Scene Builder に相当する機能を提供しますが、私はこれも使っていません。理由の一つは有料でしかも高いということはありますが、現在の Visual Studio の機能で充分だということです。

本サイトをご覧の皆さんは、Visual Studio を使っているでしょうから両者の比較はできるはずです。ご自分で確かめてください。


Java/JavaFX のマニュアル

マニュアルとは、API(クラスライブラリ)の解説書とプログラミングガイドです。WEB をあたると山のように情報が得られますが、例によって玉石混交です。Java/JavaFX 関係は頻繁にバージョンアップしています。しかも、かなり大きな変更もありますから WEB サイト内の記事がどのバージョンのものかを確かめないとムダな知識を仕入れることになります。ご注意ください。

注 ひつこいぐらいにバージョンが重要だと説明していますが、この記事を書いている 2016 年 5 月の時点のバージョンは、1.8 です。これを 8 と表記する場合もあります。また、1.8 の中にもマイナーなバージョンがあり、しかも頻繁に更新されています。ただし、Microsoft のマニュアルとは異なり、クラスやメソッドごとに有効なバージョンを表記していますので、新しく追加された機能かどうかはすぐに分かります。この点は、Microsoft も見習ってほしいと思います。

主なマニュアルは、次の 4 つです。

一部のマニュアルは、最近になって日本語版が公開されています。しかし、残念ながら翻訳の質はよくありません。先にも書きましたが、これは訳者に問題があるというよりも原文の質の低さに原因があると思います。したがって、日本語版はザット読むにはいいですが、これが正しいとは考えないほうが無難です。Oracle 社はこれが正式のマニュアルとは認めないでしょうし、文章に対する責任も持たないと思います。なにせ、無料ですから。

Java SE 8 API

.NET Framework のクラスライブラリに相当するもので、Java 全般のクラスライブラリです。ちなみに、SE は、"Standard Edition" の略です。日本語にすると、「標準版」とでもなるのでしょうが、標準でない版があるのかどうかは分かりません。

英語版
日本語版

JavaFX 8 API

WPF のクラスライブラリに相当するもので、ファイルの I/O のような Java の基本的な機能に関係するクラスは含みません。

英語版
日本語版

JavaFX 8.0 Documentation

JavaFX のプログラミングガイド、つまり、JavaFX 関係の API の使い方を解説するものです。この種のマニュアルの定番である "Hello World!" を表示するアプリケーションの作成方法から始まり、UI コンポーネントの使い方やグラフィックス関係の記述までをカバーします。

英語版
日本語版

The Java Tutorials

"tutorial" は、取扱説明書ですが、プログラミング用語としては指導書とか解説書、あるいはチュートリアルとする場合が多いようです。これは、Java SE 8 の公式の解説書で、古いバージョンでは書籍として出版されたことがあります。しかし、最新版の日本語版は多分ないと思います。なお、以下のリンク先は、JDK 8u40 対応のものです。

英語版

その他のマニュアル

上記でリストアップしたマニュアルのほかに補足的なマニュアルがあります。私が把握しているものを以下にリストアップしておきます。その一部はすでに日本語化も終わっています。いずれ公開する予定です。

  1. JavaFX CSS Reference Guide
  2. Introduction to FXML
  3. Lambda Expressions in Java 8
  4. Concurrency in JavaFX
  5. Java File I/O (NIO.2)

上記の一部は、Oracle 社の正式なマニュアルではありませんが、私が読んでみて参考になると思ったので、リストアップしました。


JavaFX のサンプルアプリケーション

WPF が公開されたころ、Microsoft の勢いにも陰りが出てきたことに原因があるのだと思いますが、本格的な WPF アプリケーションはほとんどありません。業務用のアプリケーションはユーザーインターフェースは何でもいいですから WPF を使う動機がないということでしょう。

JavaFX も公開されて間もないという事情はありますが(といっても 2 年以上経過しました)、Swing を使う Java ベースのアプリケーションで満足する人が多いからでしょうか、JavaFX アプリケーションはありません(もちろん、習作的なものはあります)。

さらに奇妙なことに、Microsoft はいわゆる Windows くさい外観から離れようとしている一方、Java/JavaFX のほうは Windows くさい外観に寄ってきていると感じがします。



ー以 上ー