ついにベールを脱いだJavaFX
第14回 補遺:JavaFX Scriptマイグレーションガイド
JavaFX Scriptはインタープリタ版,Preview SDK,JavaFX 1.0,Java FX 1.1と変遷を遂げてきました。そして,そのつど文法やAPIが変更されてきました。
そこで,本連載の補遺として,その主な変更点をまとめてみます。主に文法の差異をまとめ,APIに関しては大きな変化のみを取りあげています。
ここで,いつ変更されたかわるように,以下のように記号を使用します。
- (I) ... インタープリタ版
- (P) ... Preview SDK
- (1.0) ... JavaFX 1.0
- (1.1) ... JavaFX 1.1
たとえば,タイトルに (I)/(P)と記述してあれば,インタープリタ版とPreview SDKが最新のJavaFX 1.1とは異なることを示しています。また,リストのタイトルに(I)と記述してあれば,インタープリタ版での記述法を示しています。
目次
文法編
データ型と変数
数値型の変更 (I)/(P)/(1.0)
インタープリタ版では数値型はInteger,Numberで表されていました。IntegerはJavaのint,long,BigIntegerクラスに対応し,Numberはdoubleに対応していました。
JavaFX 1.0でIntegerはintに対応するように変更されました。また,JavaFX 1.1でNumberがfloatに対応するように変更されました。
さらに,JavaFX 1.1ではInteger,Number以外に以下の数値型が提供されています。
- Byte
- Short
- Long
- Float
- Double
それぞれ,Javaのbyte,short,long,float,doubleに対応しています。
時間間隔 (I)
時間間隔を表すDuration型が導入され,時間間隔を表すことができます。
リスト1 時間間隔 (P)/(1.0)/(1.1)
var u: Duration = 2h; // 2時間
var v: Duration = 30m; // 30分
var x: Duration = 1.0s; // 1秒
var y: Duration = 10ms; // 10ミリ秒
複数の要素からなる変数 (I)
インタープリタ版では変数が複数の要素を持つかどうかを示すために?,+,*を使用して変数を定義することができました。Preview SDKからはこれらのキーワードはサポートされなくなり,複数の要素で表される場合はすべてシーケンスとして定義します。
リスト2 複数の要素からなる変数 (I)
var x? = [0..10]; // nullの可能性がある
var y+ = 5; // 変数の個数が1個以上
var z* = [2..5]; // 変数の個数が0個以上
リスト3 複数の要素からなる変数 (P)/(1.0)/(1.1)
var x: Integer[] = [0..10];
var y: Integer[] = 5;
var z: Integer[] = [2..5];
定数 (I)/(P)
JavaFX 1.0で一度だけ代入することができるdefが定義されました。
リスト4 defキーワード (1.0)/(1.1)
def x = 10;
x = 20; // NG 代入はできない
def line = Line {
startX: 0.0 startY: 0.0
endX: 10.0 endY: 20.0
};
line.startX = 2.0; // これはOK
定数の代入 (I)
インタープリタ版では定数の型の記述を省略できましたが,Preview SDKからは型を明示する必要があります。
リスト5 定数の代入 (I)
Rect {
width: 200
height: 1000
fill: red
};
リスト6 定数の代入 (P)/(1.0)/(1.1)
Rectangle {
width: 200
height: 1000
fill: Color.RED
};
複数行に渡る文字列 (I)
インタープリタ版では複数行に渡るリテラル文字列が許されていましたが,Preview SDKから使用できなくなりました。複数行に渡る文字列を扱う場合,文字列中に改行を示す\nを含めます。
リスト7 複数行の文字列 (I)
var text = "This
is
a multiline
string.";
リスト8 複数行の文字列 (P)/(1.0)/(1.1)
var text = "This\nis\na multiline\nstring.";
文字列への式の埋め込み (I)
インタープリタ版ではダブルクオテーションで囲まれた文字列のみ式の埋め込みが可能でした。Preview SDKからはダブルクオテーションだけでなく,シングルクオテーションでも式の埋め込みが可能です。
リスト9 式の埋め込み (I)
var x = 10;
System.out.println("x = {x}"); // これはOK
System.out.println('x = {x}'); // これはNG 実行すると x = {x} と出力される
リスト10 式の埋め込み (P)/(1.0)/(1.1)
var x = 10;
println("x = {x}"); // これはOK
println('x = {x}'); // これもOK
フォーマット (I)
インタープリタ版ではオブジェクトを文字列に変換する場合,式の後ろにformat asで指定しました。JavaFX 1.0からは式の前に直接フォーマットを指定します。
リスト11 フォーマット (I)
var x = 10;
System.out.println("x = {x format as <<%05d>>}");
リスト12 フォーマット (P)/(1.0)/(1.1)
var x = 10;
println("x = {%05d x}");
ついにベールを脱いだJavaFX
- 第14回 補遺:JavaFX Scriptマイグレーションガイド
- 第13回 デプロイメントとアプレット
- 第12回 国際化
- 第11回 通信と非同期処理
- 第10回 サウンドとムービー,そしてProduction Suite
- 第9回 アニメーションを用いてより魅力的に[応用編]
- 第8回 アニメーションを用いてより魅力的に[基礎編]
- 第7回 クラスを作る
- 第6回 Swingのコンポーネント
- 第5回 演算子と構文


