在J道上看到的:RoR可否替代J2EE?

RoR可否替代J2EE?

iwtask 2006年12月14日 21:32 回覆此消息回覆

<iframe marginwidth="0" marginheight="0" src="http://www.jdon.com/sales/336x280.html" frameborder="0" width="336" scrolling="no" height="280"> </iframe>

最近在一本雜誌上看到,使用Ruby on Rails開發Web應用十分高效,不知是否有人知道RoR最擅長哪方面的應用開發?與J2EE的比較?能否替代J2EE? 請!我始終認爲我們目前所用的開發模式(使用J2EE架構+MVC模式,但未用EJB)效率不太高,想換一種架構。

Re: RoR可否替代J2EE? 發表: 2006年12月16日 19:58 回覆
wlmouse 發表文章: 31/ 註冊時間: 2006年11月09日 15:58
Ruby on Rails是最新出現的Web開發方式。通過所謂的Rails框架,幾個簡單的命令,就可以生成一個缺省的數據表CRUD程序。但是Ruby on Rails在很多方面還是很不成熟的。至少在短期內,它還無法承擔大型項目的開發。
在事務處理、分佈式應用等高端和複雜的地方,J2EE還是最主流的選擇,Microsoft.NET佔據了剩下的部分。
Ruby是解釋語言,這是它的優勢,同時也是劣勢。解釋語言開發靈活,但是同時,在開發環境方面就差了。看看JavaScript吧,很多函數都要自己記。大家已經被Eclpse和VisualStudio這些產品養叼了,所以沒有了一按“.”方法就彈出來、語法錯誤自動檢查、自動重構這些功能,就感到相當麻煩。而且因爲是解釋執行,在執行效率上比較低,如果負載比較大的話,承受能力不如編譯語言。
我估計你開發的多是中小項目吧?中小項目的業務邏輯很一般都很簡單,表現層開發則佔了決大多數時間。所以,你需要一個高速開發表現層的框架。
我給你三種選擇:一是Microsoft的ASP.net。Microsoft的東西入門容易,表現層開發決大多數功能都可以通過拖拽實現。缺點是隻能在Windows平臺上實現。二是繼續使用J2EE,但要選擇一個新的表現層框架。1.JSF(JavaEE5官方標準),Sun爲了和微軟競爭,推出了Sun Java Creater2和最新的Netbeans5.5。它們都支持拖拽式開發JSF,缺點是資料比較少。2.Tapestry,相當不錯的表現層框架,缺點是學習曲線太高,資料太少。3.Wicket,新出現的框架,用Swing的方式開發Web應用,學習曲線比較低,但目前資料太少,而且因爲比較新,不夠成熟,所以還無法承擔大型項目開發。你可以發現,JavaEE在表現層的開發上,新的高效框架還是很多的。但都有一個致命的缺點,資料太少。可能是因爲Struts統治的太久了吧。三就是你說的Ruby on Rails了。
具體如何選擇,你可以自己比較。而且開發的時候,要根據客戶的要求和你自己的情況綜合考慮。

Re: RoR可否替代J2EE? 發表: 2006年12月18日 16:16 回覆
banq 發表文章: 7457/ 註冊時間: 2002年08月03日 17:08
同意樓上

如果有人說“RoR會替代J2EE”,過於武斷,RoR爲什麼會興起,是因爲一個叫Martin Fowler的人看上了它,MF是什麼人?是所謂OO流派大師,其實我認爲他是一個建模專家(分析專家),而非軟件架構專家。

更重要的是:未來不是語言之爭,而是建模語言之爭,RoR雖然是一個好的建模語言,也就是很快能夠表達建模意思,但是其代碼架構不如Java深入和寬廣。

小的應用使用ROR可以,如果這個小系統將來可能擴展到大系統,那麼就要Java,到時再過渡Java平臺,手術就大了,所以軟件架構的可伸縮性很重要,軟件是有生命的,是不斷成長的。

Re: RoR可否替代J2EE? 發表: 2006年12月18日 16:42 回覆
banq 發表文章: 7457/ 註冊時間: 2002年08月03日 17:08
關於RoR的快,這是一面之辭,如果犧牲相關設計質量,Java也能夠達到相同的快速開發,例如Hibernate創始人開發的JBoss Seam,看看它的一個案例就可以。相關文章:

http://www.jdon.com/jive/article.jsp?forum=62&thread=27279

如果還覺得不算快,我設計的JdonFramework更快,分分鐘開發一個小的應用,而且易於擴展。相關討論:
http://www.jdon.com/jive/thread.jsp?forum=91&thread=26330

所以,不是說Java做不到快,我們更應該着重於軟件設計思想的探討。

ROR爲什麼受到MF推崇,實際它也是Evans DDD的實現,所以,使用Evans DDD這樣領域驅動設計以後,可以讓我們完全以對象方式建模 會話,表達需求,這纔是根本。

關於RoR代表的動態語言(Groovy Python Ruby Smalltalk)與Java/.NET靜態語言之爭又是另外一個話題。

總結:ROR亮點無外乎體現下面三點:

1. 動態語言
2. Evans DDD
3. 簡單的面向建模人員語言

以上三點中,後面兩點需要深刻的OO思維才能發揮效率,現在很多人使用Java之所以效率不高,其實是沒有形成純正的OO思維,所以,用起OO工具不爽,同樣也是RoR,所以,只有傳統過程思維的人使用RoR,只能使用到RoR的動態語言特性,這個就和PHP相似了。

相關連接:
面向對象與領域建模

Re: RoR可否替代J2EE? 發表: 2006年12月19日 16:43 回覆
lgx522 發表文章: 11/ 註冊時間: 2004年04月28日 15:37
最近正學習RoR,驚歎於其開發效率。不過筆者以爲RoR與Java的應用領域大不相同,不存在什麼替代之說。
Java最重要的特點,是其廣闊的集成性。各種平臺、各類技術、各種設備,都可與Java溶合。這對於IT世界長久以來產生的“信息孤島”問題大有意義。可惜國內的J2EE一開始就走偏了,關注點一直聚焦於Web。老實說,單純的Web層面,老掉牙的ASP就已經做得很好了,更不用說近來火爆的PHP。如果Java只需幹那點Web層的活兒,只要堅持JSP模式1,效率足以勝過前二者,甚至包括RoR(Java類庫的豐富與成熟、JavaBean良好的封裝性)。
所以Java是一個歷經多年發展與考驗的集大成的平臺,與MS的.NET平臺相對應(MS的.NET是壟斷性的平臺,無法與Java平臺的開放性相比)。RoR是一個新興的Web開發框架,其位置是與PHP等火爆的動態Web開發相對應的。所以Java與Ror二者目前是不可等量齊觀的。
如果RoR真的存在代替Java的可能性,除非Ruby在Java廣泛應用的各領域全面超過Java,這種可能性現在看來不會很大。

Re: RoR可否替代J2EE? 發表: 2006年12月20日 01:35 回覆
xf 發表文章: 23/ 註冊時間: 2006年06月21日 16:56
I completely agree with your point.of view. A lot of medium and small projects have not very many business process to be implemented. A lot of emphasises are placed on presentation tier or we say "GUI". Besides this, i think general CRUD also takes us tremendious energy and a lot of time.
In my opinion, I haven't seen any elegant, efficient, stable solution that solves these problems. Whether pattern such as MVC, new technology such as Ruby, or some thing else....
As to me, I have take a lot of time on research of these articles. And I consider that there might be two way that could be resolve these problems.
1. Technology. Smart client.
Combining with advantages of B/S and C/S enable your application more stable and more efficient.

2. Methodology of design
Thinking of container and architecture centric are two important thinking.

Acutally, Ruby on Rails and other script language have not these two charactristics. We could use them in some aspects but not most of the aspects that we might encounter in a project.
Technology of code generator is not bad. But do you expect that your projects is full of stuff that are generated by code generator that are not easy to read or not easy to maintenance.

The framework designed with thinking of container is able to provider more high level abstraction and encapsulation.

I prefer to build a mechanism that likes virtual machine. The runtime environment is based on container. Instead of code generator, we can choose various configurations describle runtime environment, define behaviors regarding what runtime environment wants to do. Configuration should be as simple as that has.
For example, instead of adding Swing components to a view directly, it's better to define the position information and events of these components in a file and build a GUI container whose responsible is parsing view file and adding them to a view.

The same thing that we can do is buiding a CRUD container. Of course, we have various CRUD container now such as hibernate, JDO and so on. It can not be denied that these containers are very good, very powerful and robust. One thing we just need to do is building a simple adapt of a CRUD container that you want to use in your project in order not to expose more detail of persitence
technology.

Back to the topic of code generator, i prefer use code generator when i met some problems that is hard to be handled except by using code generator. For example, a checking logic is a very complicated expression that should be change depending on runtime environment. It might take a lot effort if we don't use code generator. Maybe, Ruby is a good choice for this case.

In a word, the more reusable that you have, the more efficent that you could do.

Re: RoR可否替代J2EE? 發表: 2006年12月20日 15:48 回覆
iwtask 發表文章: 6/ 註冊時間: 2006年11月09日 21:49
各位的觀點對我大有幫助,非常感謝!關於J2EE,RoR,.Net等均需要花費很大的精力去研究,我們開發產品所用到的往往是其中的一小部分,不敢輕易下結論評價熟好熟壞。學無止境。

Re: RoR可否替代J2EE? 發表: 2006年12月25日 15:44 回覆
banq 發表文章: 7457/ 註冊時間: 2002年08月03日 17:08
xf從code generator代碼自動生成角度談了這個問題。這個方面MDA正在方興未艾,但是DDD作者Evans本人並不看好這個方向。

我想再從動態語言/靜態語言方面,當初Java流行前,也發生過這個兩種性質的語言之爭,主要是java和smalltalk,都是OO語言,smalltalk曾經一度領先,但是,確實因爲靜態語言可以通過編譯器檢查語法錯誤,有一個code completion,最終贏得勝利,有了Java代表的靜態語言的今天,當然,那個時候.NET還沒出身呢。

現在,RoR攜卷靜態語言又發動了新的一輪進攻,特別是2005年底時,國外不少相關討論都涉及這個話題,那麼靜態語言既然能夠發動二次進攻,肯定對第一次失敗有了一個解決方案了,對,那就是單元測試,通過單元測試可以減少語法錯誤。

因爲在標準的OO開發中,測試用例總是可能在先的,而且OO設計中的斷言等等都是依賴單元測試生存的,所以,現在又有單元測試TDD之說。

如果我們TDD做得夠好,OO設計得又夠好,RoR代表的靜態和java/.NET動態就不相上下了。

問題是我們國內,70%程序員還在用傳統過程化思維寫程序,有更多的程序員不願意寫單元測試,TDD幾乎爲零。

所以,試圖跨越OO/DDD和TDD,一腳進入發達水平,是不可能的。切忌盲目追求新技術,要知道你有沒有基礎玩?

Re: RoR可否替代J2EE? 發表: 2006年12月30日 23:34 回覆
cain_templar 發表文章: 3/ 註冊時間: 2006年11月30日 21:44
是的,我也是覺得,Java平臺開發不是不能快,而是爲了對以後得週期負責不能那麼快.

回覆:RoR可否替代J2EE? 發表: 2007年01月09日 09:51 回覆
banq 發表文章: 7457/ 註冊時間: 2002年08月03日 17:08
相關討論:

http://www.jdon.com/jdonframework/rails.html

re:RoR可否替代J2EE? 發表: 2007年01月11日 17:18 回覆
FengShen_Xia 發表文章: 52/ 註冊時間: 2006年12月13日 17:30
受益匪淺

re:RoR可否替代J2EE? 發表: 2007年01月29日 15:48 回覆
banq 發表文章: 7457/ 註冊時間: 2002年08月03日 17:08
動態語言最新更多資料:

http://www.infoq.com/dynamic_languages/

Ruby資料:
http://www.infoq.com/ruby/

re:RoR可否替代J2EE? 發表: 2007年01月29日 20:59 回覆
jdonfans 發表文章: 43/ 註冊時間: 2007年01月16日 11:42
除了 C# 能動 Java 外, 沒有什麼能動它
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章