ユーザ用ツール

サイト用ツール


jruby

JRuby

JRubyはJavaで書かれたRubyインタプリタ。通常のRuby言語としての機能に加えて、Javaから呼び出したり、JavaライブラリをRubyスクリプトで利用できる。

gem

jrubyにはgemも付属しているが、パス設定によってはgemコマンドを呼ぶとMatzRubyのものが呼ばれてしまう。

$ jruby -S gem search hogehoge

とするとjrubyのgemが呼ばれる。

もしくは jgem コマンドを使う。

$ jgem 

最近は、rvmやpikなとのツールでruby環境を切り替えて使うのが常識

Javaクラスを利用する

JavaのHashMapを呼び出す。ハッシュへの追加、取り出しもRuby風の記述が可能になっている。

include Java
include_class "java.util.HashMap"
 
h = HashMap.new
h.put "a", "hoge"
h.put "b", 4
h["c"] = "fuga"
 
p h.get("a")
p h["b"]
p h.get("c")
p h.get("d")

自作クラスを使ってみる

自作クラスでも使い方は同じ。Javaクラスの設置場所は

  • カレントディレクトリ
  • CLASS_PATH環境変数で示されているクラスパスのどこか
  • JRuby HOMEのlib
public class JRubyTest {
 
   private String hoge;
 
   public String getHoge() {
      return hoge;
   }
 
   public void setHoge(String hoge) {
      this.hoge = hoge;
   }
 
   public String toString() {
      return "jruby test" + this.hoge;
   }
 
   public void appendString(String str) {
      if (this.hoge == null) {
         setHoge(str);
      } else {
         this.hoge += str;
      }
   }
}

Ruby側で呼び出す。いくつかのメソッド呼び出しがRuby風の記述になっている点に注意

  • コンストラクタ
  • ゲッター
  • セッター
  • 複数単語からなるメソッド名(Java:大文字区切り、Ruby:アンダースコア区切り)
  • toStringメソッド
include Java
include_class "JRubyTest"
j = JRubyTest.new
j.hoge = "hoge?"
p j.hoge
 
j.append_string("fuga?")
p j.to_s
jruby.txt · 最終更新: 2011/04/20 01:27 by nullpon