BeanShell その1

BeanShellはJavaと似てる文法(70%ぐらいかな)を持つスクリプト言語だ。

つまり、プログラムソースをコンパイルせずにすぐ実行できるということだ。

BeanShellはJavaで作られていて、JVM上で動く。

 

今までJVM上で動く言語いくつかを見てきた。

例えば、JRubyJython、Scala、Groovy、Closureなど。。

これらの言語はJava文法の冗長さを減らし、言語の文法を表現豊かにし、

プログラムの作成を容易にしている。

それに並行処理機能など、言語特有の機能を付加したのもある。

 

真面目に勉強したScala言語を(今は思い出さないが -_-)振り返ってみると、

本当にJavaより少ない行数で多くのことができた。

 

しかし、問題は新しい文法を学ばなければならないということだ。

このコストは、われらのような会社員には決して軽いものではない。

われらには、飲酒、ゲーム、カラオケ、といった健全な文化を営む時間も

必要なのではないか。

 

Java言語文法をほぼそのまま活用できるBeanShellはこういう点で

格別なものだと思う。

 

もちろん、上記に並べた言語はスクリプトはもちろん、コンパイルもできるし、

メジャー級の機能を持っている。

それに比べるとBeanShellは小さいスクリプト言語に過ぎないので、

完全比較は無理だ。

 

しかし、JavaリソースをJavaと似てる文法でスクリプト的に活用するという

側面から見ると、断然BeanShellが有利ではないかと思う。

なぜなら、文法がJavaと似ていて、すごく簡単だからだ。

関数宣言とか、いくつか違う文法はあるが、そんなに難しくない。

 

BeanShellのBeanはJavaを特徴づけているだろう。

後ろのShellはスクリプトを強調しているだろう。

まさにJavaによるスクリプト。

 

ちなみにスクリプトファイル形態で実行できるだけでなく、

1:1のコンソールモードも持っている。

例えば、

import java.io.FileReader;

f = new FileReader("test.txt");

 

のようなソースを1行1行ずつ実行できる。

 

このBeanShellはJava標準の一つにもなった。

「JSR 274: The BeanShell Scripting Language」

という題名で...

 

次期JDKに標準で組み込まれるとすごく便利になりそうだ。

(ただし、組み込まれるかどうかは不明)

環境に必要なスクリプトをJavaで書いて実行する...

もうLinuxbashperlで難しいスクリプトを書かなくてもいいってこと。

 

環境スクリプトだけでなく、自分のプログラムに組み込んで活用することもできるし、

他のいくつかのプログラムでは既に使っている。

たとえば、JMeterでテストスクリプトの作成にBeanShellが使える。

 

スクリプト言語でプログラムの一部を構成するのはゲーム分野では

よくあることだ。特にLuaという言語が有名。これはWorld  of Warcraft

拡張モジュールを書くのに使われている。

 

次回はBeanShellの簡単な使用法と文法をまとめてみようか。

 

参考

http://www.beanshell.org/

http://journal.mycom.co.jp/column/jsr/031/index.html