RubyFlux を使うと、Ruby で書いたコードを Java コードに変換することができます。
ほぼ README に書かれているままですが、こんな感じです。
あ、環境は mac です。
# JRubyが入ってなかったのでインストールする
# ( rbenv 使ってます)
$ rbenv install jruby-1.7.1
$ rbenv local jruby-1.7.1
# リポジトリを引っ張ってくる
$ git clone git://github.com/headius/rubyflux.git
$ cd rubyflux
# maven でパッケージを作る
# maven が入ってない場合は
# $ brew install maven
# とかで、インストールしておく
$ mvn package
# ここまでは、1回やっておけば良い
# Rubyでコード書く
$ vim fib.rb
$ cat fib.rb
fib.rb
def fib(a)
if a < 2
a
else
fib(a - 1) + fib(a - 2)
end
end
puts fib(40)
# とりあえず、JRubyで実行してみる
$ ruby fib.rb
102334155
# Javaコードを生成、コンパイルして実行する
$ rake run[fib.rb]
jruby -I target:src/main/ruby src/main/ruby/ruby_flux.rb fib.rb
javac fib.java
java fib
102334155
# 生成されたJavaのコードを見てみる
$ cat build/fib.java
build/fib.java
public class fib extends RObject {
public static void main(String[] args) {
new fib().$main();
}
public void $main() {
RObject $last = RNil;
$last = puts(fib(new RFixnum(40L)));
;
}
public RObject fib(RObject a) {
RObject $last = RNil;
if (a.$less(new RFixnum(2L)).toBoolean()) {
$last = a;
} else {
$last = fib(a.$minus(new RFixnum(1L))).$plus(
fib(a.$minus(new RFixnum(2L))));
}
$last = $last;
return $last;
}
実用性があるかどうかはまだ分かりませんが、面白いですね。