下面EJB登場,EJB作為Sun J2EE體系的核心部分,是Sun 所力推的企業級開發的首選,而EJB entity 目前仍然是Sun j2EE白皮書所最為推薦的java 持久化技術。Entity Bean作為EJB規范的一部分,也是EJB規范里面最備受爭議的一種技術,它伴隨著EJB規范走過了風風雨雨幾個春秋。目前EJB3.0規范草案已經出臺,http://jcp.org/en/jsr/detail?id=220。
從家庭出生來看,EJB可謂是根正苗紅,規范處于 JCP管理之下,擁有超級豪華的專家組成員, Sun, IBM, Oracle, Borland, Bea, SAP, Jboss, Apache軟件基金組織等等。單從這一點來看,選它作為企業級開發,技術支持應該就無需擔心了。當然向IBM, Bea等尋求項目咨詢價格當然也不菲。從提供功能上來看,EJB entity經歷了EJB1.0, EJB1.1, EJB2.0, 功能也越來越完善了。包括了完善的事務支持,EJBQL查詢語言,透明的分布式訪問等等。不過作為一個重量級技術,entity bean的性能不太盡人意,這成為它備受爭議的一個焦點,不知在3.0以后這個狀況會不會有所改進。再有一個,它功能雖然強大,可是對于易用性來說,實在不敢恭維,寫一個最簡單的bean, 也非得home接口,遠程接口,要再加上2.0以后加入的本地接口,這么林林總總一大堆,足以讓Java初學者望而卻步了。但是這一點在一段時間內竟然也成了EJB 功能強大,技術高深的“佐證”。記得多年以前剛畢業那陣,EJB應用在國內還比較少,公司里也沒有人研究Why EJB這個問題,反正凡是用EJB的項目就是牛項目,用EJB的人就是牛人,分到EJB項目組的兄弟們走路都是抬頭挺胸的,說話都比我等還在JDBC, SQL的人要高兩嗓門。EJB 技術目前盤踞著企業級應用的大部分江山,老大地位短時間內很難捍動。
下面新生代代表JDO隆重登場,JDO絕對屬于超年輕選手, JDO1.0也不過是2002四月份才發布。2003五月份出臺1.0.1, 目前最新2.0草案已經發布,http://www.jcp.org/en/jsr/detail?id=243。就為這2.0,江湖上展開的討論可以說是“血雨腥風”, 兩大兵團, JDO兵團和EJB兵團爭得是不可開交。有興趣的不妨到這里瞧瞧,http://theserverside.com/news/thread.tss?thread_id=25695,里面也不乏重量級人物。單從這一點來看,它能對EJB產生這么大的沖擊,足以說明了這個初生牛犢確有過人之處。JDO的誕生給java數據持久性帶來很多新特性,特別是它彌補了EJB對OO編程的先天不足,JDO提供了完全的OO支持,繼承,多態。JDO和 EJB比屬于輕量級工具,無需容器支持。不像EJB, 要用你就非得整一個Weblogic, webSphere之類的。
JDO的簡單易用是最為人們所稱道的,不需要你寫大量無用的接口,不需要你繼承什么特殊的類,唯一所要做的就是對你的class文件做一下enhance。用了JDO,可以說我們的java程序這下真正OO了,我們無需再理會數據庫里面有啥表格了,存取都是以java object為對象了,所有數據庫表格都是自動生成的。這一點可以說也是一個革命了。在此之前,項目設計階段,Database Schema設計可以說是個重頭戲。而現在用JDO開發,完全不需要數據庫設計了。那你的Database Schema呢? 就是你的Class 啊,JDO會根據你的Class自動生成相應的數據庫表格。 一個字 , 爽!從數據庫可移植性來看,JDO也是優勢明顯,就我使用過的Kodo 和 Genie來看,幾個簡單應用程序換數據庫時候除了換一個JDBC driver, 換一下數據庫URL,無需對程序做任何改動。 這一點對EJB 來說又是處于劣勢。從家庭出身來看,JDO也是出生名門,從一開始就處于JCP管理之下。從企業級支持來看,它可以很好的和Session bean協同工作,對于企業級開發, Session bean + JDO的方式是Session bean + entity方式的一個強有力競爭對手。雖然有這么多優點,不過它的發展之路也非一帆風順,這不,今年五月份JDO2.0的投票,IBM, Oracle, Bea 三大巨頭同時投了反對票。不過稍微一想,就可以理解,這并不是JDO本身技術有什么重大缺陷,而是JDO動到這些巨頭們的奶酪了。Bea, IBM做著業界最為著名應用服務器,weblogic和WebSphere,在EJB上面是投下了血本了,他們不能眼睜睜看著JDO來蠶食EJB市場。而Oracle, 還在賣著它自己的O/R工具Toplink, 看著JDO日漸強大,他能不著急么。不過呢,公司再牛,他也擋不住歷史前進的車輪吧,最終JDO2.0的投票還是以絕對的票數(12:3)通過了。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/