最近,SUN的伙伴們(the folks at SUN)將J2EE 1.5改名為java EE 5,當(dāng)然以前J2EE版本還是稱為J2EE,之所以改名,目的還是讓大家清楚J2EE只是Java企業(yè)應(yīng)用,用我的話來說,J2EE就是Java在數(shù)據(jù)庫(kù)服務(wù)器端的應(yīng)用。 看來,現(xiàn)在大多數(shù)人傾向于更加突出Java了,J2EE容易讓初學(xué)者誤解是獨(dú)立于一套Java的技術(shù)方案。
此次J2EE改名為Java EE,實(shí)際也反映出業(yè)界這種共同心聲。 讓我們看看Java EE 5有哪些新的功能或規(guī)定,我們可以從SUN網(wǎng)站下載Java EE 5規(guī)范。其架構(gòu)圖如下:
圖中灰色加黑部分是Java EE 5新的功能,我們看到,在WEB層主要加入了JSF這個(gè)新的表現(xiàn)層框架,和我們?nèi)粘i_發(fā)關(guān)系密切的是,引入了新的Java Persistence標(biāo)準(zhǔn),這個(gè)標(biāo)準(zhǔn)正在由EJB 3.0專家組制定。
從架構(gòu)圖可以看出,無論Web結(jié)構(gòu)或EJB結(jié)構(gòu),提供實(shí)現(xiàn)的功能相差不多,這樣,我們的業(yè)務(wù)核心組件就可以根據(jù)需要部署在Web或EJB中運(yùn)行,而不依賴具體的Java EE容器了。前面一章圖的目標(biāo)在Java EE 5中可以實(shí)現(xiàn)了。
當(dāng)然,Java EE 5重要改變還是:Java EE不再象以前那樣只注重大型商業(yè)系統(tǒng)的開發(fā),而是更關(guān)注小到中型系統(tǒng)的開發(fā),簡(jiǎn)化這部分系統(tǒng)開發(fā)步驟。 落實(shí)這一簡(jiǎn)化行動(dòng)的最大特征是在Java 5.0(Java 1.5)中加入Annotations,通過Annotations引入,降低Java EE開發(fā)時(shí),既要寫code,又要寫XML配置文件之苦,來回照顧,疲于奔命,Annotations既是得益于C++語言,也是從開源項(xiàng)目xDoclet實(shí)踐中獲得經(jīng)驗(yàn)。
Security安全是Java EE的一個(gè)重要特點(diǎn),也就是基于容器的安全訪問,無需自己手工編碼。 事務(wù)管理Transaction Management也是Java EE 5的一個(gè)重要部分,該標(biāo)準(zhǔn)文檔 從幾個(gè)方面闡述了事務(wù)管理的要點(diǎn),標(biāo)準(zhǔn)中規(guī)定了在WEB層中使用事務(wù)和線程的處理關(guān)系,標(biāo)準(zhǔn)中規(guī)定:Web服務(wù)器如Tomcat無需在Web層提供事務(wù)支持,因?yàn)閃eb組件根本不支持事務(wù)繁衍/傳遞。
因?yàn)槟壳耙恍┘軜?gòu)如Struts+Spring+Hibernate/Struts+Hibernate是標(biāo)準(zhǔn)中的Web結(jié)構(gòu),因此Java EE 5在J2EE 4.2.2規(guī)定了 Web組件事務(wù)的生命周期,如果Web組件直接調(diào)用JTA,事務(wù)就不可以跨一個(gè)客戶端的多個(gè)請(qǐng)求,事務(wù)只能在一個(gè)請(qǐng)求(Servlet/Jsp)中完成,這個(gè)標(biāo)準(zhǔn)規(guī)定了我們?cè)赪eb架構(gòu)中(如上述架構(gòu))無法使用長(zhǎng)事務(wù)(如工作流/狀態(tài)圖中跨頁(yè)面請(qǐng)求事務(wù)),針對(duì)一個(gè)客戶端跨請(qǐng)求的事務(wù)目前只有唯一解決方案:只有使用EJB的有態(tài)Session。參考文章:I manage long duration transactions? 以上是Java EE 5主要部分,Java EE包含更多其他技術(shù)部分如Jdbc JMS JCA JNDI 等等,需要用戶在實(shí)踐中摸索。
附:Java EE 5.0帶來簡(jiǎn)化開發(fā)革命是否名至實(shí)歸?
作者Debu Panda在其發(fā)表的一篇文章“Is Java EE 5.0 really simplifying development?”中,提出了有關(guān)Java EE 5.0簡(jiǎn)化開發(fā)的思索。
作者在文中提到,“‘JavaEE 5.0通過公審?fù)镀?#8217;是一件值得關(guān)注的事。因?yàn)镴ava EE 5.0將使Java得企業(yè)開發(fā)變得更容易。EJB 3.0,JSF和Web服務(wù)元數(shù)據(jù),這些技術(shù)的應(yīng)用將帶來開發(fā)的簡(jiǎn)化革命。”
“盡管采用JavaEE 5.0簡(jiǎn)化了商業(yè)的應(yīng)用開發(fā),然而我所不能確定的是,應(yīng)用這些技術(shù)的過程究竟是否得到了簡(jiǎn)化?很早以前我就認(rèn)識(shí)到,在J2EE中調(diào)用web services是一件非常復(fù)雜且易出錯(cuò)的事情;過程需要簡(jiǎn)化,然而Java EE 5.0草案中并沒有體現(xiàn)這一點(diǎn)。”
作者最后指出,“如果EJBs和Web services的客戶使用并沒有得到簡(jiǎn)化,就不能說Java EE 5.0真正簡(jiǎn)化了開發(fā)!”