rubyjava
Ⅰ Ruby和Java有什麼關系么
在Ruby中,一切皆是對象。
下面舉一個例子來更直觀地說明Ruby語言的這一特點。
在Java中,求一個數的絕對值的代碼如下。 int c = Math.abs(-20); 而在Ruby語言中,一切皆是對象,也就是說「-20」這個數也是一個對象,因此,求一個數絕對值的Ruby代碼形式如下。 c = -20.abs 這樣的代碼編寫方式是不是更形象一些呢?
Rails 框架是一個更符合實際需要而且更高效的Web開發框架,Rails結合了PHP體系的優點(快速開發)和Java體系的優點(程序規整)。Rails是一個全棧式的MVC框架,換句話說,通過Rails可以實現MVC模式中的各個層次,並使它們無縫地協同運轉起來。 在實際開發一個MVC模式的Web應用項目時,如果使用Java開發,需要用到Struts、Hibernate和Spring等框架,而且需要額外整合3個框架開發出的內容。而使用Ruby語言開發相同的項目時,只需要用到Rails框架就可以完成。
RoR的效率肯定要比Java高一個數量級,這確實是事實,比PHP至少也要高好幾倍,這也是事實,這一點在這篇文章中不展開了,但是為什麼開發效率這么高,我也想談談我的看法,當然還很不成熟的看法:一、主要原因是ruby語言的語法非常強大我記得庄表偉說過一個觀點:「框架是強化的語法」,意思就是說語法比較弱,所以才需要n多框架,如果語法很強,框架就很少。這一點在Java和ruby身上得到了驗證。
1、ruby的open class VS Java的AOP,反射、動態代理,位元組碼增強等技術JDK1.3開始引入反射,就已經打開了Java這種靜態類型語言通往動態類型語法的潘多拉魔盒。隨後的動態代理技術,位元組碼增強技術,靜態和動態的AOP技術開始層出不窮,為什麼呢?就是需要在程序運行期動態改變對象的行為。但是對於ruby來說是open class的,語法級別上就支持程序運行期修改對象行為,所以Java需要很復雜技術才能實現的功能對於ruby來說就是非常簡單的搞定了。
2、ruby的ck typing VS Java的IoC,泛型Java的IoC不用說了,泛型在庫級別也開始廣泛使用。IoC就是根據對象行為來進行對象組裝,泛型就是在不確定對象行為的情況下確定對象的交互。但是ruby的對象行為是在運行期才確定的,天然就是泛型的,行為不是靜態的,所以不需要IoC。
3、ruby的block,closure VS Java的匿名內部類大家對spring的Template肯定印象很深刻,但是這是ruby標準的用法,所以各種資源釋放,異常處理在語法級別上就支持的很好,做起來很簡單。
4、ruby的Meta programming VS Java缺乏method_missing機制大家耳熟能詳了,Java沒有這么強的Meta programming,很多ruby magic耍不出來。
5、腳本語言 VS 編譯語言這也是一個很大的優勢,腳本編程速度確實快。
二、rails框架確實做的很棒
1、full-stackrails是一個概念一致的fullstack框架,不知道為什麼,在Java世界目前只有Rife這一個可以和RoR相提並論的fullstack框架,但是Rife的實現並不好(作者從PHP轉過來的,和DHH爆發過口水戰)。不過因為底層語法支持的不同,用Java是做不出來RoR框架的。因此也有人用Groovy做Grails,不過這幫人不太爭氣。
2、CoC這個不用說了,現在很多Java框架開始吸收這一點。
3、為web開發良身打造web開發需要用到各種技術全部提供,絕對的貼心,如果用Java,這些東西都需要自己集成或者自己實現,省了一大堆麻煩事。
4、開發測試部署快速這個不說了,Java劣勢太明顯了關於「效率提高的來源」問題,我的理解就是次要復雜性被ROR降低到了極致。說的難聽一點,不是ROR太聰明,而是我們以前做得蠢事太多了。
各種各樣的xml, taglib,單元測試困難 ... ...做過項目的人都知道這些次要復雜性很多情況下真的是要命的。ROR沒有降低軟體的內在復雜性,也就是業務問題。但是它把復雜性降低到無限趨近於業務復雜性,也有人稱ROR是Web開發的DSL。而解決業務問題正是人發揮聰明才智的地方,ROR不能代替人,但是它把人從次要復雜性的泥潭之中解救了出來。
參考資料:南京賽威信息科技
Ⅱ 搜索引擎零距離:基於Ruby+Java搜索引擎原理與實現內容簡介
隨著網路信息資源的快速增長,搜索引擎技術成為了計算機科學界和信息產業界的焦點。本書為讀者詳細解析了數據獲取與數據檢索兩個關鍵環節。通過深入探討網路數據挖掘的完整理論並展示智能爬蟲系統的實際應用,讀者能對網路數據挖掘形成更具體的認識。本書還引入了一個名為irs的專用程序語言,詳細闡述了其編譯器和虛擬機的實現方式。
本書深入剖析了多個開源搜索引擎項目,揭示了搜索引擎的基本原理與開發方法,並以一個商業化的搜索引擎實例為讀者展示了實踐應用。此外,結合Java框架,本書還介紹了軟體設計思想,豐富了讀者的開發視野。
內容涵蓋網路數據挖掘、搜索引擎原理、編譯原理、資料庫原理、正則表達式、軟體工程、設計模式、Ruby語言、HTTP協議等多個計算機科學與技術領域,適合搜索引擎開發人員作為專業參考,亦是具有計算機基礎的讀者拓展知識視野的首選。
本書不僅提供了教科書式的理論闡述,還通過「七天入門」式的實例解析、《Linux內核情景分析》風格的代碼分析,以及翻譯的英語文獻,滿足了從初學者到具有一定經驗的搜索引擎開發人員的不同層次需求。