必威电竞|足球世界杯竞猜平台

jruby
來源:互聯(lián)網(wǎng)

JRuby,一個采用純Java實現(xiàn)的Ruby解釋器,由JRuby團隊開發(fā)。它是一個自由軟件,在CPL/GPL/LGPL三種許可協(xié)議下發(fā)布。主要開發(fā)者有Charles Nutter、Thomas Enebo、Ola Bini、Nick Sieger等。

軟件簡介

JRuby是面向Ruby、基于Java虛擬機(JavaOS)的一種解釋程序,它結(jié)合了Ruby的簡易性和功能強大的JVM的執(zhí)行機制,包括與Java庫全面集成。Ruby on Rails徹底加快及簡化了Web應用的開發(fā),不過它讓人覺得不夠成熟,特別是在高端企業(yè)級功能方面。另一方面,Java平臺及其虛擬機、庫和應用服務器的速度、穩(wěn)定性和功能方面卻一直在提升,現(xiàn)在已被公認為是開發(fā)高端服務器。

發(fā)展沿革

JRuby 最初由 Jan Arne Petersen 于 2001 年創(chuàng)建。在當時和隨后的幾年里,該代碼是 Ruby 1.6 C 代碼的直接移植。隨著 Ruby 1.8.6 的發(fā)布,JRuby 開始努力更新到 1.8.6 的功能和語義。自 2001 年以來,幾位貢獻者協(xié)助了該項目,導致當前(2012)核心團隊約6人。

JRuby 1.1 在 JRuby 中添加了 Just-in-時間 編譯和 Advance-of-time 編譯模式,并且在大多數(shù)情況下已經(jīng)比當時的 Ruby 1.8.7 參考實現(xiàn)更快。

JRuby 軟件包適用于大多數(shù)平臺;Fedora 9 是最早在 JRuby 1.1.1 中將其作為標準軟件包包含的軟件包之一。

2009 年 7 月,Sun Microsystems 的核心 JRuby 開發(fā)人員 Charles Oliver Nutter、Thomas Enebo 和 Nick Sieger 加入 Engine Yard,繼續(xù) JRuby 的開發(fā)。2012年5月,Nutter和Enebo離開Engine Yard,前往Red Hat開發(fā)JRuby。

JRuby 支持與 Ruby MRI 版本 1.6 到 1.9.3 的兼容性。JRuby 1.0 支持 Ruby 1.8.6,JRuby 1.4.0 將兼容性更新為 Ruby 1.8.7。JRuby 1.6.0 增加了對 Ruby 1.9.2 的同時支持,JRuby 1.7.0 使 Ruby 1.9.3 成為默認執(zhí)行模式(Ruby 1.8.7 兼容性可通過命令行標志獲得)。JRuby 9.0.0.0 增加了對 Ruby 2.2 的支持。

JRuby的當前版本(9.4.3.0)以Ruby 3.1為目標,盡管一些3.1功能仍在開發(fā)中。

Ruby on Rails

JRuby從0.9版本(2006年5月)開始能夠運行Ruby on Rails的Web框架,并能夠執(zhí)行RubyGems和WEBrick。自從 Sun 聘請了兩位首席開發(fā)人員以來,Ruby on Rails 的兼容性和速度有了很大的提高。JRuby 1.0 版本幾乎成功通過了 Rails 自己的所有測試用例。從那時起,開發(fā)者開始在生產(chǎn)環(huán)境中使用JRuby for Rails應用程序。

虛擬機協(xié)作

2008 年 2 月 27 日,Sun Microsystems 和東京大學宣布了一個聯(lián)合研究項目,該項目旨在實現(xiàn)一個能夠在一個解釋器上執(zhí)行多個 Ruby 或 JRuby 應用程序的虛擬機。

Java虛擬機上的動態(tài)調(diào)用

JSR 292 (Supporting Dynamically Typed Languages on the JavaTM Platform)提出:

Sun 開源項目 Multi Language Virtual Machine 旨在對 JSR 進行原型設計。2008年8月底,作為OpenJDK補丁開發(fā)的第一個工作原型發(fā)布。

JRuby團隊已經(jīng)在他們的代碼庫中實現(xiàn)了動態(tài)調(diào)用。動態(tài)調(diào)用最初以 1.1.5 版本以原始形式提供。 1.7.0 版本在 Java 8 版本中默認啟用了它。

發(fā)布歷史

此表僅顯示 JRuby 歷史上出現(xiàn)重要步驟的版本,除了主要修復錯誤和改進性能的版本。下表中也沒有顯示性能改進,因為每個版本通常都會帶來這樣的改進。

功能特點

JRuby是一個純Java實現(xiàn)的Ruby解釋器。通過JRuby,你可以在JavaOS上直接運行Ruby程序,調(diào)用Java的類庫。很多Java編寫的Ruby IDE都是使用JRuby來解釋語法的。2006年,SUN雇傭了兩名JRuby團隊的兩名核心成員Charles Nutter和Thomas Enebo全職開發(fā)JRuby,后來思特沃克軟件技術(shù)有限公司也雇傭了一名JRuby項目的核心成員全職開發(fā)JRuby。自此JRuby發(fā)展迅速,立刻推出一個50%性能提升的版本。最近又發(fā)布了0.9.8版,正式宣布官方支持Rails,單元測試有98%成功通過(也是因此稱作0.9.8版?),現(xiàn)在開發(fā)小組全力修復剩下的2%,將會很快發(fā)布100%支持Ruby on Rails的JRuby 1.0。但是目前JRuby的主要精力集中在功能實現(xiàn)上,性能還不如理想,1.0發(fā)布之后應該就會全力解決性能問題。

軟件性能

根據(jù)一些基準測試,JRuby 比替代品更快。由于實現(xiàn)在執(zhí)行之前加載的代碼量各不相同,因此不同的速度測量方法可能會導致對性能優(yōu)勢的有偏見的解釋。在計算基準測試時,Java 虛擬機本身加載所需的時間通常不包括在執(zhí)行時間之外。

JRuby 具有顯著的架構(gòu)優(yōu)勢,能夠利用 JavaOS 線程而不受全局解釋器鎖的約束(類似于 Rubinius),從而在進程內(nèi)實現(xiàn)完全并行,而 Ruby MRI 盡管利用了操作系統(tǒng)線程,但無法實現(xiàn)這一點。

在 2007 年測試的 Mongrel Web 服務器應用程序中,在實例化 Java 虛擬機之后,JRuby 的性能優(yōu)于 Ruby MRI 1.8。

在 2007 年的 Ruby 實現(xiàn)基準測試中,JRuby 在某些測試中比 Ruby MRI 1.8 更快,但 YARV 的性能優(yōu)于兩者。

截至 2014 年 4 月,在計算機語言基準測試游戲中,JRuby 1.7.4 通常具有與 Ruby MRI 2.1.0 相同的性能,但使用更多的內(nèi)存。

參考資料 >

生活家百科家居網(wǎng)