我的Blog我做主^_^

          走向一條通往JAVA的不歸路...

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            64 隨筆 :: 68 文章 :: 77 評論 :: 0 Trackbacks

          RoR可否替代J2EE?

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

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

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

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

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

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

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

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

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

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

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

          ROR為什么受到MF推崇,實際它也是Evans DDD的實現(xiàn),所以,使用Evans DDD這樣領域驅(qū)動設計以后,可以讓我們完全以對象方式建模 會話,表達需求,這才是根本。

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

          總結(jié):ROR亮點無外乎體現(xiàn)下面三點:

          1. 動態(tài)語言
          2. Evans DDD
          3. 簡單的面向建模人員語言

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

          相關連接:
          面向?qū)ο笈c領域建模

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

          Re: RoR可否替代J2EE? 發(fā)表: 2006年12月20日 01:35 回復
          xf 發(fā)表文章: 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? 發(fā)表: 2006年12月20日 15:48 回復
          iwtask 發(fā)表文章: 6/ 注冊時間: 2006年11月09日 21:49
          各位的觀點對我大有幫助,非常感謝!關于J2EE,RoR,.Net等均需要花費很大的精力去研究,我們開發(fā)產(chǎn)品所用到的往往是其中的一小部分,不敢輕易下結(jié)論評價熟好熟壞。學無止境。

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

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

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

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

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

          問題是我們國內(nèi),70%程序員還在用傳統(tǒng)過程化思維寫程序,有更多的程序員不愿意寫單元測試,TDD幾乎為零。

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

          Re: RoR可否替代J2EE? 發(fā)表: 2006年12月30日 23:34 回復
          cain_templar 發(fā)表文章: 3/ 注冊時間: 2006年11月30日 21:44
          是的,我也是覺得,Java平臺開發(fā)不是不能快,而是為了對以后得周期負責不能那么快.

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

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

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

          re:RoR可否替代J2EE? 發(fā)表: 2007年01月29日 15:48 回復
          banq 發(fā)表文章: 7457/ 注冊時間: 2002年08月03日 17:08
          動態(tài)語言最新更多資料:

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

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

          re:RoR可否替代J2EE? 發(fā)表: 2007年01月29日 20:59 回復
          jdonfans 發(fā)表文章: 43/ 注冊時間: 2007年01月16日 11:42
          除了 C# 能動 Java 外, 沒有什么能動它


          posted on 2007-03-17 14:40 java_蟈蟈 閱讀(290) 評論(1)  編輯  收藏

          評論

          # re: 在J道上看到的:RoR可否替代J2EE? 2007-03-17 16:47 BeanSoft
          在不同的背景下各種框架都有其存在的合理性. 生物從低級到高級, 并不是說所有的高級生物都能存活, 低級的都餓死了, 也不是說高級的生物數(shù)目就比低級的多, 或者高級的存活率高. 建議筆者多多關注各種功能的實現(xiàn), 舉個例子: 圖片旋轉(zhuǎn). 換句話說, 打好基礎再看框架, 會覺得無非都是一些筐子, 裝的是你寫的調(diào)用發(fā)郵件, 寫文件, 讀寫數(shù)據(jù)庫的代碼 --- 業(yè)務邏輯. 學語言, 最重要的是 API, 不是語法(對于做應用程序, 而不是編譯器的人來說), 起碼要工作就得至少熟練掌握一門語言.

          個人觀點, 呵呵.  回復  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 曲水县| 乌海市| 宾川县| 永登县| 海南省| 疏附县| 仪征市| 马尔康县| 凤冈县| 高陵县| 应城市| 江门市| 横峰县| 乐陵市| 嵊州市| 静海县| 乌恰县| 弋阳县| 山阳县| 铅山县| 琼中| 镇平县| 拉孜县| 会同县| 无极县| 荣昌县| 罗甸县| 保定市| 山丹县| 哈密市| 余江县| 雷州市| 潼关县| 开远市| 渭南市| 崇阳县| 湘阴县| 渑池县| 广灵县| 馆陶县| 敦煌市|