论坛首页 编程语言技术论坛

Rails - 开发企业级应用另一种选择

浏览 13481 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (2) :: 隐藏帖 (14)
作者 正文
   发表时间:2011-07-13   最后修改:2011-07-16

Rails (Ruby on Rails - 基于Ruby语言的一个Web应用框架,类似Java里的Struts,Spring,Hibernate等框架)

目的
其实我写这篇文章的目的并不是想把Java程序员拉到Ruby阵营中来,只是想让Java程序员们知道在有些情况下,Rails可能是一个更好的选择,并且通过学习Ruby会加深对Java语言的理解,也希望通过这篇文章能让您知道敏捷开发的魅力。

刚开始接触Ruby很抵触
在刚进入Rails的世界的时候,对于有4年JAVA开发经验的我来说,对Rails的抵触心理还是挺强的,原因有两个:
1.想精通一门语言,不想分散精力,而且认为Java是很完美的
2.看了下Ruby的语法,感觉非常乱,不像Java那样规整,简单
我相信也有大部分Java程序员会和我有同样的感受。由于后面有一个项目由Rails实现是最佳选择。所以迫不得已开始学习Rails,看的书是《Agile Web Development with Rails 3rd_Edition》。

对Rails观点的转变
看了三章后,发现用Rails去实现一个Web应用是如此的简单,几十行代码就实现了Java几百行代码的功能。所以非常好奇的继续看下去,想知道为什么可以这么简单。通过学习慢慢发现了不少Rails的好处。
习惯约定优于配置
在Rails里没有很多的配置文件要去写,我想Java程序员最大的痛苦之一就是XML配置文件了,不小心写错了也不好调试,不知道问题出在哪里。之前Struts+Spring+Hibernate非常流行,要实现一个简单功能,你要配置几个XML文件?但在Rails里,使用约定就行了,当有特殊情况时,再去修改配置。
代码简洁
发现同样实现一个功能,代码量是Java的1/3左右,甚至还要少。
对Rails越来越有好感,并且喜欢上它了。


如何进行敏捷开发
敏捷开发 (   Agile development )是一种以人为核心、迭代、循序渐进的开发方法。
后来我们团队用Rails做了三个成功的项目,一个在线CRM应用,体会到了敏捷开发的好处。
结对编程
我们是两个人结对编程,做任何事情都是Pair的,包括分析、写测试、写实现代码或者重构。Pair做事有很多好处,两个人在一起探讨很容易产生思想的火花,也不容易走上偏路,还会及时发现一些小Bug。
重构
相信大家对它都很熟悉了,有很多很多的书用来介绍重构,最着名的是Martin的《重构》,Joshua的《从重构到模式》等。重构是在不改变系统外部行为下,对内部结构进行整理优化,使得代码尽量简单、优美、可扩展。我们经常会重构,好处就是项目代码一直是非常容易维护的。
小版本发布
在敏捷开发中,不会出现这种情况,拿到需求以后就闭门造车,直到最后才将产品交付给客户,而是尽量多的产品发布,一般以周、月为单位。这样,客户每隔一段时间就会拿到发布的产品进行试用,而我们可以从客户那得到更多的反馈来改进产品,不会发生客户说“这不是我想要的东西!" 的情况。
客户一起参与
客户是与开发团队一起工作的,团队到客户现场进行开发或者邀请客户到团队公司里来开发。如果开发过程中有什么问题或者产品经过一个迭代后,能够以最快速度得到客户的反馈。
敏捷开发过程与传统的开发过程有很大不同,在这过程中,团队是有激情有活力的,能够适应更大的变化,做出更高质量的软件。

性能
据robbin说:“JavaEye的PV到了140万,仍然是单台Web服务器,Rails处理动态请求超过340万,除了真实用户访问,还有API,RSS以及很多爬虫的请求。”
易趣,阿里巴巴刚开始也都用的PHP,国外的Twitter也用的是 Rails,我们在做了三个企业级项目和一个SaaS的CRM(WorkXP)之后,我们都没发现很多人所担心的性能问题,所以大家不用急着担心性能问题,如果真到了有性能问题的时候,说明你已经非常成功了,到那时再迁移到Java平台也来的及。


小团队的最佳选择
我非常同意JavaEye的robbin观点:“我认为目前小公司唯一的活路就是高效率的小规模团队,这样的团队才能充分发挥小公司灵活创新的特点,才有可能在某些方面战胜大公司,也才有可能在人才竞争方面胜出。”
WorkXP只有2个开发人员,用了3个月的时间就上线了!为什么可以这么快完成这么优秀的产品?这正是Rails敏捷开发带来的好处。如果用Java开发,我不知道半年是否可以上线? 所以如果你是小团队创业,可以考虑用Rails敏捷开发。


下一个项目,尝试用Rails吗?
现在我们再打算做一个项目或产品时,会多了一个选择,用J2EE还是Rails?这个要根据团队实际情况和项目需求来定,如果是小团队创业,试一下Rails的敏捷开发吧,一定会给您带来不少的惊喜!

 

   发表时间:2011-07-13  
当年ror横空出世影响了php, 论敏捷开发,很多人就想到ruby,
但php已经是遍地都是, 比较像rails的yii,

像不到的是java还处理这么不敏捷开发时代,
学习rails对于一个phper来讲, 最新鲜的应用得灵活的语法, 还有强大的gem(php中的pear),

还有楼主没提到的dsl, yaml, 各种最轻量级应用,
在ruby社区, rails框架却一直有着统一天下的状况, 虽然都是新兴的动态语言, 但却没像php和python的框架百发齐放。
0 请登录后投票
   发表时间:2011-07-13  
coolesting 写道

还有楼主没提到的dsl, yaml, 各种最轻量级应用,
在ruby社区, rails框架却一直有着统一天下的状况, 虽然都是新兴的动态语言, 但却没像php和python的框架百发齐放。

呵呵,看来你对Rails还是非常了解的。这篇文章主要是写给初学Ruby,想从Java转Ruby过来的同学们看的。写的太深,不好理解,PHP的确是一个非常好的语言,并且有悠久的历史(相对Ruby)。现在国内电子商务的兴起,PHPer成为了最热资源了~
0 请登录后投票
   发表时间:2011-07-14  
coolesting 写道
当年ror横空出世影响了php, 论敏捷开发,很多人就想到ruby,
但php已经是遍地都是, 比较像rails的yii,

像不到的是java还处理这么不敏捷开发时代,
学习rails对于一个phper来讲, 最新鲜的应用得灵活的语法, 还有强大的gem(php中的pear),

还有楼主没提到的dsl, yaml, 各种最轻量级应用,
在ruby社区, rails框架却一直有着统一天下的状况, 虽然都是新兴的动态语言, 但却没像php和python的框架百发齐放。



gem ?

rake还有点意义,gem..可有可无。
0 请登录后投票
   发表时间:2011-07-14  
ray_linn 写道
coolesting 写道
当年ror横空出世影响了php, 论敏捷开发,很多人就想到ruby,
但php已经是遍地都是, 比较像rails的yii,

像不到的是java还处理这么不敏捷开发时代,
学习rails对于一个phper来讲, 最新鲜的应用得灵活的语法, 还有强大的gem(php中的pear),

还有楼主没提到的dsl, yaml, 各种最轻量级应用,
在ruby社区, rails框架却一直有着统一天下的状况, 虽然都是新兴的动态语言, 但却没像php和python的框架百发齐放。



gem ?

rake还有点意义,gem..可有可无。

这怎么讲?
0 请登录后投票
   发表时间:2011-07-14  
j_butterfly 写道
ray_linn 写道
coolesting 写道
当年ror横空出世影响了php, 论敏捷开发,很多人就想到ruby,
但php已经是遍地都是, 比较像rails的yii,

像不到的是java还处理这么不敏捷开发时代,
学习rails对于一个phper来讲, 最新鲜的应用得灵活的语法, 还有强大的gem(php中的pear),

还有楼主没提到的dsl, yaml, 各种最轻量级应用,
在ruby社区, rails框架却一直有着统一天下的状况, 虽然都是新兴的动态语言, 但却没像php和python的框架百发齐放。



gem ?

rake还有点意义,gem..可有可无。

这怎么讲?

这人喜欢乱喷,不用理会
0 请登录后投票
   发表时间:2011-07-15  
Java也可以敏捷么?
答案是肯定的
请看下spring roo的演示视频(5分钟搞定一个模块)
0 请登录后投票
   发表时间:2011-07-15  
KimHo 写道
Java也可以敏捷么?
答案是肯定的
请看下spring roo的演示视频(5分钟搞定一个模块)

是的,Spring对EJB影响非常大,我个人也非常喜欢spring。
但是看了Rails之后,才知道什么是简单
0 请登录后投票
   发表时间:2011-07-15  
性能应该不是问题吧,我们用rails做API,单台服务器可以轻松承受500万PV/天; API是加了memcached了
0 请登录后投票
   发表时间:2011-07-15  
zeeler 写道
性能应该不是问题吧,我们用rails做API,单台服务器可以轻松承受500万PV/天; API是加了memcached了

嗯 性能一般不用考虑~
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics