読者です 読者をやめる 読者になる 読者になる

RIFE/continuations, Spring Web Flowについて雑感

Java

 Spring Web Flowに関するこのインタビュー記事や、JavaWorldのJBoss Seamの記事を眺めたりしています。WebアプリケーションにおけるContinuationという概念は、間違いなく正しい理念・方向性であり、日本の開発現場でも、もっと理解されるべき事柄だと思います。


 一方で、Spring Web FlowやJBoss Seamといった、Javaでの継続ベースWebフレームワークが抱える問題点は、RIFEプロジェクトのGeert Bevinさんがこのエントリが的確に指摘していると思われます。この記事は、1年以上前に書かれたものですが、この議論はSpring Web Flow1.0がリリースされた現在でも通用し、かつ傾聴に値するものです。

Much to my surprise, the Spring Web Flow continuations support was totally not what I expected. Every framework that claims to support continuations, offers this on the level of the implementation language, like this RIFE example snippet:

while (guess != answer)
{
// print the guess form and wait for a response
print(template);
pause();

// obtain the guess
guess = getParameterInt("guess", -1);

....
}

The main benefit of this is that you don't have to manually declare or handle any kind of flow anymore.


 設定ファイルやアノテーションを利用して、Javaの言語仕様の枠内で実装を行っているSpring Web Flow等のフレームワークは、Geert Bevinさんが指摘するように、やはり、Continuationらしくない。
 Spring Web Flow等の完成度は高いと思うのですが、コードの内でContinuationを明確に記述しようとするRIFE/continuationsの努力は、より評価されるべきものだと思います。
 上で引用したブログエントリのコメント欄では、Spring Web FLowのKeith Donaldさんと、RIFEのGeert Bevinさんの議論が展開していますが、個人的な感覚では、Geertさんの論点の方が勝っていると感じます。


 これは日本では当てはまらない(世界的に見ても当てはまらない!?)とは思うのですが、次の指摘もなかなか興味深いです。

It seems that continuations are becoming a buzz-word, and like with all other buzz-words you should really check what is meant when people claim support for the technology.


 RIFE/continuationsに関しては、ほとんど何も知らなかったのですが、以下のスクリーンキャストが、概要を知るのに役に立ちました。