Java の資産を使えるスクリプト言語
Javaは今のところ、「Javaで書いたライブラリーを他の言語で使う」という風には進化していない(JPLなどの試みはあったが)。むしろJythonにしろGroovyにしろ、「javaで他の言語を実装する」という方向に行っている。これはある意味javaをもってCに換えようという動きなのだが、これではPythonはとにかく、PerlやRubyでは使いにくい。CであればSWIGもあるし、SWIGでなくともCで書かれたライブラリーにアクセスするのは容易である。
えーと、Perl Compatible ではないけど、似た文法を持った Sleep という言語があるし、Ruby ならそのまんま JRuby がある。
というより、Java の資産を直に使える言語処理系って結構多い。とりあえず列挙してみる。
- Groovy(original)
- Jython(Python)
- JRuby(Ruby)
- Sleep(Perl + Objective-C)
- Pnuts(original)
- Rhino(JavaScript)
- JACL(TCL)
- NetRexx(Rexx)
- JudoScript(original)
- BeanShell(original)
- Quercus(PHP)
- Kawa(Scheme)*1
他にもあるだろうけど、とりあえずメジャーなところはこんなもんかな。あと、単体で使うようなものでないけど、JellyとかJexlなんてのもあるし、JSP で使う EL (Expression Language) も一応言語といえば言語か。
で、これらの言語から Java の資産にアクセスしようとしたら、単に CLASSPATH を設定するだけなので、アクセスのしやすさで言えば SWIG より written in Java な処理系のほうが上じゃないかと思う。SWIG のようなインターフェース定義ファイルも必要ないし。何より、ライブラリのインストールが jar ファイルをダウンロードして CLASSPATH を設定するだけってのがお手軽。