面向?qū)ο蟮旎酥籊rady Booch說(shuō):The great thing about objects is they can be replaced.對(duì)象最偉大的之處是其可被替代(這也是使用OO的主要原因之一)。
每個(gè)對(duì)象都是可替代意味著高度的靈活性,我們?cè)?jīng)夢(mèng)想的“按需裝配”時(shí)代已經(jīng)來(lái)臨,由Ioc模式/依靠注射組成微容器可以幫助我們實(shí)現(xiàn)對(duì)象的可替代性。
SPRing/HiveMind 包括Jdon Framework都是Ioc組成的一種微容器,在java企業(yè)系統(tǒng)架構(gòu)選擇考量一文中,我已經(jīng)在靈活性方面對(duì)幾個(gè)組件架構(gòu)進(jìn)行了比較。
其中一個(gè)重要的疑問(wèn):EJB3是POJO嗎?這里面有兩個(gè)概念:EJB3是否支持POJO?EJB3本身是否是POJO?前者答案是肯定的,但是后者則曾經(jīng)是否定的。
在回答之前,我們必須對(duì)POJO有一個(gè)具體了解,最初POJO是相對(duì)EJB提出的,Martin Fowler 對(duì)POJO定義是:我發(fā)現(xiàn):人們已經(jīng)忘記了原來(lái)正常的Java Object,因?yàn)檫@些對(duì)象還沒(méi)有一個(gè)很非凡的名字,....這樣我給它們?nèi)∶麨镻OJO(Plain Old Java Object), 一個(gè)POJO domain model輕易放在一起,快速build,在EJB容器以外運(yùn)行和測(cè)試,并且不依靠EJB。http://mindprod.com/jgloss/pojo.Html
但是,隨著EJB3支持POJO,POJO的概念從原來(lái)相對(duì)EJB的定義已經(jīng)引申開(kāi)來(lái),代指一種相當(dāng)靈活的對(duì)象,也就是可被隨時(shí)替換的對(duì)象,不因?yàn)橐栏饺魏慰蚣芏荒鼙惶鎿Q。
那么,EJB3本身是否是POJO?實(shí)際意義是EJB container是否是POJO,也就是說(shuō):EJB本身組件是否可被替換?
正如我在Java企業(yè)系統(tǒng)架構(gòu)選擇考量一文中所寫(xiě),當(dāng)我們只需要EJB3的集群,而事務(wù)等基礎(chǔ)功能都不需要時(shí),EJB服務(wù)器是否支持我們這種任意配置和切割?或者我想替代其中一個(gè)基礎(chǔ)功能,是否可任意供我們切換,也就是Grady Booch那句話:對(duì)象是否可替換?
當(dāng)然,在這場(chǎng)“EJB3是否是POJO”討論中,有人引用一些老外名言:EJB3本身是否是POJO沒(méi)有討論意義,可惜說(shuō)這話的老外自己的概念沒(méi)有達(dá)到最新理念上。
那么,作為一種組件結(jié)構(gòu),是否可以既支持應(yīng)用系統(tǒng)的任何一個(gè)組件對(duì)象可替換,而且也支持框架本身的組件也是可替換,這個(gè)境界是否可以達(dá)到呢?
完全沒(méi)有問(wèn)題,目前,開(kāi)源軟件HiveMind和Jdon框架都是支持徹底的可替換,所謂徹底的可替換就是框架本身一些功能也是可配置,可嵌入的,而不只是應(yīng)用程序是可替換的。
這就實(shí)現(xiàn)了組件架構(gòu)的完全的、徹底的可配置性,是一種Embeddable或Plug-in架構(gòu),這樣的架構(gòu)可答應(yīng)開(kāi)發(fā)者介入任何一個(gè)層次進(jìn)行拓展和維護(hù),從而形成強(qiáng)大的可定制性和可拓展性,可以使用建筑的一個(gè)比喻,這種Embeddable架構(gòu)類似鋼筋結(jié)構(gòu)建筑,它只有固定幾個(gè)框架和板筋,你喜歡劃分什么樣的房間完全由你來(lái)決定。唯一的限制是你的想像了。
現(xiàn)在,作為EJB3 container設(shè)計(jì)領(lǐng)先的開(kāi)源軟件JBoss即將推出JBoss 5版本,在其JBoss 5版本中,其微核心本身將是可配置的,最終將實(shí)現(xiàn)EJB3的徹底的可配置性。
我們看看JBoss Blog(http://www.jboss.org/jbossBlog/blog/)上這段文字:
JBoss微容器將是徹底的反轉(zhuǎn)控制,依靠注射的輕量容器,它答應(yīng)你通過(guò)xml配置POJO,這些POJO有自己的生命周期,能夠作為服務(wù)Service,它并不需要JBoss的應(yīng)用服務(wù)器,..大多數(shù)JBoss提供的功能將都會(huì)轉(zhuǎn)為POJO,并且可配置...這些都將在2006年的JBoss 5版本中完全實(shí)現(xiàn)。
在這篇現(xiàn)場(chǎng)錄像(http://www.javalobby.org/av/javazone/69/aardal-jboss)中 Thomas Roka-Aardal介紹了JBoss 5 – lightweight middleware with EJB3,他介紹了企業(yè)Java將被簡(jiǎn)化和增強(qiáng),通過(guò)結(jié)合新的JBoss微內(nèi)核,顯示什么是真正的輕量應(yīng)用服務(wù)器,它又是怎樣影響未來(lái)企業(yè)開(kāi)發(fā)市場(chǎng)的,中間件將會(huì)到處被看到。
對(duì)于現(xiàn)在大部分初學(xué)者來(lái)說(shuō),首先需要從jsp中嵌入Java代碼的壞習(xí)慣中改變過(guò)來(lái),將你的Java代碼使用組件JavaBeans來(lái)實(shí)現(xiàn),然后逐步走上面向組件(面向構(gòu)件)的開(kāi)發(fā)方式,進(jìn)而上升到可徹底配置的組件化編程層次。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注