2008年2月2日土曜日

一括変換型JavaFX指導書連載第1回の要

いきなりつまずいてしまいましたが、Sun Developer Network (SDN) のTechnical Articles and Tips > JavaFX Technologyに、6箇月18回にわたって連載される一括変換型JavaFXスクリプト指導書について、主に逐次解釈型JavaFXとの相違点を中心にまとめておきたいと思います。
まずは、第1回目の「Creating Rich Internet Applications With Compiled JavaFX Script Technology」から。
1.定数値の記述方法の変更
Frameオブジェクトのbackground属性に指定する色名や、Fontオブジェクトのstyle属性に指定する書体名などの定数値は、
逐次解釈型ではそれぞれwhite、BOLDのようにクラス名なしで記述していましたが、一括変換型ではColor.WHITE、FontStyle.BOLDのようにクラス名付きで記述します。
2.手続きの記述方法の統一
Buttonオブジェクトのaction属性などに指定する戻り値なしの手続きは、
逐次解釈型ではoperation()として定義していましたが、一括変換型では戻り値なしのfunction()として定義します。operation()はfunction()に統一されます。

一括変換済みJavaFXコードが実行できるようになりました

前回の投稿で記した、一括変換済みJavaFXコードの実行時誤りが解決しました。
前回の投稿でも記しましたが、私が使用していたJDKの版数は、JDK 1.5.0_11でした。これを、
JDK 1.6.0_04(今日現在の最新版)に更新することにより、無事一括変換済みJavaFXコードを実行することができるようになりました。
いつかはJDK 6に更新しなくてはと思いながら先延ばししていたものですから、すっきりしました(どうしても、「動いているものはいじるな」という気が働いてしまうものですから)。また、NetBeansも、6.0.1日本語版に更新しなくてはと思っていたので、ちょうど良かったです(それにしても、
NetBeans 6.0.1日本語版は、なかなか公開されませんね)。
JDKを更新した後、念のため、
archive.zipを展開しなおし、一括変換も再度行いました。
なお、以前の投稿
記したように、OpenJFX逐次解釈器のbinディレクトリをPATH環境変数に設定している場合は、「OpenJFX\trunk\bin;」を「archive/openjfx-compiler/dist/bin;」に置き換えるのを忘れないでください(OpenJFX\trunk\bin;」の前に追加してもかまいませんが)。
今度のjavafx命令は、実行しても余計な報告文を表示しないので、すっきりしてます。また、私のように、
CLASSPATH環境変数に何かを設定していても、そのまま(CLASSPATHの値を空にすることなく)実行できます:-)

2008年2月1日金曜日

JavaFX一括変換器の変換誤りの原因が分かりました

前回の投稿で述べたJavaFX一括変換器の誤りの原因が分かりました。
なんと、一括変換器の不具合ではなく、コード例1のコードに誤りがありました。コード例の中ほどに、
-----------------------

MessageDialog {
                    title: "JavaFX Script Rocks!"
// This string has a newline in the source code.
message: "JavaFX Script is Simple, Elegant,
and Leverages the Power of Java
--------------------------
という記述があります。そのmessage属性の設定文で、閉じ二重引用符が抜けていることが原因でした(正しくは、「・・・ Power of Java"」と二重引用符で終わらなければならない)。
不足している二重引用符を追加すると、無事一括変換が実行されます。
ところが、実行に移ると、今度は次のような誤りが発生してしまいました。
------------------------------
Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
...
------------------------------
指導書には、JRE 5以降を使用すれば実行できると書いてあり、私は、JDK 1.5.0_11を使用しているのですが、どうもそうではないようです(まだ、Javaの版数に原因があると決まったわけではないのですが)。「一難さってまた一難」というところですが、また何か分かりましたら投稿します。
どなたか、JDK 6で試された方はいらっしゃいませんか。

一括変換型JavaFX指導書の連載が始まったのですが…

Sun Developer Network (SDN) のTechnical Articles and Tips > JavaFX Technologyで、一括変換型JavaFXスクリプトについての18回連載が開始されました。
早速、第1回目の「
Creating Rich Internet Applications With Compiled JavaFX Script Technology」を読み、勇んでJavaFX一括変換器の保管ファイルを入手し、記事に載っていたコード例1を一括変換してみました。ところが、「line 56:0 rule RBRACE failed predicate: { !BraceQuoteTracker.rightBraceLikeQuote(CUR_QUOTE_CTX) }?」という誤り文が、繰り返して表示されるだけで、一括変換できませんでした。
内容から察するに、中括弧の処理がうまくできないようですが、コード例には特に問題があるようには思えません。また、誤り文の表示が無限に繰り返される点からも、一括変換器自体に問題がありそうです。
JavaFXの一括変換器が利用できるのを心待ちにしていただけに、ちょっと残念です。
何か分かったら、また投稿します。