JBossDO: 又一個免費的JDO產品現身

JBossDO正式公佈

最近,JBoss在其4.0版的內部開發版4.2中公佈了它的JDO實現產品:JBossDO,爲免費JDO產品的陣營又添了一位生力軍!

 

說起JBoss,我不由得想起了我的EJB開發歷程。三年前,我陰差陽錯地陷入了EJB開發的泥潭,當時還是J2EE1.2規範,由於是Java數據庫開發的大熱門,所以我們也只好跟上這個風,要不人前人後,怎麼好意思擡頭呢(可別當真)? 我們當時用的是WebLogic5.1,開發BMP方式的實體Bean,其中的酸甜苦辣,真是一言難盡,往事不堪回首Java中……估計很多朋友也有過相似的經歷,設計JavaBean、實現EJB接口、Home接口、編寫具體的BMP Bean,一堆SQL,編譯,打包,EJB編譯,關閉服務器,上傳,啓動服務器……這些都是對代碼有一點點改動所需要的完整過程,其中的調試過程簡直是令人窒息!當時的幾個程序員痛苦至極,整天尋死覓活的,看了真讓人心疼。不過我也是其中之一,那種痛苦至今記憶猶新,直到今天,想起這些時刻還常常犯事噁心,總有一種想吐的感覺。

雖然J2EE是個規範化的東西,但在具體的服務器上進行開發,比起原先的JDBC+SQL來,工作量非但沒減少,反而增加了很多,有一種生拉硬套的感覺,結果導致設計彆扭,開發緩慢,調試麻煩,BUG多多。不過既然EJB是規範,那我們就應該適應它,以前喝不慣可口可樂,但它是個規範,慢慢調整自己的口型,現在不也習慣了?華主席說過,凡是毛主席說過的,都是正確的,在Java世界裏,Sun是大哥大,凡是Sun提出的,我們也應該堅決執行!於是,我開始將這些開發的繁瑣,歸咎於WebLogic,接着就開始研究不同的J2EE服務器,這樣,我看了WebSphere,Sun的DynamicsXXX(記不清楚了),Oracle的Application Server,等等,其中還有一個令人一陣驚喜的產品:金碟的阿派斯!它可是一個完全國產的東東,總算走在了時代的前沿。不過這個產品配置同樣麻煩,後來進展也比較緩慢,與當今的IBM和BEA兩大巨頭無法同日而語。我繼續研究J2EE服務器,最後壓軸的當然就是今天的主角:JBoss,一個開放源碼的免費J2EE服務器!自動類更新檢測,EJB熱發佈,一切是那麼的美好!JBoss最注重的就是易用性,方便開發、減少手續、節省時間是其最大特色。

實踐證明,易用性是讓開發人員在如今新技術層出不窮的時代最爲推崇的東西,誰抓住一點,誰就得到程序員的心!看看.NET的C#,看看JDK1.5的改進,看看J2EE規範不斷的改進,看看JDO……

EJB在近幾年也不斷發展出新的規範,現在已經是2.1版了,每一個版本都有着不同程度的易用性改進,比如EJBQL,在不遠的將來,可能在3.0版本中還會將EJBQL擴展爲全動態的!JBoss緊抓住這些特點,在省事、省心方面下了很大功夫,性能也不斷優化,慢慢地成熟起來,終於有一天,JBoss可以跟Sun主席叫板了!前一陣的JBoss與Sun的不愉快說明了這一點,所謂樹大招風,不,應該是勢大心高,JBoss逐漸顯出霸氣!

JBoss中開始主推一個新的開發概念:面向方面的編程(Aspect-Oriented Programming,簡稱AOP),這確實是個在層次上高於OOP的好東東,可以讓關注不同方面(性能、日誌、安全等等)的開發人員專注於編寫相關的代碼而不互相干擾,最後又天衣無縫地集成在一起成爲穩定的系統。這個概念雖然已經提出來幾年了,但還不流行,屬於比較前位的概念,JBoss這麼一搞,可能本來Sun想提出來的,結果被JBoss搶了先手,你說Sun氣不氣?(純屬猜測,請勿當真)。

JBoss很想在自己的J2EE服務器中加入新的特性,而Sun把持着規範,在規範兼容性上面向JBoss捅了一刀,告訴它:“喂,哥們兒,悠着點,別太冒頭了,有些東西應該讓領導來提,別自己想得太超前了!” JBoss當然不買帳,它批評Sun對Java規範的獨攬大權而做事拖遢,進展緩慢(其實我對Sun的這方面也很不滿意,只不過我還沒寫出JBoss這樣的產品,唉,英雄氣短!),而JBoss深得人心,應該在Java世界裏給個名份才行!是不是感覺有點象二奶逼宮?呵呵……

好了,我們回到主題上來,JDO是Sun爲簡化數據庫開發提出的新規範,目標是透明的對象存儲。這種好東東,JBoss當然不會放過,也許這也是JBoss和Sun言歸於好的契機吧!我們看到,JBoss在很短的時間內選擇了JDO這個方面,並且做出了產品,而且還是免費的,實在是功不可沒。至此,免費產品家族在TJDO、XORM、OJB的基礎上,又多了一個JBossDO!不過目前的JBossDO只能用在JBoss服務器中,以後可能會放開限制。JBossDO目前還有一些其它限制,比如不支持繼承,不支持自動創建數據庫結構等等,這些應該都算是實用性的絆腳石,希望在不遠的將來能看到更成熟的JBossDO產品!

附註:經過對JBossDO的一番研究後,我不得不給大家帶來一點負面的信息:JBossDO不完全符合JDO規範,除掉前面說過的不支持繼承之外,還有以下明顯的衝突:

1、對數據的更新不採用事務:JDO規範要求所有對數據進行更新的操作必須放到一個transaction中,方法是PM.currentTransaction()對象的begin()和commit(),但在JBoss的示範代碼中,很明顯沒有事務處理語句,對數據的更新只是放到getPersistenceManager()和pm.close()之間,這一點不利於實現樂觀事務控制(Optimistic Transaction,JDO的重要可選特性之一)。

2、查詢語言不符合JDOQL規範,JDOQL要求查詢的斷言符合Java語言規範,比如等值比較使用“==”,而與操作使用“&&”等等,但JBossDO顯然不符合這些規範。

難道這又是JBoss再一次向Sun叫板?平心而論,我並不支持JBoss的這些做法,其它所有的JDO產品都是按照規範來的,雖然我不是老夫子,但JBoss此舉實在令人費解。這些問題還有待進一步研究。

最新消息:JBoss負責人已經修正和解釋了上面提到的兩個問題,第一個問題是因爲他們使用的是JBoss服務器的JTA;第二個問題是示範代碼寫錯了。請看這裏:http://www.jdocentral.com/forums/index.php?s=5e0542b8ce25715faf2783f15cd1f72f&act=ST&f=5&t=787&st=0&#entry4075

 

本文的版權屬於筆者本人,但歡迎轉載,前提是註明出處和原作者。另外,歡迎在我的專欄中查看我的另幾篇文章,並提出寶貴意見!

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章