ozzzzzz 写道
本来这个星期我该开始讨论软件危机的问题了。但是这几天我忽然发现,ROR这个烫手的东西带给我们不可思议的效率,这个提高的来源究竟是来自何处,是一个目前很少有人讨论过的问题。而如果我们可以搞明白这个原因,我们对于今后技术和方法学发展的方向将有莫大的好处。
而由于我对于这个问题的结论还没有足够的实际例子做证据,因此我就不着急发言了。
我在2005年4月就听说RoR了,还看了他那个scaffold的例子,本来我对RoR也是持否定态度的,但是2006年在JavaEye有几个讨论打消了一些我的置疑,后来就开始用RoR了,这些讨论是:
http://www.iteye.com/topic/18675
http://www.iteye.com/topic/19534
http://www.iteye.com/topic/20298
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-stack
rails是一个概念一致的fullstack框架,不知道为什么,在Java世界目前只有Rife这一个可以和RoR相提并论的fullstack框架,但是Rife的实现并不好(作者从PHP转过来的,和DHH爆发过口水战)。
不过因为底层语法支持的不同,用Java是做不出来RoR框架的。因此也有人用Groovy做Grails,不过这帮人不太争气。
2、CoC
这个不用说了,现在很多Java框架开始吸收这一点
3、为web开发良身打造
web开发需要用到各种技术全部提供,绝对的贴心,如果用Java,这些东西都需要自己集成或者自己实现,省了一大堆麻烦事。
4、开发测试部署快速
这个不说了,Java劣势太明显了
暂时想到就这么多吧。
分享到:
相关推荐
ror实例ror实例ror实例
NULL 博文链接:https://xuxiangpan888.iteye.com/blog/266696
RoR性能优化经验谈,牛人对ror的优化,值得大家阅读
ror中文资料ror中文资料
ROR 架构介绍及了解
基于RoR的博客系统,代码风格简单清晰,前后太完善,适合初学者。
神经网络ror resenet模型 cifar10准确率89% cifar100准确率72%
之前本人在windows 上搭建ROR环境,屡屡受挫,上网查资料、加入ruby on rails的qq群,关注ruby社区等,没有得到一套完整的正确的方法,很多朋友说不要在windows 弄ROR,很费力。的确很费力,后来在朋友的帮助下,...
RoR选题方向—源代码
家蚕Ror2基因的克隆与表达分析,刘伟,陈菲,Ror家族属于受体酪氨酸激酶中的孤儿受体,在进化上非常保守。本研究克隆了家蚕Ror2基因BmRor2的ORF序列,BmRor2基因的ORF为1924 bp,编码638
ROR环境 Ruby version 1.9.3 (java) RubyGems version 1.8.24 Rack version 1.4 Rails version 3.2.12 JavaScript Runtime therubyrhino (Rhino) Active Record version 3.2.12 Action Pack version 3.2.12 ...
一个牛b的ror文本编辑插件
破解版本的JAR包,放到本地磁盘,ECLIPUS直接用,到JVM设置直接加 -noverify -javaagent:D:\javarebel.jar
mysqlDriver4ror.rarmysqlDriver4ror.rarmysqlDriver4ror.rarmysqlDriver4ror.rar
亲密网络 一个 ROR 应用程序 天蓝色:#20B8E8(32、184、232)地球红色:#FF6699(255、102、153)森林黑色#000033(0、0、51)
excel lib ror ruby
我自己再开发时的笔记
freemis 基于ror框架的mis ruby on rails的一个很好实例
简单介绍个ror的应用.以及其它方面。ROR介绍演讲课件 ruby on rails。
Source.Insight.v3.50.0027-ROR.rar