Ruby的優(yōu)缺點
閱讀: 297次 時間:2009-10-01 16:07:44
字體:[ 大 中 小]
在目前的主流web開發(fā)技術(shù)例如J2EE,ASP.net,PHP,Python,Ruby當中,基于Ruby語言的rails框架是做網(wǎng)站開發(fā)速度最快的工具了,可以達到J2EE框架開發(fā)速度的5-10倍,并且程序代碼量也只有使用J2EE框架開發(fā)的1/5以下。因此使用Ruby來開發(fā)JavaEye網(wǎng)站,能夠把網(wǎng)站的開發(fā)周期縮短5倍左右,也就是說,如果用Java開發(fā)JavaEye網(wǎng)站需要5個月時間的話,那么使用Ruby僅僅1個月就夠了。另外由于代碼量的大幅度減少,網(wǎng)站整個的維護工作量也大大降低。因為使用Ruby帶來的開發(fā)和維護上面的好處實在是很誘人,能夠幾倍幅度的降低我們的網(wǎng)站開發(fā)周期和維護成本,那何樂而不為呢?
目前Ruby在國內(nèi)應用很稀少,也找不到什么可以借鑒的經(jīng)驗.不過對于本來就是資深的開發(fā)人員,又運營高端技術(shù)社區(qū)來說,這些都不是什么障礙,Ruby無論如何,還是比Java要簡單,只要適合我們,什么技術(shù)都可以拿來用,對于高水平的開發(fā)人員來說,用什么編程語言都一樣,精通Java的去搞Ruby,完全沒有什么障礙。
從目前的狀況來說,Ruby還挑戰(zhàn)不了Java的地位,從可以預見的將來,Ruby也不太會取代Java的地位。這是因為:
1)
Java能夠成為應用軟件開發(fā)的主流,是有很多因素綜合作用導致的,而且也有一個歷史機遇的問題。當應用軟件開發(fā)方式從C/S轉(zhuǎn)向B/S的時候,Java
抓住了歷史機遇,造就了目前全球大多數(shù)應用軟件廠商都基于Java開發(fā)軟件這樣一個既成事實,Java的整個全球商業(yè)價值太高了,優(yōu)勢太大。并且從
Java自身的語法角度來說,也比較適合目前軟件外包產(chǎn)業(yè)的大規(guī)模分工協(xié)作。此外Java并沒有固步自封,在開源社區(qū)和商業(yè)廠商雙重強力推動下,Java
自身仍然在快速的進步,生命力很頑強。
2)Ruby目前只是在web開發(fā)領(lǐng)域比Java有很強的開發(fā)效率的優(yōu)勢,但并沒有Java那么齊全的產(chǎn)品線,從基礎(chǔ)軟件到Web應用軟件,從桌面到嵌入式開發(fā),無所不包。
3)
Java是主流的工業(yè)級別的編程語言,就單個程序員個體的編程效率來說,遠遠不如Ruby,但是很多軟件公司,特別是軟件外包往往是幾十人,上百人大規(guī)模團隊協(xié)作開發(fā),甚至異地大規(guī)模協(xié)作,在這種情況下,個體的編程效率并不重要,重要的是團隊之間協(xié)作和模塊獨立分割以及組合,Java能夠很好的滿足這種軟件開發(fā)模式的要求。但是Ruby很顯然并不適合這種軟件開發(fā)模式,Ruby更加適合小規(guī)模團隊(一般少于10人),采用敏捷開發(fā)方式,高效率的開發(fā)軟件。
但是Ruby取代不了Java,并不意味著Ruby就不值得去使用。特別是對于開發(fā)團隊規(guī)模比較小,對軟件開發(fā)速度有比較高要求的情況來說,Ruby肯定是更好的選擇
Ruby的優(yōu)勢主要有:
1) Ruby是一種動態(tài)面向?qū)ο笳Z言,具有很多強大的面向?qū)ο蟮母呒壧匦?,例如open
class(對象的類別可以在程序運行期被動態(tài)的改變),duck typing(由對象行為決定對象類型),meta
programming(元編程),block和closure(塊和閉包)等等,可以輕松創(chuàng)造出來Java語言很難實現(xiàn)的功能,因此可以極大提高編程效率,減少代碼量。
2)
Ruby更加貼近英語的自然語言,描述和表達能力很好,語法擴展能力很強,因此被用來作為DSL(領(lǐng)域?qū)S谜Z言),例如Ruby的構(gòu)建工具rake就是一種DSL。而Java則不具備這樣的能力,從而不得不借助使用XML來描述各種配置信息。
3)基于Ruby語言的rails框架,除了充分利用了Ruby語言強大的語法能力之外,rails框架自身也有很多理念非常領(lǐng)先的創(chuàng)新性技術(shù),例如簡化的
ORM框架ActiveRecord,Database Migration,以及支持REST特性的URL
Route等等。在這些方面,Java的主流框架在技術(shù)創(chuàng)新能力上被遠遠甩到了后面。
4)
除了技術(shù)因素之外,基于rails框架來開發(fā)web應用,最大的優(yōu)勢就是開發(fā)速度快,一般認為達到使用Java的5-10倍速度,另外代碼量很少,這是Ruby吸引很多開發(fā)人員的主要原因
5)
使用Ruby on
rails開發(fā)web應用,其入門門檻和學習成本要遠低于使用Java,一個基礎(chǔ)扎實的程序員通過一個月學習就可以熟練使用rails開發(fā),但是學習三個月,都未必能夠熟練運用主流Java框架來開發(fā)。
Ruby的不足:
1)從技術(shù)角度來說,Ruby解析器的性能比較差,遠低于Java的JVM。不過對于Web應用來說,這個缺點沒有什么影響:因為Web應用的瓶頸往往出現(xiàn)在數(shù)據(jù)庫訪問上面。另外Ruby的VM將可能在2007年底推出,屆時ruby性能會有一個很大的改觀。
2)相對比Java豐富的各種第三方類庫來說,Ruby的第三方類庫顯得非常缺乏,而且不成熟,特別是針對企業(yè)應用的各種第三方類庫支持,空白點很多。這是目前制約Ruby在企業(yè)應用普及的最大障礙之一。相信隨著時間的推移和Ruby的普及,將會有所改善。
3)Ruby,特別是用rails開發(fā)的web應用在Windows操作系統(tǒng)上面得到的支持還很不夠,傳統(tǒng)上都是部署在Unix/Linux操作系統(tǒng)上的。Windows目前來說只能作為開發(fā)環(huán)境,而不能作為生產(chǎn)運行環(huán)境。
綜上所述,我們不難看出Java和Ruby不是兩個相互對立的開發(fā)語言,對于Ruby和Java誰更具有優(yōu)勢的討論意義已經(jīng)不大,首先從Java本身來講,,Java有其自己的優(yōu)勢,并且
Java將會繼續(xù)處于頂峰,并在企業(yè)應用上保持良好的表現(xiàn),這一點毋庸置疑,并且已經(jīng)得到了市場的證明。
另外,
Ruby有極強的文本處理能力,與Perl不分伯仲,同時,Ruby的語法簡單,還有異常處理以及迭代器等構(gòu)造使編程變得簡單明了,這也正是我們所期待的下一代編程語言。
如果單從某一種語言的角度來看,我們似乎并不能看出什么,但是如果站在更高的位置,從不同的角度全面的看待問題,我們不難發(fā)現(xiàn),二者將會求同存異,各自發(fā)揮自己的特長,從而使我們能構(gòu)建出更加強大的應用程序。
Sun
收購JRuby的同時,Charles Nutter JRuby 的核心開發(fā)者之一, Thomas
Enobo也加入了Sun。這似乎能夠讓我們把Ruby和Java聯(lián)系在一起,Sun公司如果能夠在JVM上做充足的投入,更好地支持動態(tài)語言,
擁抱新的事物,依托Sun公司的強大實力和其自身獨特的優(yōu)點,Ruby必將會有巨大的市場,同時,Ruby也需要一個過渡期,在市場中得到驗證,讓更多的人去使用它,但就目前來講Ruby已經(jīng)從暗流涌動,開始揚帆遠行!
|