JavaFX の REPL は、まだちょっと。
JavaFX の REPL が使えるようになっています。
但し実際に使うには標準の JavaFX 1.2 SDK だけでは足りないので、以下のファイルが必要になります。
JLine は、ZIP を解凍すると、JAR が入っているので、それを CLASSPATH の通っている場所に配置するか、任意の場所に配置して CLASSPATH に通します。
例: JAVAHOME/jre/lib/ext
javafxsh は、JavaFX 1.2 SDK のインストール場所の下の bin の下に配置します。
例: c:/javafx-sdk1.2/bin
そして javafxsh を置いた場所を PATH に通しておきます。
ここまで完了したらコマンドプロンプトを起動して(Windows 以外の場合は シェルから)、javafxsh を実行すれば JavaFX Script をシェルのように実行することが出来ます。コマンド履歴も使えます。(JLine の機能)
C:\WORK>javafxsh /*fx1*/ println("Hello") Hello
行頭の /*fxX*/ はプロンプトです。(X は数字)
/*fx2*/ var a = Object{} java.lang.Object@23756 /*fx3*/ var b = Object{} java.lang.Object@f894ce /*fx4*/ isSameObject(a, b) false
途中で改行を入れて複数行にまたがらせるとエラーになってしまいます。
/*fx8*/ class Foo { fx8:1: Sorry, I was trying to understand a 'class' declaration but I got confused when I hit the end of the script.. Perhaps you are missing a '}'.
なので、一行に書かなければいけません。
/*fx23*/ class Foo { public var name; public function greet() { println("My name is {name}. Nice to meet you.") }} /*fx24*/ var foo = Foo { name: "hide1080" } fx23$Foo@1ef3a22 /*fx25*/ foo.greet() My name is hide1080. Nice to meet you.
JavaFX なのでこんなことも出来ます。(意味があるかどうかは聞かないで)
/*fx1*/ import javafx.scene.Scene /*fx2*/ import javafx.stage.Stage /*fx3*/ Stage{ title: 'REPL'; scene: Scene{width: 200.0; height: 100.0;}} javafx.stage.Stage@800aa1
表示された Stage
で、この Stage を閉じると...
/*fx4*/ C:\WORK>
javafxsh ごと終わってしまうという。
それから、Stage にもうちょっと載せてみようとしてこんなのを実行すると...
/*fx1*/ import javafx.scene.Scene /*fx2*/ import javafx.stage.Stage /*fx3*/ import javafx.scene.text.Text /*fx4*/ /*fx5*/ Stage{ title: 'REPL'; scene: Scene{width: 200.0; height: 100.0; content: Text{x: 15.0; y: 50.0; con tent: 'I love JavaFX!'; }}}
スレッドがデッドロックしますので、タスクマネージャか kill で殺してください。
でもって一通り遊んだ後の終わらせ方は FX.exit() で終わらせます。
/*fx21*/ FX.exit() C:\WORK>
単に exit や quit と叩いて試してみましたが、終わってくれませんでした。せめて exit() で終わって欲しいもんです。exit() も javafx.lang.Builtins のメソッドに含めてしまえば良いのに。
さてさて、ちょろちょっろと試してみましたが、はっきり言ってしまうと、まだまだです。
仮にこれがまともに使えるようになったとして、RIA に特化した JavaFX をこれがどう活かせることが出来るかは、未だもって見えてません。
が、遊び道具を頂戴できるのは大歓迎なので、今後の改善と拡張に期待してます。