5/15/2007

jRuby 代表的意義

最近看到這篇文章,裡面有一個問題

請問在JVM上跑Rails要幹嘛?

我在這邊講一下為什麼我對 jRuby 的期望那麼深。




我們看一下一段 code ,這是從 Ruby Cookbook 抓下來的範例

#!/usr/bin/env jruby
# random.jrb
require 'java'
include_class 'java.util.Random'
r = Random.new(123)
puts "Some random number #{r.nextInt % 10}"
r.seed = 456
puts "Another random number #{r.nextInt % 10}"

啟動的時候會出現這樣的結果

$ jruby random.jrb
Some random number 9
Another random number 0

我們仔細看到這段 jruby code,他是完完全全的 Ruby 程式,但是他使用 Random Number lib 是使用 JAVA lib。這代表 jRuby 讓 Ruby 可以隨意呼叫 Java Lib

Ruby 被 chanllenge 的其中一個地方就是「Third Party Lib 不足」,這個通常需要時間跟社群的持續的累積,但是如果直接使用 Java Lib,那不就是一個「別重新造輪子」的最好例子嗎?jRuby 不也就很直接的解決掉 Ruby Third Party Lib 不足的問題嗎?當然啦,jRuby 還有很多好處,但是最直接,也是最令人興奮的好處就是可以直接使用 Java Lib。

technorati tags:


7 則留言:

winson 提到...

這好處我是知道的,只是這樣一來把事情搞的太複雜了。

如果只是要呼叫外部函式庫,應該不至於非要跑JVM不可吧?

喔,好像愈描愈黑了,我的意思是說,對我來說沒有非這樣子做不可的理由。

我就是喜歡Ruby/Rails的精簡,非這樣不可的話,我乖乖回去寫Java好了。

thegiive 提到...

不會太複雜呀~~
想用 jRuby 好處的人就用 jRuby
如果怕太複雜的人就用 Ruby
這是多了一個選擇
而且是一個好選擇,絕對是好事

ericsk 提到...

其實我覺得用 JVM 跑 Ruby 就是這些已經投入在 Java Application Server 的廠商現在最想投資的事情,因為這樣就可以直接 serve 這些 RoR projects,說不定還可以用這些 AS 來強化原本令人詬病的 scalability 的問題吧 :P

Plumm 提到...

Ruby 的外部函式不會不足吧??
一些我在碰的冷門語言 如 Common Lisp, D, Haskell 都希望能有 Ruby 程度的外部函式.

thegiive 提到...

相信我,已 enterprise 的標準來說,Ruby Third Party Lib 還是相當不夠

Plumm 提到...

Enterprise 的要求這咩嚴呀, 這樣沒幾個語言可以活, 實在是蠻可惜的...

話說可以自行 port 就是了, 只是比較累一點 @@

Charles Bo Chin Tsai 提到...

Ruby 簡潔的語法來呼叫java library
似乎是沒有什麼損失的,反而讓java
的基本型態傳出的資料直接變成jruby
的"物件",這不是一舉兩得嗎?
而且也沒有很複雜,因為這等同於是
同時支援兩個lib 跑jvm的好處是不
用再多裝ruby 直譯器了 java好用的
thread library 也能使用