昨年のJavaOneカンファレンスでOracleは引き続きJavaFXに投資していくこと、今年JavaFX 2.0をリリースすることをアナウンスしたが同時にJavaFX Scriptのサポートを終了し、代わりにJavaFXアプリケーション用の新しいJava APIを提供するとも発表した。このAPIはJRuby、 Clojure、Scala、そしてGroovyのような他の言語でも利用できる。
JavaFX 2.0のベータプログラムは既に始まっている。 JavaFX Partner ProgramのメンバはEarly Access版を触れる。パブリックベータは今年の半期の終わりに計画されている。参加者は調査はもちろんフォーカスグループのセッションやJavaFX製品チームの主要なメンバとの議論など、さまざまなチャンネルを通じてフィードバックを送ることができる。
InfoQはリリースとこれからの計画についてRichard Bair氏に話を聞いた。氏はOracle社のクライアントソフトウエアのアーキテクトだ。
InfoQ: Early Access版の目標としてどんなことを考えていますか。
最も重要な目的は可能な限りはやくAPIと実装についてのフィードバックを得ることです。そうすることでベータに到達する前に必要な調整を行いたいと思っています。Early Access版の間に妥当な数のフィードバックを集めて、ベータリリースの時にはより多くの開発者により優れたものを最初から提供したいのです。また、JavaFXの前バージョンを利用している企業がアプリケーションをJavaFX 2.0に移行するときに幸先のいいスタートを切れるようにしたいです。
また、リリースと定期的に行うことで、ビルドとリリースの仕組みを準備し、実際に動かすことで将来のリリースをスムーズに行えるようにしています。
InfoQ: リリーススケジュールはどうなっていますか。どのくらいの頻度でビルドを更新するつもりですか。
JavaFX 2.0のスケジュール全体はhttp://javafx.com/roadmapで確認できます。1月の終わりにEarly Access版をビルドしてから毎週新しいビルドをリリースしています。現在のビルドはJavaFX Partner ProgramのメンバとJava開発者コミュニティで熱心に活動している開発者の方(例えばJavaチャンピオンやJavaユーザグループのリーダー)だけが利用できます。ベータマイルストンに達したら、Oracle Technology Network
を通じてより多くの開発者がビルドを利用できます。
InfoQ: EA版には何が含まれていないのですか。
ふたつの重要な機能が含まれていないだけです。マークアップでGUIを宣言的に記述する機能とJavaFXベースのブラウザプラグイン(表示用のアップレットとしてのSwingとAWTを完全にバイパスします)です。他はすべて含まれています。TableView UIコントロール、Swingへの埋め込み、JavaFXアプリケーションでHTMLコンテンツを利用するための描画コンポーネント、バインディング、ObservableList、ObservableMapなどは既にEA版に含まれています。
InfoQ: 現在サポートしているプラットフォームは何でしょう。
Mac OS XでもWindows(XP、Vista、7)でも利用できます。しかし、現時点では最初のリリースで公式にサポートするプラットフォームはWindowsだけになるでしょう。MacとLinuxのサポートもなるべく早くすすめる予定です。
InfoQ: JavaFXはいつもツールの支援の限界に悩まされてきました。特にデザイナに着目した開発環境がありません。JavaFX 2.0では何か対策はしますか。
Java APIを利用することの利点のひとつは、開発者はお気に入りのJava IDEを使ってJavaFX 2.0の開発ができることです。デバッグやプロファイリング、コード補完のような機能は始めから使えますし、また、このプラットフォームとしっかりと統合したIDEを開発すべく大手のIDEベンダと協業しています。私たちは始めから企業で利用するリッチなアプリケーション、リッチでグラフィカルなアプリケーションに必要なAPIと機能を提供することに注力してきました。また、JavaFX 1.xで導入したデザイナ-デベロッパワークフローのコンセプトを改善するために補助的なツールを提供しようと思っています。
InfoQ: 歴史的にJavaアップレットにはふたつの問題があります。起動の時間と性能です。Prism(ハードウェアアクセラレーションを利用したグラフィックプラットフォーム)は改善するだろうと思っていますが、もう少し詳しく説明をしていただけませんか。
起動と実行の性能には多くの要因が関わります。Prismは第一に実行の性能に着目し、最新のグラフィックハードウエアの能力を最大限に生かして、画面の描画と(3Dコンテンツの投入)を高速化します。SwingとAWTではイベントディスパッチスレッドがイベントのディスパッチと描画の両方を受け持っていました。一方、Prismではこの処理はふたつのスレッドに分離されているようです。このため現代的なマルチコアのシステムを利用してより少ない時間で高速な処理ができます。もちろん、単一スレッドが必要な複数のデバイスをターゲットにする場合は単一スレッドのアーキテクチャが必要ですが、現代的なマシンでスレッドを分けた方が、フレーム率を上げることができます。
InfoQ: Java 7とJava 8で計画されている具体的な機能の中で、JavaFXのためになるのは何ですか。
JavaFXはJava SE 8で計画されている"ラムダ"言語の機能を受け入れやすいように設計されました。現在の計画、そしてラムダへの提案は"single abstract method"インターフェイスを支持することです。このパターンに従った新しいAPIをJavaFXに追加することで、後にラムダが利用できるようになったとき、自然にJavaFX 2.0のAPIを使えるでしょう。Java SE 8で計画されているモジュール方式もJavaFXとってとても便利なものです。管理された配置(おそらく最終的にはWeb Startでの配置を実現するための単一の配置物を作成することになります)を支援するモジュール方式はロードしなければならないクラスの数を少なくすることで起動時間を短縮します。モジュール方式では他の効果でも起動が改善されるはずです。例えば、"インストール時間"の改善して、起動するたびに処理を繰り返すのではなく、キャッシュする方式にすることでも改善するでしょう。
InfoQ:JavaFX Scriptのサポートを終了するということは言語の利点がいくらか失われるということだと思います。例えば、データフロースタイルのバインディングやコレクションリテラルです。Java APIではこれらの点はどのようにサポートされますか。
JavaFX Scriptの最も革新的な特徴はバインディングをサポートしたことです。言語内でバインディングを提供したのはとりわけ強力でした。JavaFX Scriptのバインディングサポートは遅延評価の高速処理を実現する強力な表現を提供したという点でユニークなものでした。開発者はこのような重要な機能がJavaFX 2.0にも提供されると聞いて喜ぶのではないでしょうか。低レベルのバインディングAPI(とても強力かつ柔軟で冗長でない)と高レベルのバインディングAPIの両方をサポートします。ともに流れるようなインターフェースパターンを(fluent interface pattern)を使っています。加えて、Observable Collectionも使えます(ObservableList and ObservableMap)。
InfoQ: JavaOneではネイティブのJava 2D/OpenGL/HotSpot VMスタックでもJavaScript/HTML5/ブラウザスタックでも同じAPIコールで描画ができると発表されました。これはJavaFX 2でサポートされますか。
この件については今まで様々な可能性を追求し、現在も作業中です。JavaFX 2.0の一部の機能というよりは、補完的な機能です。
InfoQ: JavaFX 2はどの程度オープンソースライセンスでリリースされるのでしょうか。
JavaOneでUIコントロールをオープンソースライセンスでリリースする予定だと発表しました。具体的な計画についてはコメントできませんが、計画は進行中です。
InfoQ: ランタイムをスタンドアロンのインストーラの一部としてとして配布することは可能ですか。
はい。これは最もリクエストの多かった機能で、実現に向けて前進しているのはとても喜ばしことです。JavaFXのライセンスはJREのライセンスと一貫性があるはずですので、このような具体的な条件での配布が可能になります。
InfoQ: JavaFXはJava 7の一部になるのですか。
JavaFX 2.0は始めはスタンドアロンのプログラムとしてJava SE 6とJava SE 7のユーザに提供されます。しかし、すぐにJava SE 7とJavaFX 2.0をバンドルして提供するつもりです。
JavaFXのウェブサイトには時期が来ればベータプログラムについてより多くの情報が掲載されるだろう。
JavaFX ScriptはOracleのオープンソースプロジェクトVisageとして独立してメンテナンスされている。Stephen Chin氏にこのプロジェクトについて話を聞いたところ、氏は現在、Visageの新バージョンのEarly Access版のリリースに関わる作業に従事している。このバージョンはJavaFX 2 APIをすべてサポートする予定だ。氏はAndroidのサポートにも尽力している。5月にはベータを発表したいそうだ。