Java の資産を使えるスクリプト言語

Javaは今のところ、「Javaで書いたライブラリーを他の言語で使う」という風には進化していない(JPLなどの試みはあったが)。むしろJythonにしろGroovyにしろ、「javaで他の言語を実装する」という方向に行っている。これはある意味javaをもってCに換えようという動きなのだが、これではPythonはとにかく、PerlRubyでは使いにくい。CであればSWIGもあるし、SWIGでなくともCで書かれたライブラリーにアクセスするのは容易である。

えーと、Perl Compatible ではないけど、似た文法を持った Sleep という言語があるし、Ruby ならそのまんま JRuby がある。
というより、Java の資産を直に使える言語処理系って結構多い。とりあえず列挙してみる。

他にもあるだろうけど、とりあえずメジャーなところはこんなもんかな。あと、単体で使うようなものでないけど、JellyとかJexlなんてのもあるし、JSP で使う EL (Expression Language) も一応言語といえば言語か。
で、これらの言語から Java の資産にアクセスしようとしたら、単に CLASSPATH を設定するだけなので、アクセスのしやすさで言えば SWIG より written in Java な処理系のほうが上じゃないかと思う。SWIG のようなインターフェース定義ファイルも必要ないし。何より、ライブラリのインストールが jar ファイルをダウンロードして CLASSPATH を設定するだけってのがお手軽。

おまけ

本題とは関係ないですが

実は「C言語による」の方も、アルゴリズムの実装事典としては評価しても、コーディングスタイルの点ではあまり評価できなかった。main(){}にアルゴリズムをくるむという点は、そのまま移してそのまま動くという点ではよくても、使い回すという点では非常に使いづらい。「C言語による」が出た1991年というのは、まだインターネットはなく、パソコン通信の世界であり、このスタイルは見苦しくてもやむ得ないと思っていたが、それから十二支一周の2003年に出た本がこれでは泣けてくる。

すみません。アルゴリズムのモジュール化とインターネット、パソコン通信がどう関連するのかさっぱり分かりません。

*1:Java で書かれた Scheme 処理系は他にもたくさんある