2012-09-18 158 views
0

我想知道使用Runtime從Java類執行Ruby腳本通過使用ruby-java橋接JRuby有什麼優缺點?運行時與JRuby從Java執行Ruby腳本

運行時的JRuby

Process process = Runtime.getRuntime().exec("ruby start.rb blue_button_example_data.txt"); 
    try { 
     process.waitFor(); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
     return; 
    } 

例如例http://dior.ics.muni.cz/~makub/ruby/

我問,因爲我有一個遺留的Java系統,我們正在與具有Ruby腳本的系統集成,我們正在嘗試重用他們而不是用java重寫它們。我們想知道哪種方法最好。

謝謝!

+1

請使用jRuby,它由Nutter編寫。一手掌握我所知道的最好的ruby/java黑客。 http://blog.headius.com –

+1

調用jRuby更快(無需創建進程),並且jRuby本身據說比Ruby更快。 –

+0

感謝您回答如此之快!我上面發佈的關於jRuby例子的鏈接,它給出瞭如何安裝jruby-engine.jar的指令,但是鏈接已經斷開,你能幫我找到正確的下載鏈接嗎?謝謝! –

回答

1

正如人們提到的那樣,JRuby可能會更快,但更重要的是它可以讓您與Java更緊密地集成:您可以從JRuby調用Java代碼,反之亦然。由於基礎架構可以保持不變(您可以在Java EE應用程序服務器中部署Rails應用程序),開發人員可以逐步在兩者之間切換,這也可以實現Java和Ruby之間的平滑過渡。

有關集成的更多詳細信息,請參閱JRuby wiki

JRuby唯一的缺點是一些磁共振成像寶石不能使用,因爲他們使用本機代碼 - 儘管這不是我最近被阻止的東西。

+0

感謝您的回答。我要做的事太簡單了,我們有一個ruby腳本來解析文本文件並以json格式返回數據。我們想要的是在運行時從java執行腳本並操作這些數據。鑑於這些信息,考慮到腳本很少執行,是否真的值得做所有JRuby的安裝與使用RunTime直接執行ruby腳本。 –

+2

@AhmadAlkhawaja從Java調用ruby腳本的「代價」是向Java應用程序(即JRuby jar)添加額外的jar(如果使用Maven,則只需添加額外的依賴項)。這個「成本」不僅非常低,而且不必擔心從JVM產生新的進程。 –

+0

非常感謝! –