[ロ]Java界隈の現状をふらふらと

このエントリーをはてなブックマークに追加
はてなブックマーク - [ロ]Java界隈の現状をふらふらと
Facebook にシェア
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`tweetmeme` not found]

[JAVA]Struts Flowに派生してJava界隈をふらふら調べてみた。結構楽しいですよね、こういうの調べていくだけでも。
僕の思考回路と、調べた結果を書き出して見ます。
[JAVA][開発][WebFW]Web用FW はたしかによさそうな予感はしたんだけど、しっくり着ていなかった。しっくりこなかったのは、

show(screen1);// Web的には screen1 画面へ遷移
// ↑ screen1 画面で何らかのイベントが発生し、screen1 画面を閉じるまで処理は進まない

という部分で、クライアントサイドでボタンとか押してもらえなかったら処理がサーバサイドで進まないのでスレッドずっと保持してなくちゃいけないじゃん。途中でブラウザ閉じちゃったり、放置された場合の解決ってどうするんだろう?コストでかいなぁとか感じてたん。


で、今回彼が見つけてきたStruts Flowを漁ってみたら、「こう解決するのかっ!」ってのが理解できた予感。
Struts Flowの説明で

Struts Flow is a port of Cocoon’s Control Flow to Struts to allow complex workflow, like multi-form wizards, to be easily implemented using continuations-capable JavaScript.
Struts FlowはCocoonのControl Flowの一部で、Strutsを複雑なワークフローに対応させます。continuations-capableなJavaScriptを使ってマルチフォームウィザードのようなものを簡単に実装できるようにします。

と書いてあることから、CocoonのControl Flowというのが基本となっていて、キーワードはcontinuationsという考え方っぽい。
んでは、CocoonnoのControl Flowで言っている、continuationsってなんなのか。→What are continuations?
日本語訳が、こちらにあります。
ほぉ、かなり興味深い。オブジェクトの実行状態が、continuationsオブジェクトに格納できると。
だから、continuationsオブジェクトで状態を取っておけば、スレッドを保持しておくのではなく、continuationsオブジェクトに状態を保持し、次に来たときにここから再開すればいいんだ。
おおー、すばらしいね。
NetPenguin曰く『脳内フレームワーク、まだ、勝てるかも。』とのことなので、ぜひかっていただきたいっす。

Popular Posts:

“[ロ]Java界隈の現状をふらふらと” への2件の返信

  1. ちなみに、Struts Flow というか、Cocoon の Control Flow はスクリプト言語を前提としているから、 Continuations オブジェクトとして実行状態の保持と再開が可能になっていると思われます。
    これを Java で実行となると、JVM の領域になってきます。実行していたスレッドのプログラムカウンタ(実行中の番地)や、スタックなどスレッドに結びつくコンテキストの保存と復帰が必要になります。
    この方法は考えたのですが、Java で実現しようとするとかなり大変というかムリポなんで、スレッドを消費する方法で考えを留めています。
    #そもそもスレッドの保持って、それほどまでに高コストなのだろうか?という疑問も。
    上記以外の方法として、コンパイル後の Java クラスファイルをさらに処理して、wait が発生する部分毎に別メソッドに分けてしまうようなツールというかプリプロセッサ?を作ってしまうというのも考えました。が、美しくないのと、バグが入りそうな気もするので却下。
    今のところはスレッドを保持する方法で、いずれスクリプトを実行する方法に切り替えて continuations オブジェクトを保持する方法にすればいいかなと・・・
    まず、その前に物を作れって話も(汗

  2. あ、ちなみに
    『途中でブラウザ閉じちゃったり、放置された場合の解決ってどうするんだろう?』
    ですが、HttpSession が消えるタイミングで、そのセッションに紐付けていたスレッドも止めて破棄します。
    なので、想定としてはセッションの数だけスレッドが存在している状態になり、放置されてゾンビ化したスレッドは無いと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*