你會嘗試用Rails在下一個項目嗎?
剛開始接觸Ruby很抵觸
在剛進入Rails的世界的時候,對于有4年JAVA開發(fā)經(jīng)驗的我來說,對Rails的抵觸心理還是挺強的,原因有兩個:
1.想精通一門語言,不想分散精力,而且認為Java是很***的
2.看了下Ruby的語法,感覺非常亂,不像Java那樣規(guī)整,簡單
我相信也有大部分Java程序員會和我有同樣的感受。由于后面有一個項目由Rails實現(xiàn)是***選擇。所以迫不得已開始學(xué)習(xí)Rails,看的書是《Agile Web Development with Rails 3rd_Edition》。
對Rails觀點的轉(zhuǎn)變
看了三章后,發(fā)現(xiàn)用Rails去實現(xiàn)一個Web應(yīng)用是如此的簡單,幾十行代碼就實現(xiàn)了Java幾百行代碼的功能。所以非常好奇的繼續(xù)看下去,想知道為什么可以這么簡單。通過學(xué)習(xí)慢慢發(fā)現(xiàn)了不少Rails的好處。
◆ 習(xí)慣約定優(yōu)于配置
在Rails里沒有很多的配置文件要去寫,我想Java程序員***的痛苦之一就是XML配置文件了,不小心寫錯了也不好調(diào)試,不知道問題出在哪里。 之前Struts+Spring+Hibernate非常流行,要實現(xiàn)一個簡單功能,你要配置幾個XML文件?但在Rails里,使用約定就行了,當有特 殊情況時,再去修改配置。
◆ 代碼簡潔
發(fā)現(xiàn)同樣實現(xiàn)一個功能,代碼量是Java的1/3左右,甚至還要少。
對Rails越來越有好感,并且喜歡上它了。
如何進行敏捷開發(fā)
敏捷開發(fā) ( Agile development )是一種以人為核心、迭代、循序漸進的開發(fā)方法。
后來我們團隊用Rails做了三個成功的項目,一個在線CRM應(yīng)用,體會到了敏捷開發(fā)的好處。
◆ 結(jié)對編程
我們是兩個人結(jié)對編程,做任何事情都是Pair的,包括分析、寫測試、寫實現(xiàn)代碼或者重構(gòu)。Pair做事有很多好處,兩個人在一起探討很容易產(chǎn)生思想的火花,也不容易走上偏路,還會及時發(fā)現(xiàn)一些小Bug。
◆ 重構(gòu)
相信大家對它都很熟悉了,有很多很多的書用來介紹重構(gòu),最著名的是Martin的《重構(gòu)》,Joshua的《從重構(gòu)到模式》等。重構(gòu)是在不改變系統(tǒng) 外部行為下,對內(nèi)部結(jié)構(gòu)進行整理優(yōu)化,使得代碼盡量簡單、優(yōu)美、可擴展。我們經(jīng)常會重構(gòu),好處就是項目代碼一直是非常容易維護的。
◆ 小版本發(fā)布
在敏捷開發(fā)中,不會出現(xiàn)這種情況,拿到需求以后就閉門造車,直到***才將產(chǎn)品交付給客戶,而是盡量多的產(chǎn)品發(fā)布,一般以周、月為單位。這樣,客戶每 隔一段時間就會拿到發(fā)布的產(chǎn)品進行試用,而我們可以從客戶那得到更多的反饋來改進產(chǎn)品,不會發(fā)生客戶說“這不是我想要的東西!" 的情況。
◆ 客戶一起參與
客戶是與開發(fā)團隊一起工作的,團隊到客戶現(xiàn)場進行開發(fā)或者邀請客戶到團隊公司里來開發(fā)。如果開發(fā)過程中有什么問題或者產(chǎn)品經(jīng)過一個迭代后,能夠以最快速度得到客戶的反饋。
敏捷開發(fā)過程與傳統(tǒng)的開發(fā)過程有很大不同,在這過程中,團隊是有激情有活力的,能夠適應(yīng)更大的變化,做出更高質(zhì)量的軟件。
性能
據(jù)robbin說:“JavaEye的PV到了140萬,仍然是單臺Web服務(wù)器,Rails處理動態(tài)請求超過340萬,除了真實用戶訪問,還有API,RSS以及很多爬蟲的請求。”
易趣,阿里巴巴剛開始也都用的PHP,國外的Twitter也用的是 Rails,我們在做了三個企業(yè)級項目和一個SaaS的CRM(WorkXP)之后,我們都沒發(fā)現(xiàn)很多人所擔心的性能問題,所以大家不用急著擔心性能問題,如果真到了有性能問題的時候,說明你已經(jīng)非常成功了,到那時再遷移到Java平臺也來的及。
小團隊的***選擇
我非常同意JavaEye的robbin觀點:“我認為目前小公司唯一的活路就是高效率的小規(guī)模團隊,這樣的團隊才能充分發(fā)揮小公司靈活創(chuàng)新的特點,才有可能在某些方面戰(zhàn)勝大公司,也才有可能在人才競爭方面勝出。”
WorkXP只有2個開發(fā)人員,用了3個月的時間就上線了!為什么可以這么快完成這么優(yōu)秀的產(chǎn)品?這正是Rails敏捷開發(fā)帶來的好處。如果用Java開發(fā),我不知道半年是否可以上線? 所以如果你是小團隊創(chuàng)業(yè),可以考慮用Rails敏捷開發(fā)。
下一個項目,嘗試用Rails嗎?
現(xiàn)在我們再打算做一個項目或產(chǎn)品時,會多了一個選擇,用J2EE還是Rails?這個要根據(jù)團隊實際情況和項目需求來定,如果是小團隊創(chuàng)業(yè),試一下Rails的敏捷開發(fā)吧,一定會給您帶來不少的驚喜!
原文:http://www.cnblogs.com/yuanpingi/archive/2011/07/11/rails_alternative_j2ee.html
【編輯推薦】