EJB3.0历史
來(lái)源:http://shuixian.javaeye.com/blog/601335
EJB3 .0 歷 史
Java 企業(yè)版API (Java Enterprise Edition ) 中提供了對(duì)EJB 的規(guī)范。EJB 是一個(gè)封裝 有某個(gè)應(yīng)用程序之業(yè)務(wù)邏輯服務(wù)器端組件。EJB 最早于1997 年 由IBM 提出,后被SUN 采用并形成標(biāo)準(zhǔn)(EJB 1.0 和EJB 1.1 )。其后在Java 社區(qū)進(jìn)程(Java Community Process) 支持下陸續(xù)有一些JSR 被 制訂來(lái)定義新的EJB 標(biāo)準(zhǔn),分別是JSR 19 (EJB 2.0 ), JSR 153 (EJB 2.1) 以及最新的JSR 220 (EJB 3.0 ) 。
由于IBM 和Sun 等EJB 提倡者力推其前景,起初一些大公司紛紛采 用EJB 部署他們的系統(tǒng)。然而隨后各種問(wèn)題便接踵而至,對(duì)EJB 的 惡評(píng)短時(shí)間內(nèi)激增。對(duì)于初學(xué)者,EJB 的API 顯 得太過(guò)困難;對(duì)于許多程序員來(lái)說(shuō),書寫那些必須拋出特定異常的接口并將bean 類作為抽象類實(shí)現(xiàn)的 做法既不直觀也不正常。當(dāng)然,EJB 所被賦予的使命,如對(duì)象關(guān)系映射和事務(wù)管理確實(shí)有其天然復(fù)雜 性,但其API 之復(fù)雜還是令開發(fā)人員們覺(jué)得望而卻步,一些人開始懷疑EJB 除了引入了復(fù)雜的實(shí)現(xiàn)手段以外似乎并未帶來(lái)什么實(shí)際好處。
另外,實(shí)際運(yùn)用中被發(fā)現(xiàn),如果使用EJB 來(lái) 封裝業(yè)務(wù)邏輯會(huì)帶來(lái)性能上的下降。這是因?yàn)?#xff0c;最早的EJB 規(guī)范只允許客戶端通過(guò)特定協(xié)議(如CORBA )進(jìn)行遠(yuǎn)程方法調(diào)用,即使大部分實(shí)際應(yīng)用根本就不需要分布式計(jì)算。直到EJB 2.0 才引入了本地接口,以支持可以開發(fā) 不通過(guò)網(wǎng)絡(luò)就能直接本地調(diào)用的EJB 系統(tǒng)。盡管如此,EJB 的 廣泛普及仍然為其復(fù)雜度所制約。
EJB 規(guī)范起初的一個(gè)主 要價(jià)值- 對(duì)分布式應(yīng)用進(jìn)行事務(wù)管理- 在隨后 的實(shí)踐中被一致認(rèn)為幾乎沒(méi)能派上用場(chǎng)。對(duì)于企業(yè)級(jí)應(yīng)用來(lái)說(shuō),Spring 和Hibernate 等簡(jiǎn)化框架更加實(shí)用。因此,EJB 3.0 規(guī)范(JSR 220) 為了迎 合這個(gè)趨勢(shì)相比于之前進(jìn)行了一次激進(jìn)的大跳躍。受到Spring 影響,EJB 3.0 也使用所謂的“傳統(tǒng)簡(jiǎn)單Java 對(duì)象(POJO )”;同時(shí),支持依賴注入來(lái)簡(jiǎn) 化全異系統(tǒng)的集成與配置。Hibernate 的創(chuàng)始人Gavin King 參與了這一新版規(guī)范的制訂,并對(duì)EJB 大加提倡。Hibernate 的許多特性也被引入到Java 持久化API 當(dāng)中,從而取代原來(lái)的實(shí)體bean 。EJB 3.0 規(guī)范大幅采用Java 注釋(annotation )來(lái)對(duì)代碼進(jìn)行元數(shù) 據(jù)修飾,從而消減了此前EJB 編程的冗雜性。相應(yīng)地,EJB 3.0 幾乎成為了一個(gè)全新的API , 與此前的數(shù)版可謂毫無(wú)相似度可言。
以下列出了版本的具體變化:
(1)??? EJB1.0
1998 年3 月24 日發(fā)布。
n?? 定 義了EJB 和EJB 容器的作用,實(shí)現(xiàn)與互 動(dòng)。
n?? 提 供了最早的開發(fā)者與用戶視圖。
(2)??? EJB1.1
1999 年12 月17 日發(fā)布。
n?? 開 始采用XML 部署描述符,默認(rèn)的JNDI 上 下文以及可支持IIOP 的RMI 。
n?? 安 全機(jī)制由角色(Role )驅(qū)動(dòng),而非方法。
n??? 支 持實(shí)體類,且必須在應(yīng)用中實(shí)現(xiàn)。
(3)??? EJB2.0
2001 年8 月22 日發(fā)布,JSR 19 定 義。
n?? 制 定了構(gòu)建面向?qū)ο笊虅?wù)應(yīng)用的標(biāo)準(zhǔn)組建結(jié)構(gòu)。
n?? 支 持構(gòu)筑使用不同開發(fā)工具所開發(fā)之組件的聯(lián)合應(yīng)用部署。
n?? 在 多線程,連接池,事務(wù)管理等方面對(duì)用戶透明化。
n?? 使 符合“一次寫成,多次運(yùn)行”的Java 思想。
n?? 關(guān) 注企業(yè)級(jí)應(yīng)用生命期間的開發(fā),部署,運(yùn)行等動(dòng)作。
n?? 定 義了不同開發(fā)工具所需遵守的契約,以便其產(chǎn)品能夠在運(yùn)行期交互。
n?? 支 持與現(xiàn)行系統(tǒng)兼容,開發(fā)者可以擴(kuò)展現(xiàn)有產(chǎn)品以使之支持EJB 。
n?? 與 其他Java API 兼容。
n?? 支 持EJB 與Java2 平臺(tái)企業(yè)版或者其他非Java 應(yīng)用程序之間的互操作性。
n?? 支 持與CORBA 兼容的RMI-IIOP 。
(4)??? EJB2.1
2003 年11 月24 日發(fā)布,JSR 153 定 義。
n??? Web 服務(wù):可將無(wú)狀態(tài)會(huì)話bean 暴露 為Web 服務(wù);EJB 可通過(guò)引用訪問(wèn)Web 服務(wù)。
n??????? EJB 定時(shí)器服務(wù):提供一種新的基于定時(shí)器的事件驅(qū)動(dòng)方式。可供消息驅(qū)動(dòng)bean 作為消息源使用。
n??????? 增 加了消息目的地。
n??????? 進(jìn) 一步豐富了EJB 查詢語(yǔ)言,支持ORDER BY, AVG, MIN, MAX, SUM, COUNT 和MOD 。
n??????? 使 用XML schema 代替DTD 以定義部 署描述符。
(5)??? EJB3 .0
2006 年5 月2 日發(fā)布,JSR 220 定 義。
n?? 全 面采用Java 注釋代替部署描述符。(后者仍可使用,并且具有更高優(yōu)先級(jí))
總結(jié)
- 上一篇: 重磅!摩托罗拉Razr 2023渲染图遭
- 下一篇: Hibernate 发展之路