一直以来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,现在有几个问题向您请教一下:
记者:Ruby在中国还不是很火,而且连Ruby开发的程序员都很少,无论从Ruby的安全性能,开发支持,性能效率以及集群支持方面在国内参照的相关资料还很少,我想知道当初印客网为什么打算用Ruby开发?从哪几个方面考虑的?
庄经理:公司的技术开发选型工作,最忌讳的就是跟风,什么热门就去用什么技术,那就算不得是理智的企业行为了。说到选择Rails On Ruby,我们也是经过慎重考虑的。
我们是一个规模不大,访问量也不大的网站,用户使用我们所提供的服务,主要是通过由我们自行开发的一个客户端软件。Web网站只是一个辅助交流的手段。
而另一方面,这样的网站又必须以非常迅捷的速度,来响应用户的各种需求。
因此,在较高的灵活性要求,与较低的负载能力/安全性要求的前提下,选择RoR,是一个非常自然的决定。
记者:在中国有没有一些软件开发公司用Ruby做为主流开发平台,我想知道你对Ruby在中国的发展有哪些了解?
庄经理:Rails中文应用开发现状综述这是由王大力先生独立维护的一个重要的研究文献,目前国内外中文RoR应用的现状,介绍非常的详细,推荐一看。
记者:您认为Ruby在中国未来的发展前途如何?他有哪些优势?他会成为未来中小企业的主流开发平台吗?
庄经理:Ruby与Rails需要分开来看,从语言来说,Ruby可以说非常的成熟与先进。而Rails却非常的年轻。目前的情形却是由于Rails的流 行带动了Ruby的流行,不失为一件好事。但是,对于Ruby的理解,不应该仅仅停留于熟悉使用Rails的层次上。只有更进一步,才能说得上是Ruby 在中国扎根发展。
反过来也可以这么说,只有各位程序员,不仅仅停留在对于Rails开发效率的追捧上,才能够对于Ruby在中国的发展,做出自己的贡献。
Rails On Ruby的开发效率优势非常的明显,但是开发的成本优势却尚未体现。毕竟掌握熟练RoR开发的程序员还是太少了。从这个角度来看,未来中小企业要主力采用 RoR开发,还有难度,RoR要想在中小企业占领更多的份额,需要挑战的并非Java,而是PHP的传统优势。
记者:现在网上很多时候都在盛传Ruby将会垗战Java的主导地位,而且也出现一些Java程序员开始转向学习Ruby你怎么看待这种现象?
庄经理:Java作为一种语言的主导地位,应该受到挑战,尤其是在Web开发领域,传统的Java编程思路,总是或有意,或无意的将Web应用开发复杂化 了。在需求快速变动的Web开发领域,应该有更加灵活的语言和框架,来占领和主导。不过可能的竞争对手,不只是Ruby,还应该包括PHP和 Python,.Net
记者:您们公司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在做高质量的分析工作方面真的是太棒了。