從Java EE 6最終草案看Java企業(yè)級(jí)開發(fā)的未來
最新的Java企業(yè)級(jí)平臺(tái)標(biāo)準(zhǔn)Java EE 6一直是Java開發(fā)人員關(guān)注的重點(diǎn),51CTO之前曾報(bào)道過《Java EE 6遙遙無期 預(yù)覽版兩極分化》的消息。近日,Java 有新的消息傳出,Java EE 6專家組最近發(fā)布了規(guī)范的最終草案。相對(duì)于早期版本來說,最終草案有3個(gè)重要變化,分別是增加了針對(duì)Java的依賴注入、針對(duì)Java EE平臺(tái)的上下文與依賴注入(以后稱之為“CDI”)以及Bean Validation,這三個(gè)規(guī)范都將成為完整平臺(tái)與Web的必要組件。為了搭配CDI與JSR-330,專家組又提出了另一個(gè)最終草案,該草案重用了JSR-330中定義的依賴注入注解,同時(shí)增加了針對(duì)EJB Session Bean的構(gòu)造注入和其他微小變化。
除了此前發(fā)布的Web Profile和完整的規(guī)范文檔外,專家組還為Managed Bean增加了一個(gè)規(guī)范文檔。所謂Managed Bean,其實(shí)就是被容器當(dāng)作受管理組件的一些Java類,它在CDI和JavaServer Faces中得到了廣泛的應(yīng)用。此外規(guī)范還引入了EJB Lite,這樣我們就可以在完整的Java EE容器外使用EJB Session Bean了,這意味著三種概念能獨(dú)立存在于Java EE平臺(tái)之上。類似的概念早就存在于那些廣泛應(yīng)用的框架中了,如Spring和Seam等。Managed Bean支持一些基本服務(wù),如資源注入、生命周期回調(diào)以及攔截器等等。其他規(guī)范可以構(gòu)建在該定義之上并添加其他服務(wù),比如CDI增加了依賴注入、EJB Session Bean增加了事物、遠(yuǎn)程等等。Roberto Chinnic在其博客上給出了如下示例:
給定一個(gè)JAX-RS資源類,你可以通過添加一個(gè)@ManagedBean注解、一個(gè)EJB組件注解(@Stateful)或是一個(gè)CDI注解(比如@Default)將其轉(zhuǎn)換為Managed Bean。反之亦然,若給定的類來自于Managed Bean或是EJB組件,那么我們可以通過添加一個(gè)JAX-RS @Path注解將其轉(zhuǎn)換為JAX-RS資源類。以此類推,Servlet、JAX-WS端點(diǎn)類或是(大多數(shù))Java EE 6中的任何其他組件類型都可以這樣。
雖然目前Managed Bean規(guī)范的影響還不算大,但它卻非常重要,因?yàn)檫@暗示了Sun對(duì)于整個(gè)Java EE平臺(tái)走行方向的想法。盡管還需要對(duì)規(guī)范加以修改以讓整個(gè)Java EE平臺(tái)符合其要求,但不難看出Managed Bean和Java EE 5平臺(tái)所引入的基于注解的編程模型最終可以讓開發(fā)者從Java EE容器所提供的眾多服務(wù)和組件中按需選擇。同時(shí),簡單的Managed Bean模型補(bǔ)充了平臺(tái)下的擴(kuò)展點(diǎn)和服務(wù)供應(yīng)者接口,為Java框架和產(chǎn)品開發(fā)者提供了一種標(biāo)準(zhǔn)化機(jī)制以在平臺(tái)上進(jìn)行分層,這也是Java EE 6平臺(tái)的一個(gè)主要目標(biāo)。
Sun GlassFish V3很可能成為首個(gè)提供完整平臺(tái)支持的應(yīng)用服務(wù)器,現(xiàn)在其預(yù)覽版已經(jīng)發(fā)布了。JBoss 5.2的下一beta版將提供某些Java EE 6支持,包括JavaServer Faces(JSF)2.0、Java Persistence(JPA)API 2.0、Bean Validation以及新版本的CDI。SpringSource也宣布支持部分新標(biāo)準(zhǔn)。Spring 3.0將支持JSF 2.0、JPA 2、Bean Validation以及JSR-330。未來的Spring 3.x將支持Java EE 6其他的API,包括Servlet 3。
就IDE支持來說,NetBeans 6.8將支持JSF 2.0(包括Facelets)、JPA 2.0以及針對(duì)GlassFish V3的增量部署?,F(xiàn)在 NetBeans 6.8 M2已經(jīng)可以下載了。JetBrains也緊緊跟隨著Java EE 6的變化,IntelliJ IDEA 9將支持JPA 2.0、EJB 3.1、JSF 2.0、Servlet 3、CDI、Bean Validation以及GlassFish 3。
【更多關(guān)于Java EE 6的報(bào)道】