Eclipse 架構建立在動態發現擴展的基礎上,若擴展以程式碼方式定義,隨擴展增加啟動開銷將失控。解決之道:**外掛以清單檔靜態宣告擴展**,平台解析 XML 即可繪製初始 UI(圖示、工具提示等),延遲代碼載入至使用者實際互動時刻。XML 解析快且可快取,新增外掛不顯著影響啟動。但不當實作仍會破壞此機制,導致啟動緩慢、記憶體飆升。
Runtime Spy 正是為診斷此類問題而生的核心工具(Core Tools 組件),僅支援 Eclipse 2.x(3.0 相容性 Bug #47518 待修)。
org.eclipse.core.tools 下的 .options 複製至 <inst_dir>/eclipse,以 -debug 參數啟動。若需監控類別載入,另需編輯 org.eclipse.core.boot/trace.properties 指定目標套件。Run → Run As → Runtime Workbench 的 Tracing 頁面勾選選項(圖 8)。效能測量時建議僅啟用 monitor/plugins=true,其餘關閉以減少干擾。開啟後顯示(圖 2):
org.eclipse.ui.startup 觸發者)。Order 欄位可依載入順序排序。刷新按鈕
更新列表。技巧:全選 → 操作 → 刷新 → 未選取者為新啟動外掛。
顯示已載入類別。依載入順序排序可見「大局觀」,揭示啟動代碼執行全貌——啟示往往是「啟動時做太多事」。trace.properties 指定目標套件(如 packages=org.eclipse.jface.text),再於 Loaded Classes 選取類別點擊刷新
。堆疊中下部為關鍵業務邏輯(圖 5 高亮處)。IPluginDescriptor.getResourceString 載入情況。類別載入通常因直接引用(可查 import),但外掛啟動多因**間接引用**:
<import plugin="..."/>以 "Hello, Eclipse" 範例(清單 1):org.eclipse.ui.actionSets 擴展點貢獻隱式依賴 Workbench UI 外掛。平台讀取註冊表建立**委派 Action** 代理選單項,**真正 Action 類別僅在使用者點選時才實例化**,完美延遲外掛啟動。此機制為效能優化關鍵範本。
圖 6 顯示 PDE Plug-ins 視圖雙擊觸發預設動作處理器 → 載入 org.eclipse.ui.editors → 呼叫 createExecutableExtension。堆疊高亮部分僅顯示擴展點處理器代碼,因對 Workbench 類別的引用是間接的。六次類似追蹤即可掌握 createExecutableExtension 前後關鍵環節,識別啟動源頭與後果。
.metadata 結構(需深度理解工作區實作)。第二部分將實戰展示如何診斷 WebSphere Studio 5.1.1 的多個啟動問題,視開啟視圖/透視圖不同,啟動效能提升 11%~37%,證明理解外掛啟動時機與原因是實現 Eclipse 極速啟動的關鍵。敬請期待 WebSphere Studio 6.0 真正實現啟動效能飛躍!