推荐序

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月