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