- JRuby語言實戰技術
- (德)駱古道 王德志 姜偉
- 1797字
- 2018-12-29 19:21:19
推薦序
JRuby——超越Java的選擇
Ruby on Rails框架的迅速崛起是2005年的事,它同時帶動了Ruby語言市場份額的迅速增長,使之在兩年之內沖進了TIOBE編程語言流行度排名前10位,甚至超越了同樣在2005年因Ajax技術的出現而迅速增長的JavaScript語言。
由于一些原因,我學習Ruby和Rails比較晚。我曾經長期堅持使用Struts+Spring+ Hibernate做Web開發,這套組合被稱作SSH,至今仍然是做Java Web開發最流行的框架。但是,Struts、Spring和Hibernate都是很復雜的框架,學習成本很高,而且基于XML的配置文件維護起來非常繁瑣,嚴重影響了開發效率。我使用這套組合開發過一個小項目——一個提供banner廣告的服務器,全部開發由我一個人完成。原先預計花1個多月時間完成的項目,最終花了3個多月,這使我對這套組合的開發效率很不滿意。2007年上半年我讀了一本書《超越Java》,明白了Java開發框架開發效率低下的一些深層原因。問題不完全出在這些開發框架本身的設計上,Java語言本身的設計也有很多問題,正是這些問題導致了開發效率低下。《超越Java》還對Ruby和Rails做了很多介紹,這本書說服了我,我決心以后做Web開發時轉Rails。
我喜歡以與別人不同的方式來學習新的技術,那樣會得到很多不同的樂趣,對于新技術也會得到一些更加深入的認識。在我開始學習Ruby和Rails時,開源項目JRuby發布了0.98版。JRuby是Ruby語言在JVM上的實現,類似于Python語言在JVM上的實現JPython。畢竟我已經使用了很多年Java,Java做任何事情時幾乎都能找到現成的方案。看來對于Java程序員轉向Ruby,JRuby是一個很好的工具。萬一將來不知道某件事如何用Ruby做,我還可以通過JRuby來調用Java的庫。
情況比我想象的要好,當我閱讀完《Ruby for Rails中文版》和《應用Rails進行敏捷Web開發(第2版)》后,發現這兩本書中絕大多數例子都能夠使用JRuby正確運行。JRuby與Ruby標準版的兼容性很好。伴隨著我的學習過程,JRuby也迎來了它的1.0正式版。這個項目發展迅速,看起來前程遠大。從那時起,我在做Rails開發時一直堅持同時使用JRuby來做測試。
到JRuby 1.1版發布(2008年4月5日)為止,JRuby是除了Ruby標準版以外唯一能夠順利運行Rails應用的環境。在.NET上實現的IronRuby因為其開發團隊與微軟公司簽訂過協議,無法借鑒Ruby標準版以GPL許可發布的代碼,嚴重影響了發展速度,至今也無法順利運行Rails應用。當Ruby標準版自己的虛擬機尚不成熟時,JRuby是運行于虛擬機之上最為成熟的Ruby語言實現。Ruby語言轉變為一種虛擬機語言是必然的趨勢,這對Ruby語言未來的發展至關重要。在2007年還發生了一件大事,Sun公司終于決定將他們視為核心知識產權的JVM和JDK的源代碼以GPL許可公布出來。既然JVM也已經GPL了,而且JVM是在業界使用了10年以上,最為成熟的虛擬機技術。Ruby開發者利用JVM將Ruby語言轉變為一種虛擬機語言,是一種非常自然的選擇。
Ruby語言和JVM的組合可謂是強強聯手,它們的結晶JRuby現在已經成為了一個新的創新源泉。正是基于JRuby的技術,NetBeans的Ruby版才達到了如此高的品質。Eclipse的RDT和DLTK插件同樣也使用了JRuby中的技術。在Java語言市場份額連年下滑的情況下,Sun公司為了保持住JVM的市場份額,使自己繼續保持領先地位,除了使JVM更好地支持動態類型語言之外別無選擇。與Groovy、JavaScript、Python等其他幾種能夠運行于JVM上的動態類型語言相比,JRuby更大地推動了JVM對于動態類型語言的支持,可以預見,Ruby將會成長為運行于JVM上的第一大動態類型語言。隨著JRuby的發展成熟,圍繞JRuby的各種應用部署方案、負載均衡方案、集群方案也會逐漸浮出水面,最終形成一個繁榮的生態系統。
除了適合用來開發面向Internet的Web應用之外,還有很多公司將JRuby看作是使Rails進入企業應用的關鍵技術,例如ThoughtWorks。JRuby允許Rails應用部署在流行的Java應用服務器中,很多企業早已建立了這樣的運行環境,但因為某些原因無法為運行Rails應用建立一個全新的運行環境。任何技術的流行,深究起來,其背后都有經濟上的原因。Rails能夠達到5倍于SSH的開發效率,使它成為了一個幾乎無法被抗拒的選擇。Rails進入企業應用,只是一個時間問題,它的前景十分光明。
我與駱古道老師相識多年。駱老師為人謙遜,風度儒雅,特別是他在技術方面孜孜不倦的追求和嚴謹細致的治學態度一直影響著我。在我開始學習Rails的時候,駱老師已經是這方面的專家了。他通過自己的技術blog——道喜技術日記,寫了大量的培訓教程,無私地向使用中文的技術人員普及Ruby和Rails等技術。駱老師的這本新著《JRuby語言實戰技術》內容詳盡地介紹了JRuby和Rails,是他奉獻給中文技術社區的一本杰作。這本書既適合不了解Ruby和Rails的Java開發人員閱讀,也適合已經熟悉了Ruby和Rails的開發人員閱讀。
與10多年前Java超越C++一樣,今天該是我們考慮超越Java的時候了,JRuby就是我們最好的選擇。
上海印客網網站開發負責人
李 錕
2008年4月
- 嵌入式Linux上的C語言編程實踐
- 可編程控制器技術應用(西門子S7系列)
- 分布式多媒體計算機系統
- 精通特征工程
- 西門子S7-200 SMART PLC實例指導學與用
- 基于ARM 32位高速嵌入式微控制器
- 3D Printing for Architects with MakerBot
- CentOS 8 Essentials
- 基于32位ColdFire構建嵌入式系統
- Kubernetes for Serverless Applications
- 菜鳥起飛系統安裝與重裝
- Mastering Game Development with Unreal Engine 4(Second Edition)
- 實用網絡流量分析技術
- Mastering MongoDB 3.x
- PowerMill 2020五軸數控加工編程應用實例