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