一直以來Ruby on Rails在中國及至世界開始火爆起來,無論在Java的網站裡、搜尋引擎中,還是火熱的論壇裡,你都會看到Ruby和Java疊對出現,而且它們兩個好像一對水火不相容的冤家被人們相互地比來比去。甚至Oreilly這位多年來一直支援Java的大師級人物,也開始出版Ruby方面的書籍,帶領人們從Java這兒離開。這場討論的範圍越來越大,參與者越來越多,甚至Java之父Gosling也捲入了爭論當中。不過共同的認識是Ruby在開發中的高效性超越Java和C#,這個結果讓許多開發人員驚訝。甚至令他們提出這樣的疑問:是否真的存在比Java和C#更好的語言?但是在眾多的討論中,國人的關注度似乎少很多。由於曆史關係,很多國人都不想去討論這個問題,也不相信Rudy會在中國成為第二個Java,那麼Ruby on Rails在中國的發展如何呢?印客網的技術總監莊表偉接受了IT168記者的採訪,為廣大讀者解答了心中的疑問。
Ruby在中國得到認可
你好!莊經理,我是IT168的記者,據我所知印客網10月10日就正式上線了,而且是從原JAVA程式改成現在的RoR,現在有幾個問題向您請教一下:
IT168記者:Ruby在中國還不是很火,而且連Ruby開發的程式員都很少,無論從Ruby的安全效能、開發支援、效能效率以及叢集支援方面在國內參照的相關資料還很少,我想知道當初印客網為什麼打算用Ruby開發?從哪幾個方面考慮的?
莊經理:公司的技術開發選型工作,最忌諱的就是跟風,什麼熱門就去用什麼技術,那就算不得是理智的企業行為了。說到選擇Rails On Ruby,我們也是經過謹慎考慮的。
我們是一個規模不大,訪問量也不大的網站,使用者使用我們所提供的服務,主要是通過由我們自行開發的一個用戶端軟體。Web網站只是一個輔助交流的手段。
而另一方面,這樣的網站又必須以非常迅捷的速度,來響應使用者的各種需求。
因此,在較高的靈活性要求,與較低的負載能力/安全性要求的前提下,選擇RoR,是一個非常自然的決定。
IT168記者:在中國有沒有一些軟體開發公司用Ruby做為主流開發平台,我想知道你對Ruby在中國的發展有哪些瞭解?
莊經理:Rails中文應用開發現狀綜述http://rorcast.blogger2blogger.com/public/files/statusRailscn.htm這是由王大力先生獨立維護的一個重要的研究文獻,目前國內外中文RoR應用的現狀,介紹非常的詳細,推薦一看。
IT168記者:您認為Ruby在中國未來的發展前途如何?他有哪些優勢?他會成為未來中小企業的主流開發平台嗎?
莊經理:Ruby與Rails需要分開來看,從語言來說,Ruby可以說非常的成熟與先進。而Rails卻非常的年輕。目前的情形卻是由於Rails的流行帶動了Ruby的流行,不失為一件好事。但是,對於Ruby的理解,不應該僅僅停留於熟悉使用Rails的層次上。只有更進一步,才能說得上是Ruby在中國紮根發展。反過來也可以這麼說,只有各位程式員,不僅僅停留在對於Rails開發效率的追捧上,才能夠對於Ruby在中國的發展,做出自己的貢獻。
Rails On Ruby的開發效率優勢非常的明顯,但是開發的成本優勢卻尚未體現。畢竟掌握熟練RoR開發的程式員還是太少了。從這個角度來看,未來中小企業要主力採用RoR開發,還有難度,RoR要想在中小企業佔領更多的份額,需要挑戰的並非Java,而是PHP的傳統優勢。
IT168記者:現在網上很多時候都在盛傳Ruby將會垗戰Java的主導地位,而且也出現一些Java程式員開始轉向學習Ruby你怎麼看待這種現象?
莊經理:Java作為一種語言的主導地位,應該受到挑戰,尤其是在Web開發領域,傳統的Java編程思路,總是或有意,或無意的將Web應用開發複雜化了。在需求快速變動的Web開發領域,應該有更加靈活的語言和架構,來佔領和主導。不過可能的競爭者,不只是Ruby,還應該包括PHP和Python,.Net。
IT168記者:您們公司Ruby程式員是從Java或是.Net開發轉過來的嗎?他們為什麼會轉到學習Ruby開發?
莊經理:我們公司的程式員,原來也是Java程式員。這樣的轉向其實相當的自然,一方面是開發複雜程度的強烈反差,一方面是嘗試學習新技術的探索精神,再加上公司安排的進度計劃相對合理,就能夠為程式員創造轉向Rails On Ruby的良好條件。
Ruby暗流湧動
自從Ruby出現以來,在業界便掀起了一場關於Java與動態語言之間的不休爭論。雖然一直沒有一個確定的答案,但圍繞Java與動態語言之間的爭論從來沒有消失過。隨著Java的日趨複雜,動態語言的優勢——簡化和易用就越加凸顯出來。Ruby一出大凡就有一石激起千層浪的景象,伴隨著Ruby的出現,業界也開始變得熱鬧起來,許多網站都大篇幅的介紹Ruby,有關Ruby評論的文章也是頻頻出現, Ruby的新聞事件都成為人們關注的熱點。這些都使Ruby和Java的爭論更加激烈,但是關於二者誰更具有優勢,誰能戰勝誰的問題還是沒有最終的定論。
不過最近的幾條新聞讓本來就充滿懸念的戰爭更是蒙上了一層薄霧,首先是It168 網站上的一條新聞“Sun 收購JRuby 向動態語言邁進”一文,這篇文章一出讓支援Ruby的人興奮不已,因為Ruby能夠成為Sun公司在JVM上支援的一個非Java語言,足已看出Sun對Ruby語言的重視程度。從某種角度上講,Ruby能得到Sun公司的支援,還是有其獨特的優勢。
然而,沒過幾天, 一項伯利茲媒體的研究(下表)出現了非常有意思的結果,該研究調查了在AJAX開發中人們都使用哪種語言。結果表明Java語言以超過一半(50.5%)的使用率位居第一位, 令人感到意外的是,Ruby佔有最低的使用率僅10.4%,甚至比C和C++的使用率還要低。原文見:“ Ruby前途渺茫” ,對此有些人也開始對Ruby多多少少的產生了懷疑,一方面是對Ruby語言特點的高度評價與肯定,另一方面,Ruby的使用率又是如此之低,這兩方面形成了鮮明的對比。的確,一項技術再怎麼說它好,沒有人用,沒有得到市場的驗證又怎麼能說是真好呢!
然而筆者認為,對Ruby和Java誰更具有優勢的討論意義不大,首先從Java來講,Java有其自己的優勢,並且Java將會繼續處於頂峰,並在公司專屬應用程式上保持良好的表現,這一點,毋庸置疑,並且已經得到了市場的證明。另外,Ruby的文本處理能力極強,與Perl不分伯仲。同時,Ruby的文法簡單,還有異常處理以及迭代器等構造,使編程變得簡單明了。這也正是我們所期待的下一代程式設計語言,即語言簡單。如果單從某一種語言的角度來看,我們似乎並不能看出什麼,但是如果站在更高的位置,從不同的角度全面的看待問題,我們不難發現,二者將會求同存異,各自發揮自己的特長,從而使我們能構建出更加強大的應用程式。
Sun收購JRuby的同時,Charles Nutter,JRuby 的核心開發人員之一,心開發人員Thomas Enobo也都加入了Sun。這似乎能夠讓我們把Ruby和Java聯絡在一起,Sun公司如果能夠在JVM上做充足的投入,更好地支援動態語言, 擁抱新的事物。依託Sun公司的強大實力和其自身獨特的優點,Ruby必將會有巨大的市場,同時,Ruby也需要一個過渡期,在市場中得到驗證,讓更多的人去使用它。但就目前來講,Ruby是暗流湧動,蓄勢待發!
黑馬Ruby能否挑戰Java
從上述的採訪中我們不難看出Ruby正在得到中國及到全世界的認可,誰又能說他不會成為第二個Java呢!和Java的風光相比,Sun公司由於在一些決策上的失誤,導致Sun公司沒有像人們當初想象的那樣,是微軟強有力的競爭者,反而一個不起眼的Ruby近來高頻率的出現在我們的視野裡,有人把它比喻成新兵中絕對的黑馬。
可能我說這話會有很多的Java迷們要聲討我,但是這個爭論是實實在在擺在我們面前的,而且這個爭論也會繼續的持續下去,會隨著Java的日趨複雜,動態語言的優勢——簡化和易用就越加凸顯出來。如果說Java是一列穩固的貨運火車,那麼Ruby on Rails就是一列時髦的特快列車。
Ruby on Rails創始人,David Heinemeier Hansson,認為Ruby等動態語言是Java在Web上最大的威脅者。
“Ruby on Rails展示了你所使用的動態語言比Java更加便於維護,以往所認為只有Java所具備的市場的影響力,現在輪到Rails開始流行了。”
Geir Magnusson,Apache Software Foundation成員,同時也是Intel's Middleware Products Division的工程師,曾經向聽眾調查多少人嘗試過Ruby on Rails,結果是半數以上的人舉手。不過當問到有多少人採用該產品架構時,幾乎所有人都把手放下。
這個小調查表明了企業級Java開發人員還沒有準備由Java轉向Ruby on Rails開發。不過,Heinemeier Hansson說,“我看到許多Java開發人員都逃避Upstream,他們反而對Low End讓步——對‘大部分人多數時候都需要’的另一種理解——表達了一種對‘真正需要的靜態語言’的強烈渴望。”
其實Java開發工程人員也不必像如臨大敵一樣,認為Java已經走到了盡頭,Java末日即將來臨,每個語言都是在討論中成長起來,據我在網上所調查結果,大多數網友觀點任為Ruby沒有Java強大,它只是局限網頁方面的指令碼語言而已,而且面對來自各方面的挑戰,Sun公司也不是無動於衷,Java正通過改進和拓展虛擬機器技術迎接挑戰,在技術領域方面Java還是世界上最好的,而且有很多第三方控制項的支援,這是Ruby無法相比的,在Web開發領域,Java也確實受到了Ruby的挑戰,有的開發人員不能容忍學習Servlets,Spring,XML,Hibernate,Struts然後還要學習一些即將出現還待出現的粘合架構,而轉向Ruby,最近在國內也出現一些中小公司開始涉足Ruby開始,我們今天採訪的印客網就是很好證明,但是不會出現Ruby狂熱者預言的那樣,出現大批Java移民現象發生,它們相互之間只能是共存的狀態,所以我堅信Java不會離我們而去。在大型工程開發中我們選擇了Java作為新的體系架構,而不是Ruby,或者Python,就是因為它是一個成熟的擁有免費和商用的大量工具和API的生態系統。當使用Ruby或者Python編程的時候是有一些速度的提升,但是有了現代的像IntelliJ,Eclipse和NetBeans的Java IDE,你可以在Java裡走的更快。
但是用Ruby編程是很愜意的,Ruby要想挑戰Java還有一段很長的路要走,使用RoR在第三方的支援還稍顯弱小,是否經得起考驗,還看未來的發展趨勢。
Java之父如何評價其它語言
對於現在種種傳言,我們也很想聽聽,Sun公司是做如何反應的,最近在Sun的教育與研究國際會議最後的討論上Java之父關於網上爭論給予瞭解釋。
記者:在世界上有許多不同的語言。有些人在說一些新語言的出現會對Java構成威脅,你認為呢?
James Gosling:不,我不這麼認為。最近出現的大部分語言都是指令碼型語言,例如:象PHP和Ruby,這些都是完美的系統。它們的強大是因為經過了特殊的處理化,因此所有這些人們談論的令他們今天很興奮的語言都僅僅是用來產生Web頁面的。因此你們只是想產生一個網頁,他們會做得很好。但是在應用領域別指望它們能有更大的做為,因為他們都有嚴重的效能問題。在所有這些動態語言中,如果你試著用它們編寫一些對執行有嚴格要求的東西,那麼它們都會可怕地失敗。如果你寫一個語句a=b+c,在效能差異上,Java與PHP相比可能完全一樣。它們真正優良的地方在於它們都專註於一個領域,他們會使在那個領域的編程更加簡單。我們一直在做的就是在工具之外獲得更多的簡化,我們做了大量的工作來達到簡單性和功能強大性之間的一個平衡點。他們彼此之間是相互依存,相互排斥的。構建具有強大功能的系統,恰恰要有幾分複雜性。正是因為這樣,世界才相互聯絡,極大地協助你啟動並執行系統有了可以延續的架構。利用PHP,你能將Web表現層的內容做得很好。你不要用PHP去寫一個星際導航的類庫。這個它做不到。
另一個與之有關的就是Microsoft的C#。很難在一個水平上批評C#,因為他們就是拷貝了Java規範。那是我們擔心他們會做出一些創新的東西的時刻,但他們沒有,他們沒有選擇借鑒。很明顯,他們只是集中於一個開發平台。
我們嘗試和所有的這些語言一起工作。我們知道有許多人在談論Java與X相比或Java與Y相比如何如何。我們在努力工作來保證Java與PHP或Java與Python相結合在一起。這樣你能用PHP做Web的表現層。許多的人用PHP做Web的表現層,用Java來做分析部分的工作,因為Java在做高品質的分析工作方面真的是太棒了。