久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔
站長百科 | 數(shù)字化技能提升教程 數(shù)字化時代生存寶典
首頁
數(shù)字化百科
電子書
建站程序
開發(fā)
服務(wù)器
辦公軟件
開發(fā)教程
服務(wù)器教程
軟件使用教程
運營教程
熱門電子書
WordPress教程
寶塔面板教程
CSS教程
Shopify教程
導航
程序頻道
推廣頻道
網(wǎng)賺頻道
人物頻道
網(wǎng)站程序
網(wǎng)頁制作
云計算
服務(wù)器
CMS
論壇
網(wǎng)店
虛擬主機
cPanel
網(wǎng)址導航
WIKI使用導航
WIKI首頁
最新資訊
網(wǎng)站程序
站長人物
頁面分類
使用幫助
編輯測試
創(chuàng)建條目
網(wǎng)站地圖
站長百科導航
站長百科
主機偵探
IDCtalk云說
跨境電商導航
WordPress啦
站長專題
網(wǎng)站推廣
網(wǎng)站程序
網(wǎng)站賺錢
虛擬主機
cPanel
網(wǎng)址導航專題
云計算
微博營銷
虛擬主機管理系統(tǒng)
開放平臺
WIKI程序與應(yīng)用
美國十大主機
編輯“
JRuby
”
人物百科
|
營銷百科
|
網(wǎng)賺百科
|
站長工具
|
網(wǎng)站程序
|
域名主機
|
互聯(lián)網(wǎng)公司
|
分類索引
Jiaomh
(
討論
|
貢獻
)
2010年11月24日 (三) 10:27的版本
(
→?使用jprofiler監(jiān)控jruby腳本
)
(
差異
)
←上一版本
|
最后版本
(
差異
) |
下一版本→
(
差異
)
跳轉(zhuǎn)至:
導航
、?
搜索
警告:您正在編輯的是本頁面的舊版本。
如果您發(fā)布該更改,該版本后的所有更改都會丟失。
警告:
您沒有登錄。如果您做出任意編輯,您的IP地址將會公開可見。如果您
登錄
或
創(chuàng)建
一個賬戶,您的編輯將歸屬于您的用戶名,且將享受其他好處。
反垃圾檢查。
不要
加入這個!
'''JRuby''',一個采用純[[Java]]實現(xiàn)的[[Ruby]]解釋器,由JRuby團隊開發(fā)。它是一個[[自由軟件]],在CPL/GPL/LGPL三種許可協(xié)議下發(fā)布。主要開發(fā)者有Charles Nutter、Thomas Enebo、Ola Bini、Nick Sieger等。 ==簡介== 通過JRuby,你可以在[[JVM]]上直接運行[[Ruby]]程序,調(diào)用Java的類庫。很多Java編寫的Ruby IDE都是使用JRuby來解釋語法的。 [[2006年]],[[SUN]]雇傭了兩名JRuby團隊的兩名核心成員Charles Nutter和Thomas Enebo全職開發(fā)JRuby,后來ThoughtWorks也雇傭了一名JRuby項目的核心成員全職開發(fā)JRuby。 自此JRuby發(fā)展非常迅速,立刻推出一個50%性能提升的版本。最近又發(fā)布了0.9.8版,正式宣布官方支持Rails,單元測試有98%成功通過(也是因此稱作0.9.8版),現(xiàn)在開發(fā)小組全力修復剩下的2%,將會很快發(fā)布100%支持Rails的JRuby 1.0。但是目前JRuby的主要精力集中在功能實現(xiàn)上,性能還不如理想,1.0發(fā)布之后應(yīng)該就會全力解決性能問題。 ==歷史== {| border=1 |- !width=60| 版本 !width=110| 發(fā)布日期 !width=300| 改進 |- |0.9||2006-08-01||Rails支持 |- |1.1||2008-03-28||比Ruby MRI 1.8.7性能更好<br/>[[AOT模式]]與[[JIT模式]] |- |1.1.4||2008-08-28|| |- |1.2.0||2009-03-16||提供對Ruby 1.9幾乎完全支持 (包含JIT編譯器)<br/>初步的[[Android]]支持 |- |1.3.0||2009-06-03||性能提升 |- |1.4.0||2009-11-02||支持Ruby 1.8.7<br/>Ruby 1.9支持的改進 |} ==使用jprofiler監(jiān)控jruby腳本== jruby本質(zhì)上也是啟動一個jvm,然后去讀ruby[[腳本]]并解釋執(zhí)行(也可以[[編譯]]),因此jprofiler理所當然也可以去監(jiān)控jruby腳本的執(zhí)行。 ===執(zhí)行=== jruby hello.rb等價于執(zhí)行: java -xmx378m -xss1024k -djruby.home=/usr/local/jruby -djruby.lib=/usr/local/jruby/lib djruby.script=jruby org.jruby.main hello.rb這一點,你可以通過ps aux |grep jruby 看到。因此配置jprofiler就簡單了,在vm arguments加上這些參數(shù)(可以包括jruby的參數(shù)),比如本例中的vm arguments配置如下: -server -xmx378m -xss1024k -djruby.script=jruby -djruby.thread.pooling=true -djruby.jit.threshold=0 -djruby.compile.fastest=true -djruby.home=d:jrubyjruby-1.1rc2 -djruby.lib=d:jrubyjruby-1.1rc2lib main class or executable jar填上:org.jruby.main。然后就是arguments一欄填上你的腳本位置: d:rubylibhello.rb 最后,別忘了將jruby/lib目錄下的bsf.jar和jruby.jar加入class path。 可以用jprofiler去觀察gc、[[線程]]和鎖、heap等等了。 ==運行JRuby程序== JRuby的發(fā)行中帶有一個tar.gz文件。在本例中,基于[[Windows]]系統(tǒng)并使用JRuby的jruby-bin-0.9.1.tar.gz[[二進制]]發(fā)行版本以及Java SE版本1.5.0_06。在解壓這些發(fā)行文件后,會出現(xiàn)一個jruby-0.9.1文件夾,其中包含的子文件夾有:bin,docs,lib和samples。注意,你可以添加一個指向這個目錄的JRUBY_HOME[[環(huán)境變量]],然后把%JRUBY_HOME%bin(在[[UNIX]]系統(tǒng)上是$JRUBY_HOMEbin)添加到你的系統(tǒng)路徑下。JRuby發(fā)行版的bin目錄中包含一個jruby.bat文件,它用于運行JRuby解釋器程序。從命令行下運行“jruby -version”可以測試JRuby是否正確工作: C:JRubyjruby-0.9.1>jruby -version ruby 1.8.5 (0) [java] 在上面的samples目錄中,你可以找到一些展示JRuby功能的示例Ruby程序。作為第一個示例,你可以看一下下面這個java2.rb示例。這個示例包含了下列Ruby[[代碼]]: <pre>require "java" filename = "./samples/java2.rb" fr = java.io.FileReader.new filename br = java.io.BufferedReader.new fr s = br.readLine print "------ ", filename, "------n" while s puts s.to_s s = br.readLine end print "------ ", filename, " end ------n"; br.close </pre> 第一行代碼負責啟動JRuby的Java支持并且允許一個Ruby程序使用Java[[類]]。 該程序定義了一個指向文件“./samples/java2.rb”的java.io.FileReader。然后,它聲明了一個java.io.BufferedReader用于緩沖經(jīng)由FileReader讀取的[[數(shù)據(jù)]]。本文[[程序]]從這個文件中讀取所有的代碼并且把它們輸出到控制臺。下面是使用JRuby運行這個Ruby腳本的輸出結(jié)果: <pre>C:JRubyjruby-0.9.1>jruby .samplesjava2.rb ------ ./samples/java2.rb------ require "java" filename = "./samples/java2.rb" fr = java.io.FileReader.new filename br = java.io.BufferedReader.new fr s = br.readLine print "------ ", filename, "------n" while s puts s.to_s s = br.readLine end print "------ ", filename, " end ------n"; br.close ------ ./samples/java2.rb end ------ C:JRubyjruby-0.9.1></pre> 到現(xiàn)在為止,你已經(jīng)能夠使用JRuby運行一個Ruby腳本;該腳本能夠使用Java類讀取一個文件并且輸出其內(nèi)容。這是JRuby向Ruby用戶展示的一個強有力的概念。 ==在JRuby中使用Java類== JRuby提供的最重要的方法是Kernel#include_class方法。這個方法允許Ruby按如下方式使用Java類: <pre>require "java" # Include Java's FileReader include_class "java.io.FileReader" filename = "./samples/java2.rb" fr = FileReader.new filename</pre> 然而,有可能在Java類和Ruby類之間存在命名沖突問題。其中,[[字符串]]的使用就是一個例子;Java中提供了java.util.String,而Ruby中提供了Kernel::String。為了解決這個命名沖突問題,你可以在包括它時重命名這個類-通過把一個代碼塊傳遞給include_class方法調(diào)用來實現(xiàn): <pre>require "java" # Include Java's String as JString include_class("java.lang.String") { |package, name| "J" + name } s = JString.new("Hello World from JRuby!") puts s</pre> 通過定義一個包括Java類定義的Ruby模塊,你還能夠避免這個命名沖突: <pre>require "java" module JavaLang include_package "java.lang" end s = JavaLang::String.new("Hello World from JRuby!") puts s</pre> 下面提供了一個示例程序,javaHello.rb,它使用Java的HashMap來存儲三個字符串并且打印它們。這個程序中有趣的地方在于,它調(diào)用Ruby的java.util.Set(通過java.util.HashMap.keySet()方法調(diào)用返回)中的each方法。這允許把通過這個“each”方法返回的結(jié)果鍵傳遞給相應(yīng)的代碼塊,然后該代碼塊使用該鍵取得相應(yīng)的字符串,并且輸出該字符串。 <pre>require "java" module JavaLang include_package "java.lang" end include_class("java.util.HashMap") { |pkg, name| "J" + name } s = JavaLang::StringBuffer.new("Hello Java World") puts s.append(", I love JRuby") m = JHashMap.new() m.put("java", "Java") m.put("ruby", "Ruby") m.put("jruby", "JRuby") puts m m.keySet().each { |key| puts m.get(key) }</pre> 下面是當使用JRuby運行它時的輸出結(jié)果: <pre>C:\JRuby>jruby javaHello.rb Hello Java World, I love JRuby {java=Java, ruby=Ruby, jruby=JRuby} Java Ruby JRuby C:\JRuby></pre> 一個完全使用Java編寫的類似上面的程序看起來如下所示: <pre>StringBuffer s = new StringBuffer("Hello Java World"); s.append(", I love JRuby"); HashMap<String> m = new HashMap<String>(); m.put("java", "Java") m.put("ruby", "Ruby") m.put("jruby", "JRuby") for (String key: m.keySet()) { println(m.get(key)); }</pre> ==在JRuby中使用Swing== [[Swing]]是一個[[GUI]]框架,它允許開發(fā)者使用Java語言創(chuàng)建圖形化[[應(yīng)用程序]]。下面是一個示例程序,javaSwingHello.rb,它使用Java的Swing來打印一個消息: <pre>require 'java' include_class "javax.swing.JFrame" include_class "javax.swing.JLabel" frame = JFrame.new() jlabel = JLabel.new("Hello from JRuby with Swing") frame.getContentPane().add(jlabel) # frame.content_pane.add(label) frame.pack() frame.setVisible(true) frame.visible = true</pre> 從命令行如下運行這個程序: C:\JRuby>jruby javaSwingHello.rb 一個帶有文本“Hello from JRuby with Swing”的新窗口將會出現(xiàn): [[Image:Jruby1.jpg]] ==總結(jié)== 本條目提供一個JRuby語言的簡介。JRuby允許現(xiàn)有Java開發(fā)者充分利用Ruby提供的強有力和易于使用的編程特點,而Ruby開發(fā)者將能夠自由使用龐大的曾使Java廣泛地應(yīng)用于各個軟件開發(fā)領(lǐng)域的Java庫來進行開發(fā)。 ==相關(guān)條目== *[[Eclipse]] *[[J2EE]] *[[JSP]] ==參考來源== *http://zh.wikipedia.org/zh/JRuby *http://developer.51cto.com/art/200909/34170_1.htm *http://baike.baidu.com/view/828081.htm [[Category:自由軟件]] [[category:JAVA]]
摘要:
請注意,您對站長百科的所有貢獻都可能被其他貢獻者編輯,修改或刪除。如果您不希望您的文字被任意修改和再散布,請不要提交。
您同時也要向我們保證您所提交的內(nèi)容是您自己所作,或得自一個不受版權(quán)保護或相似自由的來源(參閱
Wordpress-mediawiki:版權(quán)
的細節(jié))。
未經(jīng)許可,請勿提交受版權(quán)保護的作品!
取消
編輯幫助
(在新窗口中打開)
取自“
http://kktzf.com.cn/wiki/JRuby
”