【Eclipse插件開發】正確處理擴展加載
說明:文中涉及到的內容比較淺顯,熟悉的同志可以閃過了^_^
擴展點(Extension Point)和擴展(Extension)這兩個概念,每個插件開發人員應該再熟悉不過了,前者規定了契約,后者按照契約實現并注冊擴展。我們在使用擴展之前必然有個過程就是加載擴展,如果我們在定義擴展點的時候有java類型的屬性,那么這個加載擴展的過程就伴隨著類加載。下面我們來分析一下這個過程。
假設我們定義了如下一個擴展點,元素中有一個class屬性,要求父類型為java.lang.Object(夠靈活^_^)

【擴展加載過程分析】
我們在加載這個擴展的時候,核心操作就是加載class屬性指定類型,這就涉及到了類加載。如果擴展所在的插件還沒有被啟動,則在類加載之前必須要完成的一個操作就是:啟動該提供擴展的插件。有關這個問題的分析,可以參見博客的另外一篇文章:
【Eclipse插件開發】Eclipse插件Lazy Start實現原理分析
我們一般的擴展加載代碼如下:
待續。。。
幾個關鍵點:擴展注冊表的訪問耗時、類加載引起的插件啟動
解決方案:引入中間角色
待續。。。
擴展點(Extension Point)和擴展(Extension)這兩個概念,每個插件開發人員應該再熟悉不過了,前者規定了契約,后者按照契約實現并注冊擴展。我們在使用擴展之前必然有個過程就是加載擴展,如果我們在定義擴展點的時候有java類型的屬性,那么這個加載擴展的過程就伴隨著類加載。下面我們來分析一下這個過程。
假設我們定義了如下一個擴展點,元素中有一個class屬性,要求父類型為java.lang.Object(夠靈活^_^)
【擴展加載過程分析】
我們在加載這個擴展的時候,核心操作就是加載class屬性指定類型,這就涉及到了類加載。如果擴展所在的插件還沒有被啟動,則在類加載之前必須要完成的一個操作就是:啟動該提供擴展的插件。有關這個問題的分析,可以參見博客的另外一篇文章:
【Eclipse插件開發】Eclipse插件Lazy Start實現原理分析
我們一般的擴展加載代碼如下:
待續。。。
幾個關鍵點:擴展注冊表的訪問耗時、類加載引起的插件啟動
解決方案:引入中間角色
待續。。。
本博客中的所有文章、隨筆除了標題中含有引用或者轉載字樣的,其他均為原創。轉載請注明出處,謝謝!
posted on 2008-09-17 18:08 zhuxing 閱讀(981) 評論(0) 編輯 收藏 所屬分類: Eclipse Plug-in & OSGI