Java 中使用 JRuby

在 Ruby 中使用 Java 套件的介紹已經很多了,不過倒是很少看到有人講在 Java 中使用 JRuby 的經驗。

首先,你還是必須去下載 JRuby (binary),還有從 java.net 上的 Scripting project 下載 jsr223-engines。解開 jsr223-engines 之後,把

  1. $JRUBY_HOME/lib/jruby.jar
  2. $JRUBY_HOME/lib/asm-2.2.3.jar
  3. $JRUBY_HOME/lib/backport-util-concurrent.jar

放到 $JSR223-ENGINES_HOME/jruby/lib 目錄下,接著,再將

  • $JSR223-ENGINES_HOME/jruby/build/jruby-engine.jar
  • $JSR223-ENGINES_HOME/jruby/lib/asm-2.2.3.jar
  • $JSR223-ENGINES_HOME/jruby/lib/backport-util-concurrent.jar
  • $JSR223-ENGINES_HOME/jruby/lib/jruby.jar

加到 project 的 classpath 中,下圖為 Netbeans 的例子:

將 JRuby ScriptEngine 所需要的檔案加入 classpath

然後就可以在程式中,利用 Java 的 javax.script.ScriptEngine 來寫 ruby code:
[code lang="java"]
import javax.script.*;
...
ScriptEngineManager seMan = new ScriptEngineManager();
ScriptEngine se = seMan.getEngineByName("jruby");

try {
se.eval("3.times { puts 'hello' }");
} catch (ScriptException ex) {
ex.printStackTrace();
}
[/code]
執行這個 Java 程式 之後,你就會看到三行 "hello" 的字串了 😛

  • 覺得這樣使用感覺怪怪的.應該只是我不懂要怎麼應用吧.XD

  • 如果某些事情由 script 來作會比較快(或是已經寫好的 ruby script file),就直接拿來用了呀 😛