Java EE 6的可擴展性、使用偏好以及修剪 - java語言 -

Java EE 6的可擴展性、使用偏好以及修剪

時間:2010-01-26 18:32:30   來源:   評論:加載中...   點擊:加載中...
盡管目前公布的細節仍然有點簡略,Java EE 6的大致方向已經變得更明朗了,并且反映出Java EE標準的角色正在轉變。一些開源項目,例如Str...

盡管目前公布的細節仍然有點簡略,Java EE 6的大致方向已經變得更明朗了,并且反映出Java EE標準的角色正在轉變。一些開源項目,例如Struts,Hibernate和Seam,最初被視為一個完整的企業計算棧,被越來越廣泛的企業采用來彌補目前版本Java EE的不足。在某些情況下,這些開源項目輪流影響了下一版規范的修訂。同樣,對于提供一個完整的解決方案,Java EE的角色變得更輕了,而對于提供一個基礎代碼集合,使軟件提供商和開源開發者能夠依托其上構建自己的應用,Java EE的角色變得更重了。JSR 316——做為下一個Java EE版本修訂的龐大(umbrella)JSR,通過使可拓展性成為專家組的一個核心目標,看起來把這個新的關系放到了一個更加正式的根基上。另外,這個規范承認,Java EE已經變得龐大而且復雜,建議既要對規范中特定元素進行修剪,還要引入使用偏好(profile)以針對特定開發組織提供其關注的EE功能子集。它還要建立在先前的版本所做的簡化工作的基礎上,這些簡化工作包括使用注解來進一步削減對外部配置文件的依賴。

修剪采用的方式與Java SE 6采用的方式相同,有一個Blog對此做了描述。這是作為一個多階段過程來進行的,一個待修剪候選可能在一個發布中被聲明出來,但在下一個發布中就可能被降級為可選組件,而所有這一切完全取決于社區的反應。JSR建議了兩個最初的修剪候選——一是JAX-RPC [JSR 101,基于XML的RPC的Java API],它已經被JAX-WS [JSR 224,基于XML的Web Services的Java API]有效的取代了,二是EJB CMP,目前已經被Java持久化API (JPA)[起初是作為JSR 220,Enterprise JavaBeans 3.0的一部分來定義的]替代了。在對Artima采訪的過程中,Java EE 6規范的領導者Roberto Chinnici和Bill Shannon暗示目前沒有被廣泛采用的JAXR API [JSR 93,用于XML Registries 1.0的Java API],一個訪問web service注冊表的API,可能被添加到修剪的候選名單中。

盡管大部分修剪是無可置疑的,Sun對profile(使用偏好)的使用還是引發了一些爭議。SpringSource的CEO Rod Johnson理所當然的喜歡它們:

“最終,用戶將會有權力貨比三家,決定什么才是他們真正想要的,而不是由一個規范委員會在用戶開始構建應用兩年之前去決定他們的意志。”Johnson說,“現在到了用一些健康的競爭取代一個蘇聯式的命令經濟的時候了。”

但是OSGi的布道者Peter Kriens對此不以為然:

“要解決眾口難調的問題,Sun提議多創建一些尺寸,叫做profile。肯定能適合所有的情況嗎?好吧!profile在J2ME[Java 2 Micro Edition]中嘗試過了,我認為它們失敗了。”

Java EE 6計劃中的第一個profile是Web profile,關注于web應用開發人員。在引入這個新的profile的同時,這個規范還會定義一些規則,用來為其它的細分市場創建額外的profile,例如電信業或者金融業的應用。

可拓展性的技術細節不是那么清楚,即便JSR制定了一些野心勃勃的目標:“我們相信使更多這樣的技術在Java EE應用服務器上清楚的分層或者接插到Java EE 應用服務器是令人向往的,”JSR 316這樣提到。通過增加更多的可擴展點和更多的服務提供者接口,這些額外的技術可以清楚高效的接插到這個平臺的實現中,并且用戶使用起來就如同將它們構建到系統中一樣便利。

這種方式的一個例子是JSR 196:Java 容器的認證服務提供者接口,J2EE 1.4最初計劃中API的三重奏之一。它提供了一個標準服務提供者接口來使認證機制提供者能夠被集成到容器中。使用這個接口的提供者會被用來建立容器訪問決策的身份認證,包括那些在容器中調用其他容器組件時所使用的身份認證。2007年10月這個規范最終發布并且可以下載了。

如同1.4的最初計劃那樣,Java EE 6也應該最終看到以下兩組API的正式發布:適合用于管理環境的定時器API;一個容器可管理的編程模型,提供給那些使用容器管理的線程池并發執行的工作。這兩組API是由IBM和BEA聯合開發的,并得到了BEA WebLogic和IBM WebSphere的支持,具體的描述在這里(PDF文檔)。

Java EE 6中還計劃包含兩組新的API。其一是深受JBoss的Seam和Google的Guice影響的WebBeans,它的目標是通過統一web層與事務層的組件模型,簡化基于web的應用程序的Java EE編程模型。另外,WebBeans規范提供了一個會話模型和持久化上下文,其提供了細粒度的狀態管理,并允許一系列的web事務(一個會話)被當作一個工作單元來對待。Jacob Orshalick詳細描述了Seam會話模型與超時處理的細枝末節。通過一個聲明和四部分(一, 二,三, 四)的詳盡描述,Gavin King為WebBeans模型做了全面廣泛的說明。

盡管WebBeans JSR得到了廣泛積極的反響,IBM在JSR 316的表決中還是持有一些異議:

“我們對JSR 299似乎要選擇的方向很關心,這個方向超越了其提到的集成JSF和EJB組件的許可。并且我們相信,如果它在這個方向上繼續努力,最終會使它從Java EE 6中被去除。我們不相信我們的客戶會覺得采用需要添加一個別的組件模型定義的Java EE 6是一件容易的事。”

第二組新的API是JSR 311,一組RESTful Web Services的Java API。它已經產生了一些毀譽參半的反響。一篇InfoQ早些時候的文章對社區反應做了一個不錯的概述。Brian Leonard的blog和相關的鏈接提供了這個提議的更多細節,Bill Burke 提供了一些反饋。

在Java EE 6中會看到對很多核心API的修訂。主要的更改計劃有:

1、Java持久化API(JPA):2.0版的JPA會將API的能力進行擴展,主要包括:

◆擴充對象/關系映射功能,包括在整合已有映射選項時具有更大的靈活性,支持嵌入對象的集合,可排序的列表,訪問類型的組合,以額外的元數據支持DDL生成等等。
◆擴充Java持久化查詢語言的查詢能力
◆標準化實體拆分與融合的附加約定以及持久化上下文管理。
◆標準化查詢配置和實體管理配置的“提示”集合
◆擴充Java EE環境中可插拔性的協定

2、Servlets:盡管Servlet在持續流行,可自J2EE 1.4以來Servlet的API就沒有進行過一次大的修訂。3.0版本的Servlet API的目標是:

◆提高Web 框架的可插拔能力
◆通過注解(Annotation)和泛型來提高易用性,這包括可以通過注解來決定是否使用web.xml。
◆增加異步支持(Comet)來提供非阻塞的輸入/輸出,請求處理延后處理以及響應關閉延后處理。
◆改善安全能力,包括登入/登出支持和servlet自注冊。

3、Java Server Faces 2.0:這是這個規范第二個主要的發布,其目標為:

◆通過去除對配置文件的依賴以及引入JSP標記處理函數的自動化生成來改善易用性,
◆增加對聲明式渲染器(renderers)的支持
◆通過改變請求處理生命周期和允許視圖的部分更新來增強對AJAX的支持。
◆使開發者開發定制組件更容易。

最后,還有更多的較小的修改:

1、以簡化EJB組件模型為目標的Enterprise JavaBeans。EJB3.1中會看到可選的本地業務接口的引入,使只使用一個bean類來開發本地EJB組件成為可能。它也將允許不需要ejb-jar部署描述文件就能把EJB組件打包/部署到一個.war文件。
2、Java EE 連接器體系結構,關注于使開發更加便捷,并對規范做綜合的改善。  
3、JAX-WS:細節尚未公布。

很多API沒有為Java EE 6作出最后的修剪。有兩件事值得注意,其一是JSR 168,Java Portlet 規范,其被幾個主要的門戶運營者所擁護;另一個是JSR 208, Java業務集成(JBI),一個服務仲裁規范,目前已經被除BEA和IBM之外的所有廠商支持。

Java EE 6規范有一個相當有競爭力的時間表,最終的發布瞄準了2008年第四季度。



相關熱詞搜索:

 
上一篇:新一代Java技術即將出現
下一篇:值得學習的五種Java技術
收藏 將此文推薦給朋友
分享到:
10个数复式三中三多少组公式