Rails - 开发企业级应用另一种选择
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的敏捷开发吧,一定会给您带来不少的惊喜!
WorkXP 核心成员 袁平