`
javafenger
  • 浏览: 246767 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

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的形象对比

 

 

分享到:
评论

相关推荐

    Ruby Ruby Ruby Ruby Ruby Ruby

    Ruby Ruby Ruby Ruby Ruby Ruby

    ruby DBI ruby DBI ruby DBI

    ruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ...

    Ruby-rubybuild编译和安装Ruby

    Ruby是一种动态、开源的编程语言,以其简洁、优雅的语法和强大的元编程能力著称。在Ruby开发中,为了管理不同版本的Ruby环境,我们常常会使用到`rbenv`和`ruby-build`这两个工具。本文将详细介绍如何使用`ruby-build...

    ruby2ruby.zip

    ruby2ruby 提供一些用来根据 RubyParser 兼容的 Sexps 轻松生成纯 Ruby 代码的方法。可在 Ruby 中轻松实现动态语言处理。 标签:ruby2ruby

    Ruby-rubyinstall安装RubyJRubyRubiniusMagLevorMRuby

    Ruby是一种强大的、面向对象的脚本语言,广泛用于Web开发、服务器端编程和各种应用程序。在Ruby的世界里,管理不同的Ruby实现(如MRI、JRuby、Rubinius、MagLev和MRuby)是非常重要的,这有助于开发者根据项目需求...

    Ruby完全自学手册 下

    《Ruby完全自学手册》是一本完全覆盖Ruby和Ruby on Rails的完全自学手册。《Ruby完全自学手册》的特色是由浅入深、循序渐进,注重理论和实践的结合。虽然定位为入门手册,但是依然涉及许多高级技术和应用,覆盖到的...

    src-oepkgs/ruby-ruby2ruby

    src-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2...

    ruby源代码 ruby源代码 ruby源代码 ruby源代码2

    ruby源代码 ruby源代码 ruby源代码 ruby源代码2

    Ruby完全自学手册

    Ruby是一种简洁而功能强大的编程语言,由日本的松本行弘(Yukihiro "Matz" Matsumoto)在1993年开发,并于1995年公开发布。Ruby语言设计之初就非常注重开发人员的编程体验,它拥有自然、表达性强的语法,易于阅读和...

    Ruby-TensorStream用Ruby重新实现TensorFlow

    **Ruby-TensorStream:用Ruby重现实现TensorFlow** Ruby-TensorStream是一个开源项目,旨在为Ruby开发者提供一个类似于Google TensorFlow的深度学习框架。它的核心目标是让Ruby程序员能够利用TensorFlow的强大功能...

    ruby源代码 ruby源代码 ruby源代码 ruby源代码4

    ruby源代码 ruby源代码 ruby源代码 ruby源代码4

    Ruby资源ruby-v3.1.1.zip

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。本资源“ruby-v3.1.1.zip”包含了Ruby的最新版本3.1.1,这是一个重要的里程碑,因为它引入了新特性、性能优化以及对旧...

    ruby安装包下载 | ruby环境搭建

    Ruby是一种强大的动态编程语言,广泛应用于Web开发,脚本编写,服务器管理等领域。为了在没有外网连接的环境中搭建Ruby环境,你需要提前下载并准备相关的安装包。在提供的压缩包中,包含了三个关键文件:`ruby-2.7.2...

    Ruby 教程 The Book of Ruby

    ### Ruby 教程《The Book of Ruby》知识点总结 #### 一、书籍基本信息 - **书名**:《The Book of Ruby》 - **作者**:Huw Collingbourne - **出版年份**:2011年 - **出版社**:No Starch Press - **ISBN-10**:1-...

    Programming Ruby.pdf

    《Programming Ruby》被誉为是学习Ruby语言的最佳...通过深入学习这本书,读者将能够掌握Ruby语言的精髓,了解Ruby on Rails框架的强大功能,并在实际项目中运用这些知识,解决复杂的问题,创造出优雅且高效的代码。

    Ruby Under a Microscope

    ruby interpreter 原理探討 At first glance, learning how to use Ruby can seem fairly simple. Developers around the world find Ruby’s syntax to be graceful and straightforward. You can express ...

    使用ruby解析awdb离线库

    使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库...

    ruby中文手册 chm

    Ruby是一种面向对象的、动态类型的编程语言,由Yukihiro "Matz" Matsumoto于1995年创建。它的设计目标是让代码更加简洁、...通过深入学习和实践,开发者可以充分利用Ruby的强大功能,创造出各种复杂的应用程序和游戏。

Global site tag (gtag.js) - Google Analytics