国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java世界的Ruby

2019-11-18 15:26:59
字體:
來源:轉載
供稿:網友

摘要:

這篇文章,我希望能夠和你一起分享我在開發java系統的時候使用Ruby的那種興奮感。我比較一下Java和Ruby的優點和缺點,而且介紹一下JRuby解釋器的支持者和反對者...

利用動態腳本編寫你的Java應用程序以及重用你的Java類庫

  自從計算機誕生以來,軟件開發就傾向于使用高級語言進行開發。從匯編,到C,到C++,再到JAVA,每一次升級就會面臨來自各界同樣的問題:太慢、而且有太多的Bug、開發者不想放棄對這些原有語言的使用。漸漸地,隨著硬件的快速發展,新的研究和開發技術大大改進了編譯器、解釋器、和虛擬機,開發者不得不向高級語言轉移,放棄他們使用的低級語言開發以提高生產力(將他們從低級語言的障礙中釋放出來以提高他們的生產力)。

  Java現在在軟件開發的很多領域里面占有主導地位,但是在這個發展過程中,動態腳本很有可能無情地取代它的地位。許多年以來,像Python、Perl、Rexx、Groovy、TCL和Ruby這樣的語言能夠在很多專業領域里面非常出色地工作,例如文件處理、自動測試、軟件構建、代碼重構、和Web圖形頁面設計——他們有著歷史性的名字“腳本語言”。而且在最近的一些年里,在大多數由Java,C++和其他編譯型計算機語言開發的大型工作里面,他們也取得了相應的進展。

  去年的時候,Ruby on Rails(RoR)Web框架使Ruby有了更進一步的發展。RoR結構利用簡單的Ruby代碼定義了一個典型的多層次Web應用程序——圖形頁面層、業務邏輯層和數據持久層,因此減小了冗余文件、樣本文件代碼、生成的源代碼以及配置文件。RoR框架能夠更加優化更加輕易地使用Ruby語言;而且Ruby,這種完善的腳本語言,相對于RoR框架來說可以在更多的領域里面使用。
  
  作為一個長期的Java開發者,我很可能堅持在一段時間里一直用Java作開發。但是我仍然保持在我開發的基于Java的系統里面使用其他的語言,而且Ruby最近顯示出來是非凡好的一種候選語言。在JRuby解釋器的幫助下,Ruby和Java一起工作得很好,包括配置、整合、和Java軟件的重用。而且在簡單學習Ruby的過程中也提高了我Java代碼的質量。使用Ruby可以讓我很輕易地完成像功能程序和元程序一樣的技術手法,這些技術手法我在Java里面都是很難實現的。學習這些Ruby里面的技術手法可以幫助我更好鑒別什么時候而且怎樣在Java開發中使用它。

  這篇文章,我希望能夠和你一起分享我在開發Java系統的時候使用Ruby的那種興奮感。我比較一下Java和Ruby的優點和缺點,而且介紹一下JRuby解釋器的支持者和反對者。而且我會向大家顯示區分Ruby和Java使用的最佳實踐以讓它們各自得到最優化的使用。我會使用一些簡單的代碼來舉例說明這個觀點,并且介紹一個消息實例來展示在Java系統里面怎樣結合使用Ruby,使其能夠更好地使用動態元程序語言的彈性、表現方式以及功能。

版權聲明:任何獲得Matrix授權的網站,轉載時請務必保留以下作者信息和鏈接
作者:silentbalanceyh;
原文:http://www.matrix.org.cn/resource/article/2006-11-24/Ruby_34bd6112-7b53-11db-99a3-db2d065e2044.Html
要害字:Ruby;JRuby

  Ruby vs. Java

  這篇文章從一個Java開發者的角度解釋了Ruby,主要是集中比較這兩種語言。像Java一樣,Ruby也是一種完全的面向對象的語言。但是這兩種語言有很大的不同。Ruby是動態類型的而且是在源代碼解釋器里面運行的,這種語言能夠像程序和功能范例一樣支持元編程。我這里不會介紹Ruby的具體語法,接下來的文章里面會廣泛地覆蓋其他各個方面。

動態類型
  Java有靜態類型。你定義每個變量的類型,接下來在編譯的過程中,假如你使用了類型錯誤的變量將會得到一個編譯時錯誤。Ruby卻相反,擁有動態類型:你不用定義函數和變量的類型,而且沒有到運行的時候不會使用類型檢測,假如你調用一個不存在的方法就會得到錯誤信息。盡管這樣,Ruby不會關心一個對象類型,僅僅看它是否在一個方法里面調用了這個對象的方法。因為這個原因,這種動態方法可以得到這樣一個dUCk類型:“假如一個事物走起來像一只鴨子(duck)而且像一只鴨子(duck)呷呷地叫,它就是一只鴨子。”

Listing1.Duck typing

class ADuck
    def quack()
        puts "quack A";
    end
end
class BDuck
    def quack()
        puts "quack B";
    end
end
# quack_it doesn't care about the type of the argument duck, as long
# as it has a method called quack. Classes A and B have no
# inheritance relationship.
def quack_it(duck)
    duck.quack
end
a = ADuck.new
b = BDuck.new
quack_it(a)
quack_it(b)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 犍为县| 资兴市| 双江| 柳州市| 保靖县| 东莞市| 介休市| 朝阳市| 巨鹿县| 开远市| 富顺县| 新蔡县| 柘荣县| 长岛县| 宜都市| 南江县| 揭西县| 云南省| 澄迈县| 兴城市| 江门市| 达拉特旗| 隆子县| 高邑县| 星子县| 孟津县| 金川县| 株洲市| 静安区| 苍山县| 巢湖市| 阜阳市| 西乌珠穆沁旗| 吉木乃县| 苏州市| 新丰县| 淮阳县| 铜川市| 榆中县| 银川市| 铜川市|