前不久,听一个朋友神吹他现在在学习一种非常流行的新的快速Web开发工具,即Ruby。今天在网上一搜,还真有很多关于Ruby的内容。本来以为,Ruby只不过是众多被吹嘘的技术中的一员。我个人,对一些还没有获得可观的市场份额之前的技术,我一般是不会给予它过多的关注。所以,这是我至今技术水平不高的一个重要原因,我是这样认为的。最近,我时常告诫自已一定要跟上技术的更新步伐。
  今天先来了解看Ruby,到底是个什么东东?
        一、什么是Ruby
        
        要了解Ruby,先看一张图片
       
        虽然这张图片可能不一定非常准确。但可以看出,这门技术的设计目标应该是提高开发效率。
       二、Ruby on Rails 技术产生发展及特战点
       1、松本行弘"Matz"(Matsumoto Yukihiro)是Ruby语言的发明人,他从1993年起便开始着手Ruby的研发工作。他一直想发明一种语言,使你既能进行高效开发又能享受编程的快乐。1993年2月24日Ruby诞生了,1995年12月Matz推出了Ruby的第一个版本Ruby 0.95。不久Ruby便凭借其独特的魅力横扫日本。据说很多人相信在不久的将来,Ruby将走向世界。
      
  2、Ruby是一种有着超级清晰语法的纯面向对象的编程语言,它能够让编程变得有趣和优雅(这点在后面的内容中确实得到印证)。Ruby成功的组合了Smalltalk的优雅以及Python的易用性,还有Perl的实用主义。Ruby起源于90年代的日本,在过去的几年时间里随着更多的英语资料的出现变得更加的流行。
        3、Rails是一个用来开发数据库后台的WEB应用的开源框架。
        4、到目前为止我发现Ruby on Rails最大的优点就是在于简单!RoR的核心思想就是“更少的编程,更简单的配置”
  • 安装和配置非常简单,不象Java需要安装运行环境,安装应用服务器,然后再进行一大堆的配置。在安装上Ruby和Perl很象,只需要装一个简单的解释环境就可以了(和Perl很象的地方很多,例如正则表达式的支持)。RoR避免了繁杂的XML配置文件,一个Rails应用程序只需要简单编程就可以通过影射和发现配置好所有的东西。你的应用程序和数据库里已经包含了所有Rails需要的东西。
  • 编码简单,很多代码都是可以自动生成,可以自动生成MVC,可以自动生成框架、Web服务。甚至你只要写上一行代码就可以实现以前使用Java上百行代码的工作量,比其他开发工具速度快10倍。当然越少的编程量就意味着越少的bug。
      5、关于稳定性目前还没有很全面的数据,暂时还不太清楚。关于效率,从相关的资料上可以看到有人说ROR的性能和开发效率比java的struts+spring+hibernate经典搭配还要快15%-30%。
       三、 Ruby on Rails 的其他特性
       不需要编译Ruby中没有编译的概念。一切都在运行时发生作用。有人认为代码编译可以防止编码时的粗心。那么,你可能应该去看一下测试驱动开发是怎么工作的,连续的代码集成(当然了,不是每天都要构建),单元测试(不涉及数据库和web服务的测试)和依赖注入可以帮助你生成质量良好的代码,使你能够充满自信的灵活的改变你的代码。编译的保障作用一下子变的不那么重要了。

  动态增加类的行为——不使用Decorator模式在静态类型语言中,要想动态增加类的行为,我们可以使用 Decorator模式或者模板方法。而在Ruby中,有更多的方法可以在不复杂化对象设计结构的情况下,很简单地做到这一点。这只是因为语言本身对它的 支持,例如:将模块作为minxin使用,使用class_eval, instance_eval方法等。事实上,甚至可以通过编程方式在运行时定义类的方法。在静态类型语言中,也可以通过代码生成来完成它。但了解更多的方 法,可以让你向一个优秀的问题解决者迈进一步。

  (译者注:mixin在面向对象编程语言中是一种提供某些功能给子类继承的类,但mixin并不能实例化。 从某个mixin继承并不是什么特殊的形式,而它更适于收集功能。某个子类甚至可以通过继承一个或者多个mixin选择继承它的全部或者多数功能。一个 mixin能延期到运行时定义和绑定方法,而属性和实例参数也可在编译时才被定义。这不同于我们常见的方式,比如先定义所有的属性、方法,并在编译时进行 初始化等。)

  通过去除所有的类型声明和接口声明,将代码库“瘦身”10-20% Ruby是一门动态类型语言。你不需要 在使用变量之前声明它的类型,或者为方法签名中的参数定义合适的类型。这意味着你的代码会变得更“瘦”,但这是以代码难于调试和难于进行错误跟踪为代价 的,对吗?并非如此,如果你相信单元测试和良好的面向对象设计的概念。如果你的类小而紧凑,类的方法短而精良,并且经过了很好的单元测试,那么调试和错误 跟踪将会很简单。

  及时Ajax化Ruby on Rails内置对script.aculo.us库的支持(script.aculo.us是一个Ajax类库,里面包含了大量炫目的Ajax效果,使用 这些效果,可以让你的应用更具有交互友好性)。在许多情况下,这相当于在ASP.NET中将一个控件标签拖到html页面上,然后在别的地方(在 Rails中,这个地方是控制器)为其编写方法以处理Ajax在服务器端的Web请求。你的Web页面支持Ajax功能,就像Google Suggest的autocomplete或者拖拉排序那样。就这么简单。

  使用Rails,不需要专门的O/R映射使用命名惯例对数据库 的表和列以及你的领域模型对象命名,可以让你忘记亲自进行O/R映射的痛苦。Ruby on Rails会为你实现这一切。在最简单的情况下,在视图上增加一个字段并对它进行持久化,你只需要在html中增加一个文本框并在相应的数据库表中增加一 个新列,然后你就可以看到,新输入的文字被存储在了数据库新建的列中。真的,就这么简单。

  用Ruby脚本构建、部署或发布应用,比使用NAnt更好。Rake是Ruby on Rails开发中使用的标准构建工具。Rake使用Ruby语法,这意味着在构建和部署不同的应用时,你需要使用Ruby去编写你的构建脚本。作为一门语 言,Ruby在以下几个方面尤为出色:处理字符串,文件和目录的创建,高级的正则表达式支持。想一下,有多少次,你需要在批处理和NAnt脚本中执行以下 的操作:把服务器A上a目录下所有以.sql为扩展名的文件拷贝到服务器B,然后依次执行这些文件。如果你讨厌批处理脚本在编程方面的限制,或者不喜欢以 NAnt中那样的xml格式去编写脚本,你会喜欢Rake的。

  不劳无获学习Ruby的时候,我必须克服许多障碍。首先,我不得不接受这样的事实:与正在使用的“舒适”的技术相比,寻找Ruby的解决方案,要花去我更多的时间。但是,用不了多久,你就会感到喜悦,因为你可以用大量的方式解决不同的问题。其次,学习Ruby/Rails让我受益非浅,通过学以致用,加深了对知识的理解。记住,对于你曾耗费时间学过的东西,要么使用它,要么任其消逝。

       部份内容引自:
   
http://blog.csdn.net/jlvince/archive/2007/06/04/1637414.aspx
   http://hi.baidu.com/oiunt/blog/item/9d205160d2c75745ebf8f89f.html

      
posted on 2007-06-17 00:29  eric.wen  阅读(347)  评论(0编辑  收藏  举报