溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JRuby是什么

發(fā)布時(shí)間:2021-12-24 16:08:19 來源:億速云 閱讀:199 作者:iii 欄目:編程語(yǔ)言

這篇文章主要講解了“JRuby是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“JRuby是什么”吧!

JRuby是什么?

作為一個(gè)Java程序員,你不要想在產(chǎn)品中使用Ruby直到你能夠讓它和存在的Java應(yīng)用程序和類庫(kù)進(jìn)行交互,而這些程序和類庫(kù)之中能夠支持Ruby的很多種類的基本功能。那么JRuby是什么呢?JRuby,JVM下的一個(gè)開源Ruby解釋器,能夠在Java里面使用Ruby類庫(kù)。就像標(biāo)準(zhǔn)的Ruby解釋器一樣,除開使用Ruby調(diào)用本地方法(C代碼)或者Java類庫(kù)以外,Ruby代碼都能夠在JRuby里面正確執(zhí)行。

相比較于微軟的.NET平臺(tái)的公共語(yǔ)言運(yùn)行時(shí),JVM往往只能夠支持一種語(yǔ)言。但是事實(shí)上,JVM平臺(tái)不僅僅能夠支持Java,而且可以支持Python、JavaScript、Groovy、Scheme,和其他各種語(yǔ)言,這意味著有必要的時(shí)候,Ruby代碼能夠和這些語(yǔ)言很好地進(jìn)行交互。

JRuby的發(fā)展

在明白了JRuby是什么之后,讓我們看看JRuby是如何發(fā)展的。在2006年7月中旬,JRuby僅僅有一個(gè)預(yù)覽版本(0.9)。但是它迅速發(fā)展起來:一個(gè)志愿者團(tuán)隊(duì)從2005年一月開始總共發(fā)布了五個(gè)版本。JRuby通過針對(duì)標(biāo)準(zhǔn)解釋器的不斷評(píng)估測(cè)試逐漸成熟起來,而且現(xiàn)在已經(jīng)超過90%的測(cè)試都是在基本支持Ruby on Rails這個(gè)框架。

為了嘗試JRuby,保證Java SE 5 是安裝好了的而且JAVA_HOME環(huán)境變量也是設(shè)置好了的。從JRuby的工程頁(yè)面下載壓縮包然后解壓。設(shè)置JRUBY_HOME環(huán)境變量到JRuby安裝的根目錄。你可以在bin目錄里面嘗試著用jirb進(jìn)行交互。大多數(shù)場(chǎng)合,你將使用JRuby解釋器——?jiǎng)?chuàng)建一個(gè)文件將文件名作為一個(gè)參數(shù)傳遞到JRuby的bin目錄下批處理腳本。

JRuby的功能

知道了什么是JRuby,那它有什么功能呢。除了執(zhí)行先前的Ruby代碼,你仍然可以使用JRuby來構(gòu)造Java對(duì)象,調(diào)用Java方法,從一個(gè)Java類繼承。一個(gè)Ruby類能夠?qū)崿F(xiàn)Java接口——有必要的話可以在Java里面靜態(tài)調(diào)用Ruby方法。

為了從Ruby訪問Java需要初始化類庫(kù),需要以”java”命令開始。接下來用include_class方法指定需要使用的Java類,比如,include_class “javax.jms.Session”。你能夠使用include_package導(dǎo)入整個(gè)Java包到Ruby模塊里面。就像Java導(dǎo)入包的通配符語(yǔ)句一樣,盡量避免include_package使用產(chǎn)生的名稱沖突是明智的;在JRuby里,如果解釋器為了需要的類搜索所有的包也是格外不明智的。盡可能嚴(yán)格地使用include_class。

很多Java標(biāo)準(zhǔn)類的名稱和Ruby類的名稱相同。為了解決這樣的沖突,傳遞一個(gè)代碼塊到include_class函數(shù),為這個(gè)Java類返回一個(gè)新名稱,而且JRuby將使用這個(gè)名稱作為Java類的別名。(見Listing4)

Listing 4. Include a Java class with clashing name

require "java"# The next line exposes Java's String as JStringinclude_class("java.lang.String") { |pkg, name| "J" + name }s = JString.new("f")

或者,你可以創(chuàng)建一個(gè)包含java類定義的Ruby模塊,但是需要在一個(gè)隔離的名稱空間里面。例如:

Listing 5. Java module importing multiple Java classes

require "java"module JavaLang    include_package "java.lang"ends = JavaLang::String.new("a")

感謝各位的閱讀,以上就是“JRuby是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)JRuby是什么這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI