JBoss5迎來可配置時代
面向?qū)ο蟮旎酥籊rady Booch說:The great thing about objects is they can be replaced.對象最偉大的之處是其可被替代(這也是使用OO的主要原因之一)。
每個對象都是可替代意味著高度的靈活性,我們曾經(jīng)夢想的“按需裝配”時代已經(jīng)來臨,由Ioc模式/依賴注射組成微容器可以幫助我們實現(xiàn)對象的可替代性。
Spring/HiveMind 包括Jdon Framework都是Ioc組成的一種微容器,在Java企業(yè)系統(tǒng)架構(gòu)選擇考量一文中,我已經(jīng)在靈活性方面對幾個組件架構(gòu)進行了比較。
其中一個重要的疑問:EJB3是POJO嗎?這里面有兩個概念:EJB3是否支持POJO?EJB3本身是否是POJO?前者答案是肯定的,但是后者則曾經(jīng)是否定的。
在回答之前,我們必須對POJO有一個詳細了解,最初POJO是相對EJB提出的,Martin Fowler 對POJO定義是:我發(fā)現(xiàn):人們已經(jīng)忘記了原來正常的Java Object,因為這些對象還沒有一個很特殊的名字,....這樣我?它們?nèi)∶麨镻OJO(Plain Old Java Object), 一個POJO domain model容易放在一起,快速build,在EJB容器以外運行和測試,并且不依賴EJB。
但是,隨著EJB3支持POJO,POJO的概念從原來相對EJB的定義已經(jīng)引申開來,代指一種相當靈活的對象,也就是可被隨時替換的對象,不因為依附任何框架而不能被替換。
那么,EJB3本身是否是POJO?實際意義是EJB container是否是POJO,也就是說:EJB本身組件是否可被替換?
正如我在Java企業(yè)系統(tǒng)架構(gòu)選擇考量一文中所寫,當我們只需要EJB3的集群,而事務等基礎(chǔ)功能都不需要時,EJB服務器是否支持我們這種任意配置和切割?或者我想替代其中一個基礎(chǔ)功能,是否可任意供我們切換,也就是Grady Booch那句話:對象是否可替換?
當然,在這場“EJB3是否是POJO”討論中,有人引用一些老外名言:EJB3本身是否是POJO沒有討論意義,可惜說這話的老外自己的概念沒有達到最新理念上。
那么,作為一種組件結(jié)構(gòu),是否可以既支持應用系統(tǒng)的任何一個組件對象可替換,而且也支持框架本身的組件也是可替換,這個境界是否可以達到呢?
完全沒有問題,目前,開源軟件HiveMind和Jdon框架都是支持徹底的可替換,所謂徹底的可替換就是框架本身一些功能也是可配置,可嵌入的,而不只是應用程序是可替換的。
這就實現(xiàn)了組件架構(gòu)的完全的、徹底的可配置性,是一種Embeddable或Plug-in架構(gòu),這樣的架構(gòu)可允許開發(fā)者介入任何一個層次進行拓展和維護,從而形成強大的可定制性和可拓展性,可以使用建筑的一個比喻,這種Embeddable架構(gòu)類似鋼筋結(jié)構(gòu)建筑,它只有固定幾個框架和板筋,你喜歡劃分什么樣的房間完全由你來決定。唯一的限制是你的想像了。
JBoss微容器將是徹底的反轉(zhuǎn)控制,依賴注射的輕量容器,它允許你通過XML配置POJO,這些POJO有自己的生命周期,能夠作為服務 Service,它并不需要JBoss的應用服務器,..大多數(shù)JBoss提供的功能將都會轉(zhuǎn)為POJO,并且可配置...這些都將在2006年的 JBoss5版本中完全實現(xiàn)。
對于現(xiàn)在大部分初學者來說,首先需要從Jsp中嵌入Java代碼的壞習慣中改變過來,將你的Java代碼使用組件JavaBeans來實現(xiàn),然后逐步走上面向組件(面向構(gòu)件)的開發(fā)方式,進而上升到可徹底配置的組件化編程層次。
在JBoss5推出之前,J2EE曾經(jīng)被指責為In-House,也就是說,很多功能被綁定在J2EE服務器上,誕生很多基于JBoss、基于Weblogic的、基于Oracle的、甚至基于JMX的J2EE應用系統(tǒng),當這樣的J2EE應用系統(tǒng)需要移植時,那些依附特性因為和容器/服務器粘性太牢,而無法跟著應用系統(tǒng)跑。
因此多年來,應用者業(yè)界一直呼吁Out-of-Box,Spring/HiveMind/Jdon等框架應呼而生,并且Rod Johnson在2005 JavaOne大會上演講上預言:J2EE/Java EE將走向一個以框架為中心的新的開發(fā)時代。這樣,應用系統(tǒng)依賴的很多功能在框架中實現(xiàn),而框架是可以和應用系統(tǒng)到處移植的。
顯然,這種Out-of-Box的倡導對JBoss路線提出了挑戰(zhàn),JBoss奮起反應,你們既然指責我的容器是一個Box,那么我們就一不做二不休息,打破這個Box,JBoss5即將誕生,因為JBoss5本身是可肢解可配置的,因此,使用JBoss5編制的Java EE應用系統(tǒng)需要移植時,可以將應用系統(tǒng)依賴的那些功能從JBoss5容器中分離出來,帶著跑,這樣你的應用系統(tǒng)又符合Java EE標準,在特殊之處,也可以將容器作為一種框架帶了跑。
當然,因為目前的J2EE標準包括EJB離實際開發(fā)還有一段路,它沒有提出一種編程模型,因此作為符合標準的應用服務器JBoss在實際應用中還是需要開發(fā)框架輔助的,Spring提供強大全面的API庫;HiveMind提供靈活的配置功能;而Jdon框架在徹底可配置基礎(chǔ)上,瞄準應用開發(fā)中的增刪改查這些功能進行缺省實現(xiàn),提高開發(fā)效率,避免大規(guī)模開發(fā)中這些純勞動量的低層次工作。
圍繞Out-of-box 和break the box,未來組件(構(gòu)件)架構(gòu)領(lǐng)域?qū)⒂幸环瑺帄Z,有人說,你怎么忘記談Weblogic和Websphere了?有一點我忘記說了,這場完全可配置運動是由開源領(lǐng)域挑起的,也就是說,在組件架構(gòu)設(shè)計上,開源運動已經(jīng)走在了工業(yè)界前面,工業(yè)界巨頭們都跑去搞他們賺錢的強項:集成和SOA了。
【編輯推薦】