日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Java EE 6體系結(jié)構(gòu)的變革

系統(tǒng) 2695 0

【IT168 分析評論】 又看到 Reza 同學為 Java EE 6 奔走呼告了。如同在浩浩蕩蕩的就業(yè)大軍中的一員, Reza 帶著自己的最新“簡歷”—— Java EE 6 ,向咱們開發(fā)人員展示耳目一新的感覺。但從本文的字里行間中,隱隱約約還是能覺察到它的困惑和迷茫:“已經(jīng)付出了這么多, Java EE 6 能再次成功嗎?開發(fā)者會采納它嗎?如果不是,我們還應(yīng)該做什么?......”。當年 EJB2.* 的垮臺掀起了反對使用 EJB 的浪潮。實際上我接觸 JavaEE 比較晚 ( 大概在 2007 年初 ) ,沒有使用過 EJB2.* ,但也是不夠客觀的照著大家說的抨擊 EJB ,天天嘴邊掛著 Struts , Spring , Hibernate 。但隨著對 JavaEE 的不斷關(guān)注與了解,漸漸發(fā)現(xiàn)自己的盲從于無知。此次 Java EE 6 的特性預覽更有讓我渴望學習它的沖動?!凹夹g(shù)選型的抉擇政治因素往往大于技術(shù)本身 ?!?Java EE 6 的推廣還應(yīng)該要更多的成功實戰(zhàn)項目來贏得“政治因素”。但如同剛畢業(yè)的應(yīng)屆生,沒有經(jīng)驗也要面對就業(yè),除實力本身外,靠的就是運氣了......

 簡單回顧

   Java EE 5 是一個相當成熟,布署廣泛并且支持服務(wù)端友好開發(fā)的平臺。 EJB 3.0 的引用已經(jīng)顛覆了原有的業(yè)務(wù)組件開發(fā)模型,而原有 EJB2.x 的 Entiy Bean 模型由持久層的 JPA 來代替。 JSF 也被作為官方的標準展示層框架,當然還有咱們的 JAX-WS 2.0 代替了 JAX-RPC 作為新的 SOAP web services API 。 Java EE 5 的目標非常明確——通過引入 Annotation , POJO 編程模型,零配置 (zero-configuration) 等一系列概念從而降低開發(fā)的復雜度,幫助開發(fā)人員從 XML 地獄中解脫出來。盡管對 Java EE 持觀望態(tài)度的還是大有人在,但是也許要證明“實際上 Java EE 5 已經(jīng)獲得成功”的最有利的證據(jù)就是由于上述提到的種種改變,使得很多家伙第一次開口說他們已經(jīng)考慮接受 Java EE 。還是這幫家伙,在體驗 Java EE 編程模型后,不斷的向我們反饋他們的震驚。

 大局觀

  Java EE 6 又將是邁向理想中那簡潔,高效以及整合完好平臺之旅的一大步。 Java EE 6 又有了一系列技術(shù)上的革新:有全新的 WebBeans1.0 和 JAX-RS 1.1 API ,也有更加成熟的老牌 API Servlet3.0 。

  除少數(shù)相對較小的改變外 ( 比如說標準的全局 JDNI 命名,本文將不會談到 ) ,大多數(shù) JSR 316 中的主題都是精挑細選出來的。現(xiàn)在咱們就一同來看看這些變化。想了解更多細節(jié),我推薦你把公眾審議草案下載下來看看。這是鏈接地址: http://jcp.org/en/jsr/detail?id=316 .

砍掉沒用的 API

   Java EE 的第一版發(fā)布于 1999 年。在競爭異常激烈的業(yè)界一直作為官方標準,那時間也不算很短了。但在這段時期里, Java EE 只是一味的在成長,結(jié)果導致到現(xiàn)在平臺變得臃腫不堪,充斥著一堆毫無用處的過時 API ,用起來不爽,布署起來也不方便。 Java EE 6 開始正兒八經(jīng)的處理這些 API ,確保平臺更加輕量級,同時也是為了騰出更多的空間,更利于 Java EE 的健康成長。表 1 顯示了那些被砍掉的 API ,當然原因我們也做出了說明:

被砍的 API
被砍原因
JAX-RPC
JAX-RPC 是早期通過 RPC 調(diào)用和 SOAP web services 進行交互的編程模型。由于 Web services 成熟后從 RPC 模型中分離出來,更加健壯,更多特性和流行 JAX-WS API 實際上已經(jīng)代替了 JAX-RPC 。
EJB 2.x Entity Beans CMP
復雜,笨重,過度復雜的 EJB2.* 的 Entity Bean 模型已經(jīng)被 Java EE 5 的基于 POJO 的流行輕量級 JPA 持久層模型所代替。
JAXR
JAXR 是 Java API 中少數(shù)幾個用于 UDDI 注冊服務(wù)的接口之一。遺憾的是,由于 UDDI 并沒有廣泛使用,現(xiàn)在 JAXR 已經(jīng)幾乎沒有啥應(yīng)用,而且供應(yīng)商支持的也很少,難免遭到被砍命運。
Java EE Application Deployment (JSR-88)
JSR 88 是當初是用于 J2EE 應(yīng)用程序在應(yīng)用 服務(wù)器 上進行的配置和部署的標準 API ??墒窃?API 始終沒有得到眾供應(yīng)商的支持,不得不砍掉。
Java EE Management (JSR-77)
和 JSR 88 有著相似的命運, JSR77 原本是用于為應(yīng)用 服務(wù)器 創(chuàng)建監(jiān)控管理的 API ??墒歉鞔蠊?yīng)商熱情仍然并不高漲,難逃被砍命運。
表 1 : Java EE 6 被砍的 API

上述精簡 API 的原則上是,應(yīng)用服務(wù)器供應(yīng)商不需要強制的去支持這些技術(shù),但是不排除一些大型的供應(yīng)商仍就會對這些被砍 API 繼續(xù)維持一段時期。

  對于此次調(diào)整你有什么看法?太過于激進了?還是仍然過于保守?你還用上述表格中看得到的 API 嗎?還有其它你認為也應(yīng)該被砍掉的 API 嗎?

對于 Java EE 主要抨擊之一就是它太龐大了。確實啊,大多數(shù)中小型的 Java web 應(yīng)用程序根本用不了所有 Java EE 技術(shù) (full Java EE stack) 。你可以想像一下,如果要構(gòu)建一個類似于 SOA 的應(yīng)用程序,會用到消息,事務(wù),持久化以及 Web Services ,但犯不著需要使用像 JSP 或 JSF 這類的展示層技術(shù)。

  Profile 就是為解決這個問題而設(shè)計的。 Profiles 其實就是一個 Java EE API 的子集,對于特定的應(yīng)用程序有著各自的解決方案。比如說,被提議到的 Java EE Web Profile 僅僅只包含了一些最有可能大絕大多數(shù) Java web 應(yīng)用程序中使用的 API 。像 Profiles 這樣的理念已經(jīng)在標準化的世界上取得的成功也是由來已久。也許你早就知道, Java ME 其實就支持 Profiles ——支持每種特定的設(shè)備運行環(huán)境。類似的, Profiles 可用來更好的組織日益復雜的 web services 世界 ( 比如說 WS-I Basic Security Profile 等等 ) 。

  雖然 Java EE 6 通過 JSR 來定義了一些規(guī)則用于創(chuàng)建新的 Profiles ,但這一次僅僅只有一個 Profile 當選—— Web Profile 。表 2 列出了 Web Profile 與 Java EE 完整平臺的比較情況:

API
Web Profile
Full Profile
Servlet 3.0

<!-- [if gte vml 1]> <![endif]-->

JSP 2.2
JSTL 1.2
EL 1.2
JSF 2.0
支持
WebBeans 1.0 (?)
支持
支持
EJB 3.1 (Lite)
支持
支持
EJB 3.1 (Full)
支持
JPA 2.0
支持
支持
JTA 1.1
支持
支持
JMS 1.1
支持
JavaMail 1.4
支持
JAX-WS 2.2
支持
JAX-RS 1.1
支持
JAXB 2.2
支持
JACC 1.0
支持
JCA 1.6
支持
表 2 : Java EE 6 的 Web Profile

   WebBeans 為什么也能入圍的原因曾經(jīng)也是一個大大的問號,至今大家對是否應(yīng)該在 Java EE 6 中加入 WebBeans 仍然各執(zhí)一詞。圍繞 WebBeans 的爭論焦點是:它怎么適合加入 Java EE 體系?還有是不是 JSR 所研究的技術(shù)就一定是對的呢?對于你是否也是這么想的呢?也許你并不了解 WebBeans ,下面我會對此話題進行延伸。是否 WebBeans 應(yīng)該納入到 Java EE 6 中呢?如果不這么做,那 JSR 應(yīng)該做出什么樣的改變?同時還應(yīng)留心一下 EJB Lite ,它是雖不是完整版的 EJB ,但此次也被加入到 Web Profile 中了。下面我也會簡要的再提到 EJB Lite 。

  對于 Java EE 的 Profiles 思想,你又有何看法?符合 Profile 的輕量級的應(yīng)用程序 服務(wù)器 是 否對你有用?關(guān)于 Web Profile 所涉及到的技術(shù)你又怎么看?是內(nèi)容太少了,太多了,還是剛剛好?光有它就足夠了,還是需要在 Java EE 6 中定義其它 Profile ?還是咱們應(yīng)當考慮一下更簡化的“ Java EE Basic Profile ”?

現(xiàn)在我們來來看看 JSR316 專家組所做的工作,看看哪些技術(shù)加入到了 Java EE 平臺上了。雖然這項工作非常重要并且我們也渴望聽到你對上文提到的內(nèi)容提出建議。從這一章節(jié)開始,我們來快速看看 Java EE 6 API 的改變。我是極力推薦你自己去深度發(fā)掘下列所提到的每一項 API 。我認為你會喜歡接來的內(nèi)容,所有的 API 都會因你時宜的反饋而更加精彩。

WebBeans 1.0

   在 Java EE 6 的里程碑上, WebBeans 也許算得上是最具開創(chuàng)性的 API 了。 WebBeans 填補了 Java EE 的很多空白。盡管 WebBeans 由 Seam , Google Guice 以及 Spring 所進化而來,但它并不是直接的復制。實際上, WebBeans 本身就擁有許多獨一無二的創(chuàng)新。 WebBeans 由 JBoss/Red Hat 的 Gaving King 和 Google 的 Bob Lee 領(lǐng)導著。下面就對 WebBeans 的特點進行簡要概括說明:

  WebBeans 將 JSF , JPA 和 EJB3 等編程模型統(tǒng)一了起來,讓人感覺它們是一個整合完好的開發(fā)平臺。這一切是通過將 EJB3 的 beans , JPA 的 entity 以及普通 Java Bean 注冊為 WebBeans 的組件,然后通過使用 EL 表達式進行訪問。當然,它們之間也可以在進行“依賴注入”。實際上,如果你需要的話, WebBeans 完全可以讓你忽略 JSF 的 backing beans 。

  通常在上下文中, WebBeans 隱式的管理著所有注冊組件的生命周期。除傳統(tǒng)的 request, session 和 application 等主要作用域外,它還添加了一些新作用域“ dependent ”和“ conversation ”。 dependent 顯式的“繼承”了調(diào)用者的作用域,而 conversation 則是一個全新的作用域,( conversation 上下文與一個瀏覽器窗口(或頁卡)聯(lián)系在一起,這個瀏覽器窗口(或頁卡)由隨每個請求提交的一個標志來標識。 conversation 作用域使用 HTTP Session 的一個單獨的區(qū)段在頁面之間遷移數(shù)據(jù) 。 )從 EJB3.1 來看,它又填補了客戶端組件作用域 ( 包括 stateless , stateful 和 shared) 與 Web 應(yīng)用程序中心端的空白。

  WebBeans 為大家引入一組成熟的依賴注入特性,提供了一個完整的以 Java 為中心的類型 安全 開發(fā)平臺。這些特性包括:對任意非 EJB 的 Java 對象的整合,將非托管的對象注入到托管對象中去,使用對象工廠,指定組件化的布署環(huán)境并利用 stereotypes 去管理 annotations 。

   WebBeans 可以通過 Annotation 將攔截器 (interceptor) 綁定到目標對象上,增強了 Java EE 的攔截器模型。通過 Annotation 所綁定的攔截器會自動的作用于目標對象,這一點與現(xiàn)在的 Java EE 5 是不同的( Java EE 5 中目標對象與攔截器之間還是通過間接方式進行關(guān)聯(lián),比如說 xml 配置文件)。

列出的這些令人印象深刻的特性還只是 WebBeans 的冰山一角。 WebBeans 增加了許多其它非常棒的特性來制定下一代 Java EE 的整合方案。想更近一步了解 WebBeans 嗎,請點擊下面鏈接去下載已經(jīng) 公開草案吧: http://jcp.org/en/jsr/detail?id=299 .

原文地址: http://www.javaeye.com/news/5547-translation-java-ee-6-architecture-changes

Java EE 6體系結(jié)構(gòu)的變革


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 独山县| 定南县| 保德县| 天长市| 白朗县| 依兰县| 如皋市| 伊春市| 曲周县| 东乡族自治县| 龙江县| 苗栗市| 恩施市| 巩义市| 河南省| 陆川县| 阿荣旗| 连平县| 高邑县| 来安县| 博爱县| 甘孜县| 阿荣旗| 尚义县| 宁德市| 娄底市| 陆河县| 安溪县| 湘潭县| 石渠县| 石狮市| 友谊县| 精河县| 山丹县| 麻阳| 顺平县| 吴堡县| 南乐县| 乌鲁木齐县| 霍林郭勒市| 陈巴尔虎旗|