Ruby创造的奇迹

 

 

Ruby on Rails诞生于7月,创始人浪漫的用七月的诞生石红宝石(Ruby)为它命名。在Web领域,Ruby真的是软件开发的“银弹”吗?

Ruby on Rails是Web应用开发领域的一个奇迹,这个诞生于2004年7月的Web开发框架在短短两年时间内已经成为引领Web应用变革的旗手,在软件开发领域掀起了无数的波澜。

Ruby on Rails一诞生就号称可以达到J2EE开发速度的10倍,被很多人视为软件开发的银弹;刺激了一大群模仿Ruby on Rails的开发框架如雨后春笋般的涌现出来。

软件开发界的奥斯卡2005年Jolt Award颁奖礼,RoR出尽了风头。Rails框架的作者David Heinemeier Hansson(以下简称DHH)当选由Google,Yahoo,O'Reilly等业界巨头主办的2005开源软件OSCON年度最佳黑客(Hacker of the Year at OSCON),就足以说明Rails框架在当今Web开发领域所取得的巨大成绩和广泛认同了。

此外,RoR吸引的并不仅仅是开发人员的目光,2006年《连线》杂志使用了DHH的大幅照片作为封面人物,报道了RoR所取得的成就,在《连线》的封面上,DHH身穿《骇客帝国》中Neo的连身黑衣,仿佛化身为软件开发领域的领航者,以拯救软件领域众生的姿态出现。

与此同时,Rails社区正在以惊人的速度增长,社区的活跃程度也完全可以用火爆来形容,2005年2006年连续两年举办的Railsconf更是成为了Rails开发者和爱好者的盛会。为什么RoR能够成就这些奇迹呢?

Rails威力的源泉

Ruby是一种面向对象的动态脚本语言,由日本人松本行弘(Matsumoto Yukihiro)在1993年创造,1995年Ruby正式发布第一个版本。自从2000年《Programming Ruby》(俗称“镐头书”)的出版,Ruby开始在全球范围引起关注。但是让Ruby得以迅速推广的催化剂正是由于Rails框架的推出和互联网Web2.0时代的来临。

Ruby之所以能够创造出Rails这样的框架,与其动态面向对象语言的诸多强大能力是分不开的:

脚本语言

不需要编译过程,可以直接运行,因此可以大大加快编写-部署-运行的过程,提高开发速度,脚本语言的这一优势是编译语言很难逾越的。

动态语言

对象的类别可以在程序运行期被动态的改变,动态语言的特性使得Ruby的能力变得异常强大。而Java则不具备这种能力,在程序运行期无法动态改变这个对象的行为。虽然Java也逐步引入了动态反射和代理机制,期望为Java的对象在运行期织入更多的行为,从而提供更加强大和灵活的功能。

Java领域的所有这些努力其实正是AOP(面向方面编程),这几年来Java的AOP编程得到了长足进步,也一直是Java领域的热点技术之一。不过对于Ruby来说,由于语言本身具备的动态能力,所以根本不需要AOP,Ruby自身的动态能力就比任何Java AOP框架提供的能力都要强大、灵活和方便的多。

不需要指明对象

形象的说法就是:如果一只动物走起路来像鸭子,而且叫声也像鸭子,那我们就认为它是一只鸭子。

在Java语言中,一个对象的行为是由这个对象的类所实现的接口所定义的,这个接口指明了该类型应该具备什么样的行为,即类型决定行为。

但是对于Ruby来说,恰恰反过来,是行为决定类型,而不是类型决定行为。一个对象在程序运行期表现出来是什么行为,那么他就是什么类型。因此,Ruby不需要接口,也不需要IoC容器。

Ruby还有很多有趣而强大的功能,这些功能比Java要强大和简单的多,而Rails框架的威力正是来自于Ruby语言这些远远超越了Java的强大能力。

Rails为什么这么流行?

Rails框架的诞生颇有传奇色彩:Rails的作者DHH在2003年的时候还是丹麦的哥本哈根大学本科生,在接触Ruby语言之前,仅有两年的PHP编程经验和一个J2EE毕业设计项目的经验。当时DHH接到美国芝加哥的37signals公司的邀请,帮助37signals开发一个基于Web的项目协作管理软件——basecamp。DHH在朋友的推荐下决定使用Ruby来开发这个Web项目,在4个月之后,DHH完成了basecamp的开发。在这之后,DHH将应用在basecamp当中自己编写的底层框架剥离出来,命名为Ruby on Rails,于2004年7月正式发布,随后Rails引发了整个Web开发领域的地震。是什么让Rails具备如此大的魔力呢?

开发速度惊人

Rails宣传是J2EE开发速度的10倍,这并非夸夸其谈,根据笔者自己开发的实际经验,和来自其他Rails开发人员的反馈,Ruby on Rails确实可以达到Java开发Web项目10倍左右的效率,即使不很熟悉Rails的开发人员也往往可以达到Java5倍的开发速度。10倍的速度意味着本来10个月完成的工作,现在只需要1个月就可以完成,生产力能够得到10倍的提高,想不引起轰动确实不太可能了。

开发代码量非常少

用Rails开发,项目的代码量非常少,一个比较典型的看法是,Rails项目的代码量是Java项目代码量的1/4左右。也许这个算法包括了页面代码在内,根据笔者的实际经验,不统计页面代码,只统计后台程序代码,Rails项目的Ruby代码和配置只有Java项目的Java代码和XML配置行数的1/10。

项目代码量的大幅度减少不但可以有效加快开发速度,而且可以大幅度降低项目维护的成本,毕竟维护5000行代码和维护50000行代码相比,维护成本不是等比增加的,而是指数增加的,最后,对于开发者来说,面对5000行代码的心理压力和面向50000行代码的心理压力也不可相提并论,在轻松愉快的心情下,软件的代码质量也会非常高。

 

 

简单就是美

对于一个Java开发者来说,要具备熟练运用主流框架开发Web项目的能力,至少需要培养6个月时间,但是一个Ruby开发者,要熟练运用Rails框架开发Web项目,至多一个月足够了。学习门槛大大降低了,开发人员的培养周期大大缩短,这也是为什么Rails能够在短短两年时间迅速流行的主要原因之一,只有越简单才能迅速让更多人掌握。

Web 2.0推波助澜

Ruby on Rails本身就是为了开发典型的Web2.0应用而生的,因此Ruby on Rails就像是为Web2.0网站开发量身打造一般,迅速得到了众多Web2.0网站开发者的青睐。随着Web2.0时代的来临,RoR自然而然占据了Web开发者的眼球。

当然也有人怀疑脚本语言是不是能够完成企业级的程序开发,编译语言的静态编译检查其实没有想像中那么可靠,随着Java项目中大量使用AOP,动态代理技术,字节码增强技术,实际上已经严重破坏了编译检查带来的安全保证。

通过Rails开发项目实践,并没有发现脚本语言在这方面带来多少困扰。反而由于脚本语言编程简单,所以能够明显提高软件代码的质量。

Rails创始人在介绍RoR

RoR与J2EE的形象对比

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值