Java EE 5 由 Java Community Process 通過 Java Specification Request 244 發(fā)布,這個 “總綱” JSR 指出了詳細描述 Java EE 5 中各種技術的其他規(guī)范(參見 參考資料)。Sun Microsystems 的 Bill Shannon 領導一個專家組制訂了這個規(guī)范,這個專家組包括從 IT 行業(yè)重量級人物到個人專家的 31 位成員。以前的 Java EE 版本有:
J2EE 1.2(于 1999 年 12 月發(fā)布):這是第一個 J2EE 版本,隨著 Java 2 Standard Edition(J2SE) 發(fā)布。它包含 10 個規(guī)范和 API,針對企業(yè)應用程序所需的常用的 Web 層、業(yè)務邏輯、表示層和消息傳遞服務。 J2EE 1.3(于 2001 年 9 月發(fā)布):通過 JSR 58 發(fā)布,這個版本改進了半數(shù) J2EE 1.2 規(guī)范并引入了 XML API、連接器架構和安全框架。 J2EE 1.4(于 2003 年 11 月發(fā)布):這個版本改進了 J2EE 1.3 中 13 種技術中的 9 種,并引入了新的 Web 服務和安全支持。 J2EE 1.4 之后就是 Java EE 5,因為 Sun 已經(jīng)從名稱中去掉了 “2”(這是從 Java 1.2 被稱為 “Java 2” 時開始的做法),而且現(xiàn)在在技術的簡寫名中使用單詞 “Java” 而不是 “J”?,F(xiàn)在的標準版是 Java SE 6(而不是 J2SE 1.6),企業(yè)版是 Java EE 5(而不是 J2EE 1.5)。 JAVAEE5.0包含技術: JSF1.2 JSP2.1 JSTL1.2 Java Servlet 2.5 EJB 3.0 JPA1.0 JAX-WS 2.0 JSF 1.2 JSF 為常見的 UI 問題提供了內(nèi)置支持,比如組件狀態(tài)管理、事件處理、導航、用戶輸入檢驗和國際化。有經(jīng)驗的開發(fā)人員可以創(chuàng)建定制的強大的可重用組件,還可以為 Web 瀏覽器之外的其他客戶機設備創(chuàng)建定制的組件。技術經(jīng)驗不足的用戶可以在 Sun Java Studio Creator 等可視編程環(huán)境中重用定制組件,包括用于 HTML 界面的默認 JSF 標記庫。這讓編程新手也能夠創(chuàng)建復雜的 Web 表示層。 在開放源碼領域和受許可協(xié)議限制的軟件領域中,第三方 JSF 組件越來越多了。在 Web 上搜索 “JSF components” 或 “JSF component libraries” 會找到幾十種組件。許多組件都依賴于 Asynchronous JavaScript + XML(Ajax)技術,這種技術是 “Web 2.0” 運動背后的主要驅(qū)動力。Web 程序員可以使用它們創(chuàng)建出比傳統(tǒng) Web 應用程序更好的用戶體驗,同時避免了從頭編寫 Ajax 組件的麻煩。 JSP 2.1 JSP 技術是從 J2EE 2.1 開始出現(xiàn)的。它使用 Java Servlet 規(guī)范支持聲明式的 UI 編程。它支持以文檔形式編寫 UI,Web 應用程序容器將這些文檔轉換為 Java servlet 并編譯,然后調(diào)用它們來響應請求。這些文檔通常將 JSP 指令和腳本片段與某種標記語言(比如 HTML)混在一起。JSP 可以使用老式語法(使用以 <% 開頭、以 %> 結束的特殊標記),也可以使用新的語法(良構的 XML)。它們通常作為 Model-View-Controller(MVC) UI 框架的 “View” 部分。 與以前的版本相比,JSP 2.1 和 JSF 1.2 之間的兼容性更好,這主要是因為它們的 EL 語法已經(jīng)集成為統(tǒng)一 EL。EL 支持的操作包括: 在請求、會話和應用程序上下文中訪問 JavaBean 的屬性。 執(zhí)行邏輯測試來做出各種選擇,比如隱藏還是顯示某個元素。 通過計算生成在 UI 中顯示的數(shù)字和字符串。 過去,JSP 和 JSF EL 語法有差異,而且容器計算它們的方式也不一樣。統(tǒng)一 EL 消除了這些差異,還增加了一些特性,比如: 一個可插入的框架,支持對 EL 的解釋進行定制。 支持延期執(zhí)行的表達式,JSP 標記處理器可以根據(jù)需要執(zhí)行它們。 支持賦值操作,例如可以在 JSP 代碼中用 EL 表達式設置 JavaBean 的屬性。 對于 JSP 標記庫開發(fā)人員來說,好消息是標記處理器現(xiàn)在支持用注解注入資源,所以大大簡化了執(zhí)行 Java Naming and Directory Interface(JNDI)所需的資源配置和代碼。 JSTL 1.2 JSTL 已經(jīng)存在多年了,但是在 Java EE 5 之前,Java EE 還不包含它。JSTL 標記支持在 JSP 中嵌入以下類型的元素: 過程式邏輯,比如循環(huán)和 if/else 結構。 對 JavaBean 的訪問方法,這可以向 UI 提供動態(tài)數(shù)據(jù)并允許 UI 代碼修改數(shù)據(jù)。 執(zhí)行數(shù)據(jù)庫訪問的 SQL 命令。 格式化指令,可以根據(jù)特定的地區(qū)對 UI 輸出進行格式化。 XML 處理,比如 Document Object Model(DOM)解析或 Extensible Stylesheet Language(XSL)轉換。 JSTL 1.2 是一個維護版本,它支持統(tǒng)一 EL 并解決了在同一個 JSP 頁面中混用 JSF 標記和 JSTL 迭代標記時遇到的問題。 Java Servlet 2.5 Java Servlet 規(guī)范是 Java Web 層技術的核心,它的歷史與 Java EE 技術本身一樣長。設計這個規(guī)范是為了提供一種高效率的基于組件的 Web 應用程序開發(fā)方法,并確保 Web 應用程序可以移植到實現(xiàn)這個規(guī)范的任何服務器上。 Java EE 5 所需的 Servlet 2.5 規(guī)范是一個維護版本,它對 2.4 版做了一些次要的改進。它在 Java 5 平臺上引入了一些依賴項,還引入了一些注解,它們可以減少對 Web 應用程序部署描述符配置文件(web.xml)的配置需求。還增加了一些方便的配置特性,例如可以用通配符和多個 url-pattern 元素更靈活地配置 servlet。 回頁首 企業(yè)應用程序技術 有大量技術屬于企業(yè)應用程序的范圍,其中許多在 Java EE 5 中沒有變化或者不適合在本文中詳細討論。這里主要關注兩個改進:對 EJB 開發(fā)的簡化和新的持久化特性。 EJB 3.0 EJB 規(guī)范是 Java EE 平臺的核心。它定義如何封裝應用程序的業(yè)務邏輯,并以高度可伸縮、可靠且感知事務的方式分布業(yè)務邏輯,確保并發(fā)的數(shù)據(jù)訪問不會破壞數(shù)據(jù)。 EJB 有三種基本類型: 會話 bean 分成兩類:無狀態(tài) 和有狀態(tài)。無狀態(tài)會話 bean 用于那些為單一客戶機請求提供服務的業(yè)務邏輯任務。有狀態(tài)會話 bean 維護客戶機的 “會話狀態(tài)”,適合處理那些跨越多個客戶機請求的任務。會話 bean 不能在客戶機之間共享。會話 bean 通常會操作一個或多個實體 bean。 實體 bean 代表持久化數(shù)據(jù),數(shù)據(jù)通常是從數(shù)據(jù)庫中裝載的。實體 bean 可以在客戶機之間共享,而且 EJB 規(guī)范提供了事務安全的機制,確保實體 bean 可以可靠地為多個并發(fā)客戶機請求提供服務,而不會被破壞。實體 bean 可以自己管理持久化,也可以讓容器來管理它(容器管理的持久化(container-managed persistence,CMP) )。 消息驅(qū)動 bean(MDB) 用來處理那些不要求客戶機等待響應的客戶機請求。它們通常與一個 Java Message Service(JMS)隊列 — Java EE 5 中的另一種企業(yè)應用程序技術 — 進行交互,但是也可以以其他方式為異步客戶機提供服務,客戶機甚至可以不是用 Java 編寫的。 在過去,EJB 的開發(fā)很復雜很麻煩,開發(fā)人員常常不得不依靠工具來管理實現(xiàn) EJB 所需的所有接口和部署描述符。規(guī)范為業(yè)務邏輯代碼規(guī)定了許多限制,要求擴展特定的類或?qū)崿F(xiàn)特定的接口。為了獲得一個簡單的 EJB 引用,就需要許多樣板代碼。這些問題使 EJB 在開發(fā)社區(qū)中名聲很差;在許多情況中,EJB 確實很糟糕。 EJB 3.0 大大改進了 EJB 編程模型,這是提高 Java EE 5 開發(fā)人員生產(chǎn)率的主要因素之一。EJB 現(xiàn)在可以是一個加了注解的 “普通 Java 對象(plain old Java object,POJO)”,它不需要擴展特定的類。它只需要實現(xiàn)一個遠程接口,您可以自己定義這個接口,也可以讓 IDE 自動生成它。不再需要部署描述符了,因為 EJB 容器可以從 EJB 上的注解提取出所需的所有信息。 Java Persistence API(JPA 1.0) JPA 引入了一個用于 Java 對象持久化的對象-關系映射(object-relational mapping,ORM)框架。在開發(fā)它時主要考慮 EJB 的需要,但是它可以用于任何 Java 對象??梢允褂米⒔庵付男ο蠛妥侄螒摮志没?,以及它們應該映射到哪些數(shù)據(jù)庫表和字段。JPA 支持一種與 SQL 相似的查詢語言。這種查詢語言可以: 定義參數(shù)化的查詢,這種查詢可以以有序列表形式接收參數(shù)(按索引號引用參數(shù)),也可以采用按名稱引用的命名參數(shù)。 按照持久化實體之間的關系執(zhí)行查詢,而不需要 JOIN 語句(但是,如果您愿意,也可以使用 JOIN 語句)。 按照與 SQL 相似的方式指定搜索條件(比較操作符、LIKE 語句、BETWEEN 語句等等),定義如何對待結果集(使用 DISTINCT、ORDER BY、GROUP BY 等操作符)。 JPA 給 Java EE 平臺提供了新功能,解決了與手工持久化和容器持久化相關的許多麻煩。 管理和安全性 Java EE 5 需要三個與以前版本相同的管理和安全性規(guī)范: Application Deployment 提供一個用于將組件和應用程序部署到 Java EE 容器的 API。工具可以通過這個 API 將代碼部署到 Java EE 5 容器中,而不需要重新啟動容器。在開發(fā)期間,IDE 常常使用這個 API 支持快速的編寫/測試/糾正循環(huán)。 Application Management 為容器管理的對象指定必需的屬性和操作。它與多種行業(yè)標準管理協(xié)議兼容。 Authorization Contract for Containers(Java ACC)定義安全策略提供者的語義,以及如何授予對這個合約中的操作的訪問權。它要求容器實現(xiàn)一些接口,使部署工具能夠管理授權角色。 JAX-WS 2.0 Java EE 5 中 Web 服務支持的基礎是 JAX-WS 2.0,它是一種替代 JAX-RPC 1.1 的技術。這兩種技術都支持創(chuàng)建 REST 風格和基于 SOAP 的 Web 服務,而不必直接處理 Web 服務固有的 XML 處理和數(shù)據(jù)綁定細節(jié)。開發(fā)人員可以繼續(xù)使用 JAX-RPC(這仍然需要 Java EE 5 容器),但是強烈建議遷移到 JAX-WS。剛開始學習 Java Web 服務的開發(fā)人員可以跳過 JAX-RPC,直接使用 JAX-WS。它們都支持 SOAP 1.1 over HTTP 1.1,所以完全兼容:JAX-WS Web 服務客戶機可以訪問 JAX-RPC Web 服務端點,反之亦然。 與 JAX-RPC 相比,JAX-WS 有許多優(yōu)點。JAX-WS:支持 SOAP 1.2 標準(以及 SOAP 1.1)。支持 XML over HTTP。如果愿意,可以不使用 SOAP。(更多信息參見文章 “Use XML directly over HTTP for Web services (where appropriate)”。)使用 Java Architecture for XML Binding(JAXB)作為數(shù)據(jù)映射模型。JAXB 完全支持 XML 模式,而且性能更好(更多信息見下文)。為客戶機和服務器引入了一個動態(tài)編程模型??蛻魴C模型支持面向消息方式和異步方式。支持 Message Transmission Optimization Mechanism(MTOM),這是一個用于優(yōu)化 SOAP 消息傳輸和格式的 W3C 建議規(guī)范。升級了 Web services interoperability(WS-I)支持。(它支持 Basic Profile 1.1;JAX-WS 只支持 Basic Profile 1.0。)升級了 SOAP 附件支持。(它支持 Attachments API for Java [SAAJ] 1.3:JAX-WS 只支持 SAAJ 1.2。)JAX-WS 中的 wsimport 工具自動地處理 Web 服務開發(fā)的許多細節(jié),并以跨平臺方式集成到構建過程中,這讓開發(fā)人員可以將注意力集中于實現(xiàn)或使用服務的應用程序邏輯。它生成各種工件,包括服務、服務端點接口(SEI)、異步響應代碼、基于 WSDL 錯誤的異常以及通過 JAXB 綁定到模式類型的 Java 類。JAX-WS 還能夠提高 Web 服務的性能。在文章 “Implementing High Performance Web Services Using JAX-WS 2.0”(參見 參考資料 中的鏈接)中,對基于 JAX-WS 的 Web 服務實現(xiàn)(使用了 Java EE 5 中的另外兩個 Web 服務特性 — JAXB 和 StAX)和基于 J2EE 1.4 中的 JAX-RPC 的服務實現(xiàn)做了性能對比。這項研究發(fā)現(xiàn)在不同負載下 JAX-WS 在各個功能領域產(chǎn)生了 40% 到 1000% 的性能改進。 JAVAEE6包含技術: JSF2.0 JSP2.1 JSTL1.2 Java Servlet3.0 EJB 3.1 JPA2.0 JAX-RS 1.1 由于版面有限JAVAEE6的新特性給幾個鏈接 JAVAEE6新特性: 可擴展性:Web分片和可插 http:///0t9klO Servlet 3.0的異步處理 http:///4FEkxu JSF 2.0簡化頁面制作 http:///44MGSK EJB 3.1五大模式改進 http:///4Z8NyF 引入的 JPA 2.0四大新特性詳解 http:///25fnLb Java EE 6引入的三大新技術之JAX-RS http://developer.51cto.com/art/200912/171668.htm |
|