EclipseCon2006已經結束一段時間了,最近才抽出時間去down下相關感興趣的PPT來看看,受益不少,N多大師的演講另人拍案叫絕,不過也有幾個PPT讓我看的有所疑問,摘錄幾個PPT的讀后感,^_^
1、Best Practices for Programming Eclipse and OSGi
????? 這個PPT是equinox team leader Jeff的大作,^_^,非常的不錯,點出了Equinox中的兩個重點,雖然這和PPT的名字有所不同:
????? Modularity
?????在equinox中可以采用兩種方式來實現這點,分別是Require-Bundle和Import-Package的方式,就像Jeff在PPT中所說一樣,Require-Bundle適合用于需要引用其他Bundle中的資源的情況,但它就使得bundle產生了緊耦合,所以推薦使用Import-Package,Import-Package保證了松耦合,在實際的使用中來看,Import-Package能夠使得面向接口的編程得以強制進行,當然,不是說require-bundle就一無是處了,^_^
????? Collaboration
??????在松散型的插件架構體系中,插件如何進行協作無疑是最為關注的重點,?Jeff在PPT中提到了在equinox中可以采用三種方式來實現協作,分別為Extension Registry、Service Registry和Declarative Services,對Jeff把Extension Registry列在Collaboration這里我表示有些疑問,我認為Extension Registry和Collaboration關注的完全是兩個層面,一個關注的是擴展,一個關注的是協作,Extension Registry不用多做介紹,在Equinox目前的版本中Declarative Service Implemention并沒有列入release階段,不過以Jeff在PPT的介紹來說非常吸引人,特別是這句"similar to Spring",^_^,不過以我對之前Osgi R4的Declarative Service的了解來說,我認為它僅僅是IoC Type1而已,但如果象Jeff所說的這樣的話那Declarative Service真的非常吸引人了,之前在equinox中都是使用Service Registry的方式來實現bundles的協作,痛苦呀,^_^,等試用了Declarative Service再行評價。
????? 如感興趣,可到http://eclipsezilla.eclipsecon.org/php/attachment.php?bugid=185下載此PPT。
2、Beyond Code Reuse
????? 這個PPT中總結了一些Eclipse帶給我們超越代碼復用級別的思考,總結的非常好:
????? Modularize your applications
????? Eclipse讓我們看到了如何去模塊化的設計應用系統,最重要的幾點就在于定義組件和API以及管理模塊間的依賴,方式在1中的PPT的Modularity中有所提及。
????? Separate UI and core modules
??????這點如果你閱讀過《Contributing to Eclipse》就明白了,在eclipse中有個重要的設計模式,稱為Adapative Interface/Class,^_^,可以合理的將Core Model Object擴展為UI Model Object而不造成污染....
?????? Design for extensibility
?????? Eclipse的擴展性沒什么說的,^_^,都是通過Extension Points的方式來實現,這點在自己設計系統中也是值得學習的,保持模塊的擴展性。
?????? Build to last
?????? 這點可用于保證API的穩定。
?????? Adopt "The Eclipse Way"
?????? Eclipse采用的一些好的實踐,如日構建、集成構建和發布構建、單元測試、每周的計劃、6周為一里程碑、時刻保持release版本、從里程碑版本中得到反饋等等,記得以前好像有個專門的這樣的PPT....
?????? 如感興趣,可到http://eclipsezilla.eclipsecon.org/php/attachment.php?bugid=123下載此PPT。
3、From Osgi R3 to Eclipse and Equinox
????? 對這個PPT中的一些觀點非常的不認同,在這個PPT中作者首先定義了兩個名詞:
????? BAPM: Osgi R3 Bundle Activator Programming Model
????? HPM: Eclipse Extension Points & Osgi R4 Declarative Services Programming Model
????? 作者對這兩種方式進行了一系列比較,他認為:
?????? BAPM
???????更簡單
???????有工具可支持校驗等
?????? 允許使用純pojos來實現業務邏輯處理
?????? 更為靈活(在重構和測試方面)
???????HPM
?????? 復雜
???????DS沒有工具的支持
???????Extension Points的概念太復雜
?????? 將業務邏輯處理分解到Eclipse和Equinox的API中去實現
?????? 在大型系統方面更為高效(超過1000個的插件)
?????? 不確定的功能特性方面支持
?????? BAPM更為簡單我表示一定程度上的認同,畢竟Declarative Service是需要配置的,但對于BAPM允許使用純pojos來實現業務邏輯,而HPM不支持的觀點我表示懷疑,在這點上如果DS象Jeff所說可以實現setter DI的話,那么不用說,HPM自然可以使用純Pojos來實現業務邏輯,而BAPM呢,除非能夠在activator中完成plugin中各個需要外部service類的初始化,否則,就沒法pojo了,就象嵌入一個web action在一個plugin中,這個時候是不能在activator中去初始化這個action的,那么何來pojo呢,^_^,同樣的疑問就可以被應用在作者認為的BAPM更為靈活的觀點上。
?????? 如感興趣,可到http://eclipsezilla.eclipsecon.org/php/attachment.php?bugid=366下載此PPT。
4、Extending Eclipse's Plug-in Concept to the SOA World
??????這個PPT表達了怎么樣將eclipse的plugin概念調整為適應SOA體系的觀點,在這個觀點上,我覺得OSGI本身其實就是個很好的服務體系的架構,甚至強過SOA,不過他們各自的關注點有所不同,所以也沒什么好完全去比較的。
????? 如感興趣,可到http://eclipsezilla.eclipsecon.org/php/attachment.php?bugid=145下載此PPT。
^_^,以上是看了部分的PPT的一些看法,在這次EclipseCon 2006上有非常多的優秀的PPT,象OSGi? Component Programming等等,可以到這里找自己感興趣的PPT下載:
http://www.eclipsecon.org/2006/Sub.do?id=all?