「JRuby」使ってみた

JRuby 使ってみたので、その時のメモ。
以下のことをやってみました。

1. jruby コマンドで .rb ファイルを実行する
2. Java から .rb ファイルを実行する
3. .rb ファイルから Java クラスを使用する

まずは、JRuby のインストールから。
以下のサイトから "jruby-bin-1.7.4.zip" をダウンロードして、適当なディレクトリに展開する。
・Downloads - JRuby.org
http://goo.gl/Fj9k3
展開したら、環境変数 PATH に "%JRUBY_HOME%\bin" を追記する。
※ %JRUBY_HOME% は展開したディレクトリ

上記でインストールは完了したので、以下、順にやっていく。

1. jruby コマンドで .rb ファイルを実行する
次のような .rb ファイル ( hello.rb ) を用意する。

puts "Hello JRuby !!"

以下のコマンドで実行すると、画面に "Hello JRuby !!" と表示される。
無事、実行できている。

jruby hello.rb
Hello JRuby !!


2. Java から .rb ファイルを実行する
用意する Java ファイルは、以下のようなもの。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

import org.jruby.Ruby;
import org.jruby.runtime.builtin.IRubyObject;

public class CallRubySample {
	public static void main(String[] args) {
		Ruby ruby = Ruby.newInstance();
		try {
			BufferedReader br = new BufferedReader(new FileReader("hello.rb"));
			StringBuffer sb = new StringBuffer();
			String line;
			while ((line = br.readLine()) != null) {
				sb.append(line);
			}
			IRubyObject irobj = ruby.evalScriptlet(sb.toString());
			System.out.println(irobj);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

hello.rb は CallRubySample.java と同じディレクトリにおいてあげてる。

クラスパス設定して、コンパイル、実行すると、以下の結果が返ってくる。
無事、実行できてますね。

javac -cp .;%JRUBY_HOME%\lib\jruby.jar Sample.java
java -cp .;%JRUBY_HOME%\lib\jruby.jar Sample
Hello JRuby !!


3. .rb ファイルから Java クラスを使用する
次のような .rb ファイル ( CallJavaSample.rb ) を用意する。

require 'java'
java_import 'Sample'

instance = Sample.new
puts instance.hello()
puts instance.hello2("uga")
puts instance.add(1, 2)

呼び出される Java クラスも用意する。
あわせてコンパイルもしておく。

public class Sample {
	public String hello() {
		return "Hello hoge !!";
	}
	
	public String hello2(String name) {
		return "Hello " + name + " !!";
	}
	
	public int add(int a, int b) {
		return a + b;
	}
}

上記の準備が終わったら、以下のコマンドで .rb ファイルを実行する。
無事、実行できているようです。

jruby CallJavaSample.rb
Hello hoge !!
Hello uga !!
3


駆け足でしたが、以上です。

[ 環境情報 ]
Windows 7
Java SE 7 Update 13
JRuby 1.7.4

広告を非表示にする