<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    冰浪

    哥已不再年輕 - 堅定夢想,畢生追求!
    posts - 85, comments - 90, trackbacks - 0, articles - 3
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    ?2006年5月,Java EE 5規(guī)范正式發(fā)布。Java EE 5的出現(xiàn),可能是J2EE誕生以來比較重量級的一次震撼,規(guī)范發(fā)布至今已有半年之多,業(yè)界對Java EE 5的關(guān)注也變得越來越熱烈,google一下“java ee”關(guān)鍵字,可以得到500多萬條相關(guān)紀錄,而從Sun網(wǎng)站上進行檢索(http://java.sun.com/javaee/overview/compatibility.jsp),也可以看到專業(yè)廠商已經(jīng)迅速跟進,除Sun公司本身外,包括全球聞名的SAP、金蝶Apusic等另三家,已經(jīng)推出全面支持Java EE 5規(guī)范的應(yīng)用服務(wù)器產(chǎn)品。
    ?
    Java EE 5包含JSF 1.2、EJB 3.0及JAX-WS 2.0等新功能,試圖解決Java企業(yè)級應(yīng)用開發(fā)的簡便性、靈活性及易用性問題。在Java EE 5出現(xiàn)之前,很多開源框架(Open Source Framework)如雨后春筍般涌現(xiàn),嘗試從某種角度或某些方面去解決“委員會”規(guī)范所未能顧及的應(yīng)用開發(fā)問題,如Web開發(fā)中的關(guān)注分離問題(MVC)、業(yè)務(wù)模型實現(xiàn)問題(ORM)等等。很多開源framework都非常出名,為人們喜愛并廣泛使用,如Struts、Spring、Hibernate等,這些“江湖派”作品曾經(jīng)一定程度上成為Java企業(yè)級應(yīng)用開發(fā)事實上的標準。Java EE 5的出現(xiàn),是否會改變這種狀況?或者說,人們在重新選擇應(yīng)用框架時,是否會優(yōu)先考慮全新的Java EE 5技術(shù)?帶著這種疑問,筆者試圖進行簡單的技術(shù)比較,并輔于膚淺的評論,希望能夠拋磚引玉、借花獻佛,以娛大眾。
    ?
    Struts vs. JSF
    ?
    ?
    Struts
    JSF
    MVC
    支持
    支持
    POJO
    ?
    支持
    頁面流(Page Flow
    支持
    支持
    UI 組件(UI Component
    ?
    支持
    ?
    MVC是模型(Model)、視圖(View)、控制(Controller)分層的結(jié)構(gòu),通過分層來實現(xiàn)關(guān)注分離,減少傳統(tǒng)開發(fā)中常見并重復的工作。Struts和JSF均支持MVC。Struts對MVC支持的核心是Controller,通過Controller(一個共同的入口Servlet)獲得HTTP請求,將HTTP參數(shù)傳入ActionForm,然后將ActionForm傳給Action。Struts對HTTP請求只有一個事件處理handler,當請求過來時,由相應(yīng)Action返回結(jié)果給前端Controller,并據(jù)此選擇如何進行導航。JSF一般也采用一個前端Controller(有些商用JSF能夠智能識別JSF請求,無需額外的controller),不過在Controller中做的工作跟Struts Controller截然不同,它負責觸發(fā)JSF頁面組件中的事件,用Render工具生成組件的展現(xiàn),綁定來自Model的數(shù)據(jù)到組件等。可以看到,JSF在在控制層更靈活,在視圖層支持Render工具的變換而生成靈活的展現(xiàn),在模型層實現(xiàn)與框架的徹底分離,因而具有更高的靈活性。
    ?
    POJO是無格式Java對象(Plain Old Java Object)。POJO與AOP結(jié)合被廣泛用于快速業(yè)務(wù)模型。Struts設(shè)計的初衷主要是解決視圖和控制問題,并無過多關(guān)注模型的靈活性問題。Struts中的ActionForm模型必須繼承自框架類,雖然可以通過定制類庫提供一些幫助類實現(xiàn)模型與框架無關(guān),但本質(zhì)上還是緊耦合于JSP- and HTTP-centric方法。JSF提供了對POJO天然的良好支持,并支持通過RAD工具實現(xiàn)快速的業(yè)務(wù)模型生成,從而具有更高的生產(chǎn)力。
    ?
    頁面導航的最大意義是幫助實現(xiàn)頁面的可視化開發(fā),在UI界面上快速定義頁面流向。頁面導航分靜態(tài)導航和動態(tài)導航兩種,靜態(tài)導航是頁面直接流向另一頁面,動態(tài)導航是由特定動作或邏輯決定頁面的流向。Struts和JSF均支持靜態(tài)和動態(tài)頁面導航。不過Struts中的導航規(guī)則是綁定到Action中的,那意味著可能需要對同一頁面中不同的Action做重復性的導航規(guī)則制定,而JSF導航可以跟Action無關(guān),可以在頁面中不同組件的不同Action間共享相同的導航規(guī)則。
    ?
    Struts本身并不提供UI組件機制,而JSF則提供了完整的UI組件機制。通過UI組件的定制和重用,能夠極大地簡化開發(fā),提升用戶體驗。商業(yè)化的產(chǎn)品則往往更進一步,提供強大易用的開發(fā)工具,實現(xiàn)drag-and-drop方式所見即所得的Web UI開發(fā)。
    ?
    Spring vs. EJB 3.0
    ?
    ?
    ?
    Spring
    EJB3
    標準(Standard
    ?
    是,Java EE 5標準組成部分
    持久(Persistence
    JDBC, Hibernate, JDO, iBatis and JPA(ongoing spring 2.0)
    JPA
    聲明式服務(wù)(Declarative Services
    支持
    支持
    依賴注入(Dependency Injection
    支持
    支持
    集群(Cluster
    ?
    支持
    ?
    Spring框架是一個開源項目,并不是一個標準的東西。Spring自己定義了一套XML配置文件大綱以及程序接口,從長遠考慮,有很大的不確定性。Spring的主要開發(fā)者來自Interface21公司(這是幫我非常敬重的人),Interface21靠相關(guān)咨詢和服務(wù)維持,作為一個商業(yè)團體其利益取向?qū)⒖梢酝耆笥襍pring未來的方向。相比EJB 3出身名門正派的標準血統(tǒng)并有眾多主流商業(yè)廠商支持,Spring的非標準性將可能帶來極大的風險。
    ?
    Spring框架本身不帶持久實現(xiàn),但它支持JDBC, Hibernate, JDO和 iBatis等持久化框架。Spring通過使用不同的DAO和Helper類以利用JDBC、Hibernate、iBatis或JDO,所以并沒有實現(xiàn)和最終服務(wù)提供者的隔離。簡單來說,就是需要重構(gòu)代碼才能實現(xiàn)持久化框架的更換。EJB 3.0的持久集成在應(yīng)用服務(wù)中,通過JPA,可以在底層更換持久實現(xiàn),如將Hibernate更換為Toplink。EJB 3.0的持久具有更大的靈活性,并有利于廠商進行性能優(yōu)化和擴展。
    ?
    Spring和EJB3.0都為企業(yè)應(yīng)用提供運行時服務(wù),(如:事務(wù)、安全、日志消息、配置服務(wù))。由于這些服務(wù)都不是直接與應(yīng)用的業(yè)務(wù)邏輯相關(guān)聯(lián),所以都不是由應(yīng)用來自行管理。EJB3.0使用Java注釋來配置聲明式服務(wù),Spring使用XML配置文件。在大多數(shù)情況下,EJB3.0的注釋聲明顯得更為簡單和優(yōu)雅。Spring使用XML來定義屬性并配置聲明式服務(wù)的結(jié)果將是一個冗長而不穩(wěn)定的配置文件。
    ?
    依賴注入模式(DI)是在應(yīng)用中實現(xiàn)松散耦合的最佳實踐。Spring和EJB3.0都支持DI模式,但他們有著深刻的不同。Spring支持通用的(但復雜的)基于XML配置文件的依賴注入API。EJB3.0支持注入大多數(shù)服務(wù)對象(如EJB和上下文對象)和通過簡單注釋聲明的JNDI對象。
    ?
    EJB 3.0完全支持集群。部署在服務(wù)集群中的EJB3.0應(yīng)用將自動獲得負載均衡、分布緩存、狀態(tài)復制等功能。底層的集群服務(wù)隱藏在EJB3.0編程接口后面,屏蔽了所有的復雜性。Spring沒有簡單的利用集群的方法。
    ?
    Hibernate vs. EJB 3.0
    ?
    ibernate與EJB 3.0其實并沒有很好的可比性,因Hibernate僅關(guān)注ORM,而???? EJB 3.0更多則更多表現(xiàn)為一種組件框架,其中包含ORM部分而已。EJB 3.0在設(shè)計過程中,曾經(jīng)得益于Hibernate的作者Gavin King,據(jù)說EJB 3.0 EntityBean的設(shè)計理念完全來自于Hibernate。只需用將EJB 3.0 EntityBean API調(diào)用轉(zhuǎn)換為Hibernate API,Hibernate就可以成為EJB 3.0中EntityBean的 Implementation。
    當開源framework已經(jīng)成為習慣性勢力,并給人們帶來眾多樂趣或疲憊感的時候,Java EE 5的出現(xiàn)會是適逢其時嗎?無論如何,是繼續(xù)選擇開源還是擁抱Java EE 5?相信今天這并不是個容易的選擇,或許,隨著更多的廠商發(fā)布支持Java EE 5的產(chǎn)品,提供更好的工具支持,這個答案才會明朗起來。?

    (轉(zhuǎn)自CSDN張勇專欄)
    主站蜘蛛池模板: 1000部羞羞禁止免费观看视频 | 中国内地毛片免费高清| 亚洲人成网77777亚洲色| 免费无码一区二区三区| 亚洲中文字幕久在线| 亚洲?V无码成人精品区日韩| 久久国产乱子免费精品| 亚洲AV永久无码精品放毛片| 亚洲欧洲日产国码无码网站| 拍拍拍又黄又爽无挡视频免费| free哆拍拍免费永久视频| 亚洲国产成人精品电影| 国产91精品一区二区麻豆亚洲| 91在线手机精品免费观看| 美女羞羞免费视频网站| 久久久久亚洲AV无码专区体验| 国产性生交xxxxx免费| 在线看无码的免费网站| 免费在线人人电影网| 亚洲国产高清美女在线观看| 亚洲真人日本在线| 在线精品免费视频| 99re这里有免费视频精品| 伊人久久国产免费观看视频| 亚洲一区二区三区免费观看| 国产亚洲av片在线观看播放 | 亚洲国产精品成人| 韩国免费一级成人毛片| 今天免费中文字幕视频| 美国免费高清一级毛片| 亚洲AV无码精品蜜桃| 久久久久久亚洲av成人无码国产| 精品免费久久久久久成人影院| 久久久久国产精品免费免费不卡| 美女被爆羞羞网站在免费观看 | 中文字幕永久免费| 特级av毛片免费观看| 亚洲kkk4444在线观看| 亚洲日本香蕉视频观看视频| 亚洲精品国产精品乱码视色| 亚洲精品老司机在线观看|