本周Rickard Oberg在oredev上宣布推出Qi4j,並宣稱“類已死,介面萬歲”。Qi4j帶來了面向組合編程的新思想,提出類中不再放有任何的行為,取而代之的是,類成為混入(mixins)的‘組合’,並在類中使用標註定義介面。
Qi4j本身是一個提供給所有java開發人員使用的面向組合編程的Java架構。儘管面向組合編程需要較大的思想轉變,但是面向組合編程不需要單獨的工具、語言或XML。Qi4j的應用程式可以在Spring應用軟體、Web應用程式容器、OSGi和其他地方運行。Qi4j大量使用了標註,以此擺脫架構特定的知識,讓開發人員更關注商務規則。項目創始人Rickard Öberg和Niclas Hedhman在新聞稿中這樣描述:
Niclas Hedhman說:“Qi4j是一個以領域為中心的應用開發架構,融入了從面向方面編程、依賴注入和領域驅動設計演化而來的思想,利用了Java 5平台和其生態系統”。Niclas Hedhman是長期從事於Java架構的開發人員,並且現在是Apache的活躍成員。
Rickard Öberg說:“我需要一個能使領域模型和商務規則再度成為關注焦點、讓領域專家和開發人員能夠清晰溝通的系統” 。Rickard Öberg是以前JBoss、Webwork和XDoclet的創始人。
由於這僅僅只是架構和範型最初的展示,文檔和例子還比較少。但是,面向組合編程的目標是完成從對象思考到組合思考的轉變。組合由可複用的片段(fragments)組成。片段是Qi4j的組成塊 。片段攜帶組合成員的狀態(在mixins(混入)中)、驗證和約束它們的使用(在約束(constraints)中)、處理橫切點(在關注點(concerns)中)、並提供通知、緩衝和撤銷管理,以及其他非同步需求(在副作用中)。編程範型的轉變並不是件容易的事情。Oberg這樣描述對面向組合編程的反應:
人們一貫有兩種反應:一是試圖從腦海中掃除源於舊有經驗的壞主意而頭疼欲裂,一是理解我們所提思想的潛力而發出心領神會的微笑。
Qi4j仍在更新,並且不穩定。此時,他們仍在致力於穩定架構,同時將面向組合編程思想推介給社區,希望藉此獲得繼續發展。他們也承認目前還沒有充分準備好讓大家深入到這個架構中,並建議大家在未來數個月中先側重於概念理解。