說明:文中涉及到的內(nèi)容比較淺顯,熟悉的同志可以閃過了^_^
擴(kuò)展點(Extension Point)和擴(kuò)展(Extension)這兩個概念,每個插件開發(fā)人員應(yīng)該再熟悉不過了,前者規(guī)定了契約,后者按照契約實現(xiàn)并注冊擴(kuò)展。我們在使用擴(kuò)展之前必然有個過程就是加載擴(kuò)展,如果我們在定義擴(kuò)展點的時候有java類型的屬性,那么這個加載擴(kuò)展的過程就伴隨著類加載。下面我們來分析一下這個過程。
假設(shè)我們定義了如下一個擴(kuò)展點,元素中有一個class屬性,要求父類型為java.lang.Object(夠靈活^_^)
【擴(kuò)展加載過程分析】
我們在加載這個擴(kuò)展的時候,核心操作就是加載class屬性指定類型,這就涉及到了類加載。如果擴(kuò)展所在的插件還沒有被啟動,則在類加載之前必須要完成的一個操作就是:啟動該提供擴(kuò)展的插件。有關(guān)這個問題的分析,可以參見博客的另外一篇文章:
【Eclipse插件開發(fā)】Eclipse插件Lazy Start實現(xiàn)原理分析
我們一般的擴(kuò)展加載代碼如下:
待續(xù)。。。
幾個關(guān)鍵點:擴(kuò)展注冊表的訪問耗時、類加載引起的插件啟動
解決方案:引入中間角色
待續(xù)。。。
本博客中的所有文章、隨筆除了標(biāo)題中含有引用或者轉(zhuǎn)載字樣的,其他均為原創(chuàng)。轉(zhuǎn)載請注明出處,謝謝!