JavaFX 1.2 リリース(したの?まだ?)

JavaFX TwibeJavaFX 1.2 の話題がほんのり盛り上がってます。
公式サイト上では、まだ 1.1.1 と書かれていますが、ダウンロードしてみると実際は 1.2 が落ちてきます。
JavaOne でのアナウンスに合わせて公式サイトの方も書き換わるのかもしれません。


で、僕も落としてみました。
何が追加されて何が変わったのかは、まだリリースノートが公開されていませんが、Stephen Chin さんが早速まとめています。

http://steveonjava.com/2009/05/31/javafx-1-2-top-10/


それを僕なりに更に簡単にまとめると、

1. UI コントロール
 ボタン、チェックボックスラジオボタンなど、Swing に依存しないモバイルでも利用可能なコントロールが追加されました。
 javafx.scene.control

2. 新しいレイアウト
 Tile、Flow、Stack、ClipView、Panel等が追加されました。
 javafx.scene.layout

3. チャート機能
 円グラフ、線グラフなど、エンタープライズアプリケーションでは必須のチャート・グラフの機能が追加されました。
 javafx.scene.chart
 javafx.scene.chart.data
 javafx.scene.chart.part

4. RSS/Atom フィードのサポート
 RSSAtom フォーマットのフィードがサポートされました。
 javafx.data.feed
 javafx.data.feed.atom
 javafx.data.feed.rss

5. ローカルデータ
 ローカルにデータ保存したり、読み出したりが可能になりました。Web のドメイン毎に固有の領域が割り当てられ、別のドメインのアプリケーション用の領域は見ることが出来ません。また、同じドメインでもディレクトリ階層ごとに領域を分けたりするようなことも出来るようです。
 javafx.data
 javafx.data.feed
 javafx.data.feed.atom

6. Screen と Alert
 簡単にメッセージ/確認ダイアログを利用することが可能になりました。また、スクリーンの境界やマルチスクリーン環境におけるプライマリスクリーン、DPI などの情報にアクセスすることが可能になりました。
 javafx.stage

7. 非同期処理モデルの改善
 今までの AbstractAsyncOperation、RemoteTextDocument は JavaTaskBase、RunnableFuture、Task に置き換えられました。
 javafx.async

8. BoxBlur effect
 これは GaussianBlur に変わる、よりパフォーマンスの良いエフェクトみたいですね...(GaussianBlur はまだあります)
 javafx.scene.effect

9. Math クラスと Properties クラス
 Javajava.lang.Math と java.util.Properties に相当するクラスが追加されました。
 javafx.util

10. Java 配列への直接参照 (更新!)
 新しいシンタックス nativearray によって、sequence (内部的には List)への変換コスト支払うことなしに JavaFX から Java 配列を利用することが可能になった。
注意) 現在はまだ実験的にサポートされたシンタックスのようです。将来、削除される可能性もあるようです。使用する際は注意して欲しいと Stephen Chin さんが自身のエントリを更新して説明しています。


以上のような追加・変更・削除がありますが、他にも更に細かいのが結構あります。それらも先の Stephen Chin さんのエントリで 1.2 移行ガイドとして紹介されています。幾つか簡単に書くと、

javafx.scene.Node の boundsInScene() がなくなりました
 代わりに node.localToScene(node.boundsInLocal); で書けるようです。


sequence の要素を区切るコンマを省略できなくなりました
 以前は var a = [1 2 3]; のように空白で区切ればコンマは省略できましたが、1.2 ではコンマが必要です。ですが以下のような記述では、コンマが無くてもコンパイルできます。

scene: Scene {
    content: [
        Circle { ... }
        Rectanble { ... }
    ]
}

オブジェクトのリテラル表記の場合は、コンマを省略しても良いんですかね。ちょっとわかりません。
他にも沢山書かれています。


1.0 から 1.1 へのバージョンアップのときもかなり変わったと思うけど、今回もまた更にですね。
移行も大変だ。API や言語を本当に良いものにするには多少の犠牲も仕方ないのかもしれないですが、それもまだ JavaFX 開発者と、その人達によって作られたものも少ないだろうということで許されてるのかな...

逆に、期待していた JTable のようなコントロールや、JWebPane だとかはありませんでしたね。
他にも、REPL の機能はどうしたんだろうか...


まあちょっと残念な点もありますが、1.2 でローカルストレージが追加されたり、モバイル(CLDC 環境)で利用可能なコントロールが追加されたりと目玉機能となる変更もあり、便利で面白いものになることは間違いないでしょう。はい。

と言うわけで 1.2 のお話でした。


追記:
Twitter での Josha Marinacci さんの発言から正式リリースと考えられそう。
https://twitter.com/joshmarinacci/status/1982876159
nativearray の使用について注意が必要の旨を記載しました。(2009/06/03)