BeanShell その1
BeanShellはJavaと似てる文法(70%ぐらいかな)を持つスクリプト言語だ。
つまり、プログラムソースをコンパイルせずにすぐ実行できるということだ。
BeanShellはJavaで作られていて、JVM上で動く。
今までJVM上で動く言語いくつかを見てきた。
例えば、JRuby、Jython、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で書いて実行する...
もうLinuxのbashかperlで難しいスクリプトを書かなくてもいいってこと。
環境スクリプトだけでなく、自分のプログラムに組み込んで活用することもできるし、
他のいくつかのプログラムでは既に使っている。
たとえば、JMeterでテストスクリプトの作成にBeanShellが使える。
スクリプト言語でプログラムの一部を構成するのはゲーム分野では
よくあることだ。特にLuaという言語が有名。これはWorld of Warcraftの
拡張モジュールを書くのに使われている。
次回はBeanShellの簡単な使用法と文法をまとめてみようか。
参考
http://journal.mycom.co.jp/column/jsr/031/index.html