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

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

系統(tǒng) 2916 0

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

 簡(jiǎn)單回顧

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

 大局觀

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

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

砍掉沒(méi)用的 API

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

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

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

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

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

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

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

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

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

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

WebBeans 1.0

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

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

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

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

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

列出的這些令人印象深刻的特性還只是 WebBeans 的冰山一角。 WebBeans 增加了許多其它非常棒的特性來(lái)制定下一代 Java EE 的整合方案。想更近一步了解 WebBeans 嗎,請(qǐng)點(diǎn)擊下面鏈接去下載已經(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號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 建德市| 渭南市| 稻城县| 始兴县| 文山县| 华阴市| 叙永县| 定西市| 怀化市| 涟水县| 石楼县| 信宜市| 淳化县| 辉南县| 都兰县| 平罗县| 辽源市| 集贤县| 攀枝花市| 仪征市| 高邮市| 湘潭市| 忻城县| 杂多县| 奇台县| 左权县| 永清县| 乌兰察布市| 榆社县| 安西县| 蒙自县| 黎川县| 浦城县| 三河市| 道真| 宁远县| 芮城县| 沙坪坝区| 湖州市| 定边县| 汤原县|