JavaFXは触れば触るほどメリットが見えなくなる

JavaFX scriptってスクリプト言語だから軽い…とおもわせといてJavaとかわらずお堅い。しかも型を省略できることから非常にやっかいなことになる。

たとえば以下のコードはコンパイルエラーになる。

var a = 123;

a = 1.23;

最初整数値で宣言しているのでInteger型になっていて、その後Number(Float)に入れようとしているのだから当たり前といえば当たり前だけれども、これ他のスクリプト言語やってる人には受け入れがたいと思う。

以下のように書くとコンパイルエラーは出ない。

var a :java.lang.Number = 123;

a = 1.23;

でもJavaFXのプリミティブ型であるNumber型と紛らわしい。そもそもJavaに変換された型がなにかを想像している時点でやばすぎる。

Java触れる人ならこれがなんでこういう挙動するのかわかるとは思うけど、そうでない人、デザイナにこれを理解して触れというのは無理。そもそもJava理解しているならJava SEやJava MEで普通に作ったほうが環境も整っており楽そうだ。


軽く触ってみた感じだとハッシュもないみたい。可変長配列も後ろに追加するのにこんな感じ。

var a = [];
insert "a" into a;
insert "b" into a;

println(a);

え゛!

なにこれ。COBOLをやりたいの?わけわかんねー。

うーん。新しい言語作る意味あったの?というのが正直な意見。switchもないみたいだし、プラスで文字列の連結も出来ないし。



Java SEとJava MEと同じく動くのがJavaFXの魅力なんだろうけど、そうするとjavafxパッケージしか使えない。正直これだけでは音楽もまともに鳴らすことが出来ず、Java SEからみたらとんでもない代物。Java MEでも動くということはJava MEにあわせるというのと同じか。そうなるとIDE込みではGUIもJavaSEにくらべて作りにくいし、言語本体もJavaにくらべてサポートが貧弱すぎる。NetBeansJavaFXサポート見ても整形機能がないし、補完も聞かない場所が非常に多い。時間が解決するだろうか?

コンパイルすると普通にJavaアプリ(ブートが違うけど)やアプレットとして動くため、Javaのコードを呼び出せる。ロジックはJavaできっちりつくって、フロントエンドは非常に便利なbindを利用してうまくやる…とよさそうなんだけれども、まだまだだめそう。nullと空文字がイコールだとJavaのライブラリで不具合が出るし、やはりJavaFXJavaFX scriptだけでおさまっていないとダメなんだなぁと思った。

言語的にはJSONベースで階層構造を作るという非常に面白いことやってるだけに残念。Javaのランタイムが必要だったら普通にJava SEで作るほうがはるかに簡単に細かいものも出来ると考えるよなぁ。GUIエディタもないし、アニメーションのコードとか見てるとユーザーのターゲットは技術者なんだなぁとおもったり。

Java MEとJava SEと同一のアプリが作れるというのもメリットがない。PCで動作するアプリと形態で動作するアプリは違いすぎる。そこにメリットは存在しない。事実上Java ME専用だよね?そのわりにはJava SEじゃないと動かないコンポーネントとかも結構ある。完全に専用にするかMIDPにもっと力を入れたほうがいいような。

ランタイムとしてJavaVMが必要なのもどうだろ。ランタイムが必要としない純正GWTみたいなのがあったほうがよかったと思う。

いろいろと触れば触るほど出来ないこと、やろうとしているのに思考をストップされる仕様が大量に出てきて非常に困る。Java SEまぜると余計に面倒な感じになって結局Java SEだけで開発したほうが楽になってしまうという状態でJavaFXのメリットも消えるというのは、ほんといいアイディアがもりこんであるだけにもったいない。

多少触れば足りないところがいくつもあろうが1点のよいところがあればよい未来を想像する、というのが大概の言語、環境なんだけど、JavaFXは何をしたいのかが見えてこない不思議な言語/環境。AdobeやMSは安心してますね。

わかりやすくまとめると

  • javafxパッケージを使えばJava SE、Java MEともに動く
  • ように見えてcommonのみが動く
  • Java SEのアプリとしては非常に機能がすくなく、やれることがない
  • Java SEのコードを呼び出すことも可能
  • だがそれならばGUIサウンドJava SEでやったほうが細かいことが出来る
  • 上にJava SEのみで開発したほうが開発環境も整っており簡単
  • 結局JavaVM必要
  • 言語的にメリットが見えない
  • JSONっぽい記述は面白い

たぶん、もっと触ればよいところが見えてくるんだろうからしばらく触り続けてみる。5年後くらいにはよい点が見つかるかもしれない。これ使い物になるためには今後かなりのてこ入れが必要だよね。同じ労力をかけるならFlashを蹴散らしてアプレット復権するくらいはいけそうだけれども。

どうすんのコレ…。