Bean Scripting Framework

Ruby 勉強会にて、JRuby が Java と統合するために Bean Scripting Framework (BSF) というものを利用していると聞きかじったのでメモ。

BSF は Jakarta プロジェクトの成果物で、Java からスクリプトエンジンを利用する際のインターフェイスを定めたもののようです。JRuby (Ruby) のほかに、Rhino (JavaScript) や Jython (Python), Jacl (Tcl), Groovy などが使える模様。

BSF のコード例は Java技術最前線 - Java技術最前線11月のお題「Java関連スクリプト言語」第2回(全4回):ITpro の後半に乗っています。文字列でスクリプトのソースを渡して、評価、という手順ですね。

Java SE 6 では似たような形でスクリプト言語へのインターフェイスが最初から組み込まれる予定のようです。JSR としては、JSR 223: Scripting for the Java Platform ですね。日本語の文章ではJava SE 6 じゃじゃ馬ならし Scripting が詳しいです。

Groovy が入るのかと思っていたんですが、Rhino が標準になりそうな様子なんですね。JavaScript が Java の公式スクリプト言語になるというのも、なんだか予定調和的で面白いものです。

Rhino は pure Java な JavaScript 処理系なのですが、IE や Firefox の現在の JavaScript インタープリタの性能を凌駕しているとのことでした(ソース: Ruby勉強会での西本さんのコメント)。

Java がスクリプト言語を取り込もうとしているのは、サーバサイドの言語として PHP がシェアを伸ばしているからだ、という話も聞きますが、そもそも PHP が使われるようになったのは適材適所なんじゃないかという印象も受けます。フレームワークはきちんとした言語で書いて、軽く済ませたい部分はスクリプト言語に任せる、というスタイルは今後ますます増えていくのかもしれませんね。

JavaScript は筋が悪くないとのもっぱらのうわさですし、言語仕様の深いところも勉強してみないとなぁ、と思う今日この頃。

各種スクリプト言語の性能評価

なにはともあれ、JRuby がダントツに遅いらしい