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