什么是JRuby
JRuby是一個純Java實現的Ruby解釋器。通過JRuby,你可以在JVM上直接運行Ruby程序,調用Java的類庫。很多Java編寫的Ruby IDE都是使用JRuby來解釋語法的。
JRuby,JVM下的一個開源Ruby解釋器,能夠在Java里面使用Ruby類庫。就像標准的Ruby解釋器一樣,除開使用Ruby調用本地方法(C代碼)或者Java類庫以外,Ruby代碼都能夠在JRuby里面正確執行。
為什么JRuby
除了適合用來開發面向Internet 的Web 應用之外,還有很多公司將JRuby 看作是使Rails 進入企業應用的關鍵技術,例如ThoughtWorks。JRuby 允許Rails 應用部署在流行的Java 應用服務器中,很多企業早已建立了這樣的運行環境,但因為某些原因無法為運行Rails 應用建立一個全新的運行環境。任何技術的流行,深究起來,其背后都有經濟上的原因。Rails 能夠達到5 倍於SSH 的開發效率,使它成為了一個幾乎無法被抗拒的選擇。Rails 進入企業應用,只是一個時間問題,它的前景十分光明。
下載和安裝JRuby
到JRuby的官方網站:
http://jruby.org/
圖:JRuby官方網站截圖
下載最新版本的JRuby。這里邊有windows版本和linux還有macos版本的,你可以根據你自己的環境下載相應的版本。
下載完成之后解壓縮,然后到解壓后的目錄,我們下文中提到的目錄<JRUBY_HOME>就是默認的解壓根目錄。
在<JRUBY_HOME>下執行bin\jruby -v
如果出現如下提示則表示成功運行:
圖:驗證JRuby是否成功運行
運行第一個JRuby程序
在<JRUBY_HOME>下的samples目錄下新建文件random.rb,加入如下程序:

1 require 'java' 2 include_class 'java.util.Random' 3 r = Random.new(123) 4 puts "Some random number #{r.nextInt % 10}" 5 r.seed = 456 6 puts "Another random number #{r.nextInt % 10}"
然后執行如下命令:
圖:運行JRuby random.rb
就會得到對應的結果。
其中Java調用JRuby和JRuby調用Java的例子可以在下面的鏈接中看到,寫的很詳細:
https://github.com/jruby/jruby/wiki/JRubyAndJavaCodeExamples
在JRuby運行Swing
在上面的例子運行成功后,我們接下來運行swing的例子,在sample目錄下新建文件swing2.rb,輸入如下內容:

1 # Import Java packages 2 include Java 3 4 import javax.swing.JFrame 5 6 frame = JFrame.new("Hello Swing") 7 button = javax.swing.JButton.new("Klick Me!") 8 button.add_action_listener do |evt| 9 javax.swing.JOptionPane.showMessageDialog(nil, <<EOS) 10 <html>Hello from <b><u>JRuby</u></b>.<br> 11 Button '#{evt.getActionCommand()}' clicked. 12 EOS 13 end 14 15 # Add the button to the frame 16 frame.get_content_pane.add(button) 17 18 # Show frame 19 frame.set_default_close_operation(JFrame::EXIT_ON_CLOSE) 20 frame.pack 21 frame.visible = true
然后執行bin\jruby samples\swing2.rb
我們可以看到調用的Swing程序:
圖:JRuby調用Swing程序
使用netbeans開發JRuby
到netbeans官方網站上下載
netbeans,因為最新版本安裝這個插件有問題,所以這里下載的是netbeans7.1.1。
安裝完成后到netbeans選擇菜單“工具->插件”,將出現如下界面:
圖:netbeans安裝Ruby插件的界面
然后按照這篇文章中的描述,下載對應的文件,選擇安裝:
http://blog.enebo.com/2012/01/workaround-for-ruby-support-on-netbeans.html。
然后點擊“工具->Ruby平台”,配置Ruby環境,因為我們選用的是JRuby,所以這里配置解析器為JRuby。
圖:JRuby平台的環境配置
新建一個ruby應用
圖:新建Ruby應用
然后選擇工作空間和編譯環境:
圖:選擇工程空間和編譯環境
點擊完成,然后在生成的main.rb文件中輸入:

1 class ADuck 2 def quack() 3 puts "quack A"; 4 end 5 end 6 7 class BDuck 8 def quack() 9 puts "quack B"; 10 end 11 end 12 13 # quack_it doesn't care about the type of the argument duck, as long 14 # as it has a method called quack. Classes A and B have no 15 # inheritance relationship. 16 def quack_it(duck) 17 duck.quack 18 end 19 20 a = ADuck.new 21 b = BDuck.new 22 quack_it(a) 23 quack_it(b)
點擊運行或者按F6,就可以看到運行的結果。