JRuby——Java和Ruby的強強聯合


什么是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,加入如下程序:

View Code
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,輸入如下內容:

View Code
 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官方網站上下載

http://netbeans.org/

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文件中輸入:

View Code
 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,就可以看到運行的結果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM