Help us understand the problem. What is going on with this article?

RubyFlux を使って Ruby から Java へコードを変換する

More than 5 years have passed since last update.

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;
    }

実用性があるかどうかはまだ分かりませんが、面白いですね。

tyabe
Rubyが好きなソフトウェアエンジニア。Shibuya.rb
storesjp
インターネットビジネスの企画・開発・運営、マーケティング、プロモーション、コンテンツの企画・制作
https://about.stores.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away