Ruby语言优缺点评比

大家都知道,Ruby作为一种新兴的编程语言,具有很多特殊的优点,使得它迅速成为编程人员的新宠。但是它有没有缺点呢。下面就让我们一起来看看Ruby语言优缺点的相关介绍。

在目前的主流web开发技术例如J2EE,ASP.net,PHP,Python,Ruby当中,基于Ruby语言的rails框架是做网站开发速度最快的工具了,可以达到J2EE框架开发速度的5-10倍,并且程序代码量也只有使用J2EE框架开发的1/5以下。

因此使用Ruby来开发JavaEye网站,能够把网站的开发周期缩短5倍左右,也就是说,如果用Java开发JavaEye网站需要5个月时间的话,那么使用Ruby仅仅1个月就够了。另外由于代码量的大幅度减少,网站整个的维护工作量也大大降低。因为使用Ruby带来的开发和维护上面的好处实在是很诱人,能够几倍幅度的降低我们的网站开发周期和维护成本,那何乐而不为呢?

目前Ruby在国内应用很稀少,也找不到什么可以借鉴的经验.不过对于本来就是资深的开发人员,又运营高端技术社区来说,这些都不是什么障碍,Ruby无论如何,还是比Java要简单,只要适合我们,什么技术都可以拿来用,对于高水平的开发人员来说,用什么编程语言都一样,精通Java的去搞Ruby,完全没有什么障碍。
从目前的状况来说,Ruby还挑战不了Java的地位,从可以预见的将来,Ruby也不太会取代Java的地位。这是因为:

1) Java能够成为应用软件开发的主流,是有很多因素综合作用导致的,而且也有一个历史机遇的问题。当应用软件开发方式从C/S转向B/S的时候,Java 抓住了历史机遇,造就了目前全球大多数应用软件厂商都基于Java开发软件这样一个既成事实,Java的整个全球商业价值太高了,优势太大。并且从 Java自身的语法角度来说,也比较适合目前软件外包产业的大规模分工协作。此外Java并没有固步自封,在开源社区和商业厂商双重强力推动下,Java 自身仍然在快速的进步,生命力很顽强。

2)Ruby目前只是在web开发领域比Java有很强的开发效率的优势,但并没有Java那么齐全的产品线,从基础软件到Web应用软件,从桌面到嵌入式开发,无所不包。

3) Java是主流的工业级别的编程语言,就单个程序员个体的编程效率来说,远远不如Ruby,但是很多软件公司,特别是软件外包往往是几十人,上百人大规模团队协作开发,甚至异地大规模协作,在这种情况下,个体的编程效率并不重要,重要的是团队之间协作和模块独立分割以及组合,Java能够很好的满足这种软件开发模式的要求。但是Ruby很显然并不适合这种软件开发模式,Ruby更加适合小规模团队(一般少于10人),采用敏捷开发方式,高效率的开发软件。

但是Ruby取代不了Java,并不意味着Ruby就不值得去使用。特别是对于开发团队规模比较小,对软件开发速度有比较高要求的情况来说,Ruby肯定是更好的选择

Ruby语言优缺点之Ruby的优势主要有:

1) Ruby是一种动态面向对象语言,具有很多强大的面向对象的高级特性,例如open class(对象的类别可以在程序运行期被动态的改变),duck typing(由对象行为决定对象类型),meta programming(元编程),block和closure(块和闭包)等等,可以轻松创造出来Java语言很难实现的功能,因此可以极大提高编程效率,减少代码量。

2) Ruby更加贴近英语的自然语言,描述和表达能力很好,语法扩展能力很强,因此被用来作为DSL(领域专用语言),例如Ruby的构建工具rake就是一种DSL。而Java则不具备这样的能力,从而不得不借助使用XML来描述各种配置信息。

3)基于Ruby语言的rails框架,除了充分利用了Ruby语言强大的语法能力之外,rails框架自身也有很多理念非常领先的创新性技术,例如简化的 ORM框架ActiveRecord,Database Migration,以及支持REST特性的URL Route等等。在这些方面,Java的主流框架在技术创新能力上被远远甩到了后面。

4) 除了技术因素之外,基于rails框架来开发web应用,最大的优势就是开发速度快,一般认为达到使用Java的5-10倍速度,另外代码量很少,这是Ruby吸引很多开发人员的主要原因

5) 使用Ruby on rails开发web应用,其入门门槛和学习成本要远低于使用Java,一个基础扎实的程序员通过一个月学习就可以熟练使用rails开发,但是学习三个月,都未必能够熟练运用主流Java框架来开发。

Ruby语言优缺点之Ruby的不足:

1)从技术角度来说,Ruby解析器的性能比较差,远低于Java的JVM。不过对于Web应用来说,这个缺点没有什么影响:因为Web应用的瓶颈往往出现在数据库访问上面。另外Ruby的VM将可能在2007年底推出,届时ruby性能会有一个很大的改观。

2)相对比Java丰富的各种第三方类库来说,Ruby的第三方类库显得非常缺乏,而且不成熟,特别是针对企业应用的各种第三方类库支持,空白点很多。这是目前制约Ruby在企业应用普及的最大障碍之一。相信随着时间的推移和Ruby的普及,将会有所改善。

3)Ruby,特别是用rails开发的web应用在Windows操作系统上面得到的支持还很不够,传统上都是部署在Unix/Linux操作系统上的。Windows目前来说只能作为开发环境,而不能作为生产运行环境。
综上所述,我们不难看出Java和Ruby不是两个相互对立的开发语言,对于Ruby和Java谁更具有优势的讨论意义已经不大,首先从Java本身来讲,,Java有其自己的优势,并且 Java将会继续处于顶峰,并在企业应用上保持良好的表现,这一点毋庸置疑,并且已经得到了市场的证明。

另外, Ruby有极强的文本处理能力,与Perl不分伯仲,同时,Ruby的语法简单,还有异常处理以及迭代器等构造使编程变得简单明了,这也正是我们所期待的下一代编程语言。

如果单从某一种语言的角度来看,我们似乎并不能看出什么,但是如果站在更高的位置,从不同的角度全面的看待问题,我们不难发现,二者将会求同存异,各自发挥自己的特长,从而使我们能构建出更加强大的应用程序。

相关推荐