ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

ScalaコミュのXML/JSONベースでJavaFXとの連携できると幸せ?

  • mixiチェック
  • このエントリーをはてなブックマークに追加
必要があって、web経由で数千行のデータをやり取りするアプリをscala(lift)で場当たり的に書きました。
動作はしているのですが、やはり、このくらいのデータとなると非同期でやり取りをしたくなります(例、データを試行錯誤して作成している際に、先頭100行を取得し、いけてそうだったら残りのデータを取得する)。
となると、AJAX/FLASHでとなりそうですが、ちょっと悔しいので、ブラウザ側もscalaで書けないかなと思ってます。となると、swing/appletでもいいのですが、JavaFXもちょっと気になる、と。

※javaでJavaFXを書き直している人がいました。
http://www.hakkaku.net/hakkaker_blog/20090225-394

ただ、JavaFXのこともちょっと見てみると、
■変数はvar、定数はdefで宣言するコンパイル言語
参考 このあたり
http://gihyo.jp/dev/serial/01/javafx/0003?page=3
■JSONで宣言的にUIを宣言できる
例: 
Stage {
title: "Application title"
width: 250
height: 80
scene: Scene {
content: Text {
font : Font {
size : 16
}
x: 10, y: 30
content: "日本語表示"
}
}
}
 ※ 現状、JavaFX on windowsでは文字コードs-jisでセーブして
 はじめて日本語が出る模様

■そこそこまともなREPLを用意しようとしているらしい
■androidなどJavaME準拠してないものでも動作させる予定らしい
■HTTP経由ではJSON/XML(例、ATOM)でデータをやり取り
などけっこう頑張ってます。

おそらく頑張れば、JavaFXのクラスをインポートしたUI定義を、
scalaらしく書くこともできるようなるのでしょうが、
JavaFX自体の仕様がいまだけっこう変動しているいることもあり、

直近、scala側では
■サーブレット及び裏方を記述
 ※JSON/XMLを渡せるようにする
■クライアントで動くヘルパメソッドも(可能な限り)scalaで記述
 ※アプレットをサーバ側で引数をつけて生成できた・・・はず

JavaFXで
■ブラウザ等に表示されるUIを生成

できるようになるとまずは幸せなのかなと思ってます。

・・・すみません、全くの思いつきを書いてしまったのですが、
けいすけさんのDB Flavorをちょっと使わせてもらったので、
何かフロント部分を作ってみたいと思ってますので、
時間があったら試してみるやもしれません。
・・・やるとしてもGW中くらいかな。。

このあたり、興味ある方、いらっしゃいますでしょうか?

コメント(2)

Scalaトピックにややお門違いの記述してしまいましたが、、
さらにセルフレスです。
JavaFX、文法をつらつら眺めてみるに、やばい、
クライアント側のUI記述言語として、けっこういけてるかも。

ScalaでいうListのような位置づけに、
JavaFXは拡張配列的(?)なシーケンスがあるようで、
拡張for,insert,reverseなど、Listもどきの操作が行えるなどなど。

OCamlな方のどなたかが、
関数型言語はEmacsなどのエディタを作るまでにとどめるべきで、
UIは、varが必要とされる場面が多いため、手続き型言語の方が書きやすい
うんぬんい書いてたことを思い出しました。
/*
*蛇足ついでに。。以下のように書くとjavafxcを通って実行できます。
*出典 http://gihyo.jp/dev/serial/01/javafx/0005?page=4
*/

def values = [0..10];

for (value: Integer in values) {
var str = if (value <10) value else "finish.";
println(str);
}

def odds = for (value: Integer in [0..10]) {
value * 2;
}
println(odds);

//
println("以下の2つは同等の実行結果")
for (x in [0..2], y in [0..1]) {
println("x: {x} y: {y}");
}
for (x in [0..2]) {
for (y in [0..1]) {
println("x: {x} y: {y}");
}
}

//ここまで似た書き方できるならば、scala-likeモードを用意して欲しいと思ってしまう!?

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Scala 更新情報

Scalaのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。