Java 続き、というか Perl だけど。
CPAN で Java で検索したら、 Inline::Java というモジュールを発見。
my $alu = new alu() ; print "9 + 16 = ", $alu->add(9, 16), "\n"; print "9 - 16 = ", $alu->subtract(9, 16), "\n"; use Inline Java => <<'END_OF_JAVA_CODE'; class alu { public alu(){ } public int add(int i, int j){ return i + j ; } public int subtract(int i, int j){ return i - j ; } } END_OF_JAVA_CODE
こんなふうに、Java で class を書いて Perl から使えるという。すげえ。
実行には java の実行環境が必要。実行時に Java VM が起動して何やかややる、という、とてもオーバーヘッドの大きそうな仕掛けではある。 JNI (Java Native Interface) を使ってパフォーマンスを上げることも (Win32 と Solaris では) 可能らしい。
素のCGIでは、Hello World 程度のは動作。重いけど。 やはり CGI として動作させたらオーバーヘッドが大きすぎるけど、もしや mod_perl で動作できれば・・・ と淡い期待をもって実験してみるが、だめ。上記のコードでいうと、
my $alu = new alu();
のところで、
Can't locate object method "new" via package "alu"
とエラーになる。パッケージ(alu)が mod_perl 側に認識できていないような、そんな感じ。 mod_perl の仕組みを考えれば仕方ないような気もするが、ちょっと残念。
まあ実際、これで作ったシステムは運用したくないんだけど。かなり変態的だし。