以下内容来自网络:
一、介绍
在Ruby中,一切皆是对象。下面举一个例子来更直观地说明Ruby语言的这一特点。
在Java中,求一个数的绝对值的代码如下。 int c = Math.abs(-20); 而在Ruby语言中,一切皆是对象,也就是说“-20”这个数也是一个对象,
因此,求一个数绝对值的Ruby代码形式如下。 c = -20.abs 这样的代码编写方式是不是更形象一些呢?
Rails 框架是一个更符合实际需要而且更高效的Web开发框架,Rails结合了PHP体系的优点(快速开发)和Java体系的优点(程序规整)。
Rails是一个全栈式的MVC框架,换句话说,通过Rails可以实现MVC模式中的各个层次,并使它们无缝地协同运转起来。
在实际开发一个MVC模式的Web应用项目时,如果使用Java开发,需要用到Struts、Hibernate和Spring等框架,而且需要额外整合3个框架开发出的内容。而使用Ruby语言开发相同的项目时,只需要用到Rails框架就可以完成。
RoR的效率肯定要比Java高一个数量级,这确实是事实,比PHP至少也要高好几倍,这也是事实,这一点在这篇文章中不展开了,
但是为什么开发效率这么高,我也想谈谈我的看法,当然还很不成熟的看法:
一、主要原因是ruby语言的语法非常强大我记得庄表伟说过一个观点:“框架是强化的语法”,意思就是说语法比较弱,所以才需要n多框架,如果语法很强,框架就很少。
这一点在Java和ruby身上得到了验证。
1、ruby的open class VS Java的AOP,反射、动态代理,字节码增强等技术JDK1.3开始引入反射,
就已经打开了Java这种静态类型语言通往动态类型语法的潘多拉魔盒。随后的动态代理技术,字节码增强技术,
静态和动态的AOP技术开始层出不穷,为什么呢?就是需要在程序运行期动态改变对象的行为。但是对于ruby来说是open class的,
语法级别上就支持程序运行期修改对象行为,所以Java需要很复杂技术才能实现的功能对于ruby来说就是非常简单的搞定了。
2、ruby的duck typing VS Java的IoC,泛型Java的IoC不用说了,泛型在库级别也开始广泛使用。IoC就是根据对象行为来进行对象组装,
泛型就是在不确定对象行为的情况下确定对象的交互。但是ruby的对象行为是在运行期才确定的,天然就是泛型的,行为不是静态的,所以不需要IoC。
3、ruby的block,closure VS Java的匿名内部类大家对spring的Template肯定印象很深刻,但是这是ruby标准的用法,所以各种资源释放,
异常处理在语法级别上就支持的很好,做起来很简单。
4、ruby的Meta programming VS Java缺乏method_missing机制大家耳熟能详了,Java没有这么强的Meta programming,很多ruby magic耍不出来。
5、脚本语言 VS 编译语言这也是一个很大的优势,脚本编程速度确实快。
二、rails框架确实做的很棒
1、full-stackrails是一个概念一致的fullstack框架,不知道为什么,在Java世界目前只有Rife这一个可以和RoR相提并论的fullstack框架,
但是Rife的实现并不好(作者从PHP转过来的,和DHH爆发过口水战)。不过因为底层语法支持的不同,用Java是做不出来RoR框架的。
因此也有人用Groovy做Grails,不过这帮人不太争气。
2、CoC这个不用说了,现在很多Java框架开始吸收这一点。
3、为web开发良身打造web开发需要用到各种技术全部提供,绝对的贴心,如果用Java,这些东西都需要自己集成或者自己实现,省了一大堆麻烦事。
4、开发测试部署快速这个不说了,Java劣势太明显了关于“效率提高的来源”问题,我的理解就是次要复杂性被ROR降低到了极致。
说的难听一点,不是ROR太聪明,而是我们以前做得蠢事太多了。
各种各样的xml, taglib,单元测试困难 ... ...做过项目的人都知道这些次要复杂性很多情况下真的是要命的。
ROR没有降低软件的内在复杂性,也就是业务问题。但是它把复杂性降低到无限趋近于业务复杂性,也有人称ROR是Web开发的DSL。
而解决业务问题正是人发挥聪明才智的地方,ROR不能代替人,但是它把人从次要复杂性的泥潭之中解救了出来。
参考资料:南京赛威信息科技
二、
学习书籍推荐:http://www.iteye.com/topic/107479
分享到:
相关推荐
这几天一直在学习使用RoR(Ruby on Rails),想建立一个功能全面一点的LBS(Location Based Service)网站。但是对于我这个RoR的初学者(仅有几天时间)来说,毕竟太复杂了。因此本文试图简化原来的设计思路,抛弃一切...
这两种形式的区别在于,当构造字面量时,Ruby对字符串所做处理的多少有所不同。Ruby对单引号串处理得很少。除了极少的一些例外。键入到字符串字面量的内容就构成了这个字符串的值。 Ruby对双引号字符串有更多的处理...
1. ActiveRecord:Ruby on Rails的ORM框架,通过简单的Ruby代码即可完成复杂的数据库操作。 2. Active Record查询接口:提供了丰富的查询语法,如链式查询和条件查询。 3. Testing:Rails内置测试框架,包括Unit ...
#### 1. 什么是Rack? Rack是Ruby世界中的一个轻量级、灵活的Web服务器接口规范,它定义了一个统一的标准,使得Ruby Web应用能够与不同的Web服务器无缝集成。Rack简化了Ruby Web应用的部署过程,同时也提供了强大的...
《Ruby编程语言初探——以Head First风格学习》 Ruby是一种动态、面向对象的脚本语言,由日本的松本行弘(Yukihiro Matsumoto)于1995年设计并开发。Ruby的设计理念强调程序员的生产力和代码的可读性,它将简单性和...
《Ruby编程语言在RottenPotatoes演示应用中的实践——初探Rails Intro》 在IT行业中,Ruby作为一种简洁、优雅的编程语言,因其强大的Web开发框架Ruby on Rails而广受开发者喜爱。本篇将深入探讨一个名为"ruby-...
【Selenium自动化测试初探】 本文旨在探讨如何利用Selenium、JUnit和Hudson构建一个自动化测试框架。Selenium是一款强大的开源Web功能测试工具,支持多种编程语言,如Ruby、Python、Java、Perl和C#。它能直接在...
《Ruby on Rails初探:构建ProHunter投资组合》 Ruby on Rails(简称Rails)是一种基于Ruby语言的开源Web开发框架,以其MVC(Model-View-Controller)架构、DRY(Don't Repeat Yourself)原则以及“Convention over...
文中提到的Crowbar语言,是一种静态无类型的语言,与Perl、Ruby、Python等解释型脚本语言有一定的相似性。其特点是无需声明变量类型,编译器在变量初值赋予的过程中,自动处理了变量声明。而变量的命名规则要求变量...
这篇文章标题为《基于SVM的哈萨克语文本分类初探》,描述部分信息不完整,但根据标题可以推测文章主要研究了如何利用支持向量机(SVM)算法进行哈萨克语文本的分类工作。SVM是一种常见的机器学习算法,广泛应用于...
《PersonalBlogV1:Ruby构建个人博客初探》 在当今互联网时代,个人博客成为许多技术爱好者、作家、学者分享思想、记录生活、传播知识的重要平台。"PersonalBlogV1"项目就是一个基于Ruby语言构建的个人博客系统,...
FingerGestures研究院之初探Unity手势操作(一) iTween研究院之学习笔记Move移动篇(一) Android研究院之应用程序对话框大合集(一) Cocos2D研究院之构建游戏开发环境(一) Direct3D研究院之创建第一个...
1. Java 5 Concurrent包中的锁机制:Java 5引入了Concurrent包,它为多线程编程提供了丰富的工具和类,如`java.util.concurrent.locks`包中的锁机制,包括可重入锁、读写锁等,极大地提高了并发性能和开发效率。...
性能测试用例设计初探 这一章节可能会讨论性能测试的基本概念、设计思路以及具体的测试案例。例如: - **性能测试的目标**:识别系统瓶颈,优化性能指标。 - **测试用例设计原则**:确保测试覆盖全面,结果准确...
《初探Rails应用:Artist与Tracks的交互》 在编程世界中,Ruby on Rails(简称Rails)是一款基于Ruby语言的开源Web开发框架,以其“约定优于配置”(Convention over Configuration)的理念深受开发者喜爱。本篇...
【标题】:“chefspacerepo”初探:基于JavaScript的配置管理实践 【描述】:在当前的IT环境中,自动化运维和配置管理扮演着至关重要的角色。"chefspacerepo"似乎是一个针对这方面需求的项目,尤其适用于那些希望...
- **Python_3_初探**:适合想要了解Python 3新特性的学习者,通过对比Python 2版本的不同之处,帮助读者更好地适应新版语言的变化。 - **Python_Pro编程_FAQ**:汇集了常见的Python编程问题及其解答,是解决实际编程...
在这个“FullStack:这是我的第一个全栈Web应用程序”项目中,开发者可能初探了全栈开发的各个环节。 全栈Web开发的关键在于理解并掌握多种技术,包括但不限于HTML(超文本标记语言)、CSS(层叠样式表)和...