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