Eclipse插件終極攻略:基本概念介紹
前段日子,51CTO為大家帶來了《Eclipse插件大全 挑選最牛的TOP30》被網友們廣泛關注。很多朋友都希望我們再報道些Eclipse插件的文章。51CTO為網友們挑選的一篇日文開發的資料《Eclipse 3.4 対応 Eclipse 3.4 プラグイン開発 徹底攻略》的中文系列譯文。在這個系列的***部分里,將對Eclipse和插件的概要、插件開發的基本概念、OSGi和SWT進行簡單介紹。
51CTO推薦專題:Eclipse平臺應用與開發詳解
名詞翻譯
◆有一些名詞在翻譯的過程中可能會出現歧義,在這里統一一下。
◆アーキテクチャ=architecture=架構
◆プラットフォーム=platform=平臺
◆コンポーネント=component=組件
1.Eclipse的架構
Eclipse被作為java的IDE(集成開發環境)被廣泛的應用,但是從本質上看Eclipse是一個整合了各種開發工具的平臺。因此,它采用了可以自由的增加各種功能的插件架構技術。Eclipse平臺的基本架構如圖1-1所示。
圖1-1 Eclipse的架構
在這里,在***層位置的是作為Eclipse插件架構基干的OSGi運行時。雖然在早期的Eclipse版本中已經開始使用插件架構了,但是在Eclipse3.0的時候才***引入了OSGi。OSGi是open services gateway initiative的簡稱、原本是一種為嵌入式硬件開發的,使網絡上的服務提供者和使用者交互(結びつける)的注冊服務。Eclipse使用OSGi來進行插件的管理。
OSGi運行時之上所有被配置的組件群都是以插件的方式提供的。SWT和JFace提供了用戶接口(User Interface)的API。由于SWT和JFace并不依賴于Eclipse,也有可能被作為類庫單獨使用。Eclipse不僅把基本的用戶接口作為工作臺API(WorkBench API)提供出來,在后面要講到的工作區(Workspace)內的資源通過資源API(Resource API)的形式也被作為基本API提供出來了。在這之上構建起了幫助系統以及基于更新管理器的自動更新等功能。
從Eclipse平臺的角度看,SWT、JFace、工作臺的部分就是EclipseRCP(Rich Client Platform)。EclipseRCP是基于Eclipse的富客戶端技術,Eclipse不僅是一個開發工具,也可以作為一個通用的應用程序平臺。EclipseRCP是Eclipse平臺的子集,同時,Eclipse自身也是一個EclipseRCP的運用實例。
#p#
2.擴展點
插件為了自身能夠對其他插件進行擴展而提出了擴展點的概念。當要為插件增加功能的時候就可以利用這個擴展點。在擴展點的基礎上,插件之間可以互相連接。
圖1-2 使用擴展點進行擴展
擴展和擴展點的連接在程序執行時被建立,提供擴展點的插件事先并不知道該擴展點實際被擴展了什么樣的行為。使用擴展點的插件需要在清單文件(plugin.xml)中像代碼1-1那樣,使用extension元素聲明擴展。
extension元素中的schema由提供擴展點的插件決定,元素中的內容必須按照schema進行書寫。
代碼1-1 plugin.xml中聲明擴展
- <extension point="被使用擴展點的ID">
- ......
- </extension>
像上面這樣的擴展點和擴展不斷的積累重疊,使得Eclipse平臺能夠實現各種各樣的功能。Eclipse平臺提供的擴展點有
◆增加菜單項
◆增加視圖
◆增加編輯器
等等,數量非常的多。本文將以使用頻率相對較高的擴展點為中心進行介紹,在Eclipse的幫助中有Eclipse提供的所有擴展點的說明,大家在使用時可以參考。
當然,定義一個新的自制插件是絕對可能的。擴展點的定義方法會在[擴展點定義]章節中為大家詳細介紹。
#p#
3.工作臺(Workbench)
在這里認為看到本文的同學們都曾經用Eclipse做過Java的開發。Eclipse的各個部分的名稱大家也許都已經知道了。為了在以后的文章中統一意識,在這里我們再復習一下。
工作臺是Eclipse的整個用戶接口的統稱。工作臺內的結構見圖1-3
圖1-3 工作臺
工作臺窗口
Eclipse的窗口。通常一個工作臺會打開一個窗口,但是也可能一個工作臺對應多個窗口。
工作臺頁面
在工作臺上打開的每個透視圖(用于特定用途的視圖、編輯器的布局)和一個頁面對應。可以包含多個視圖和編輯器。
菜單欄
和一般的GUI應用一樣的菜單欄區域。
工具欄
和一般的GUI應用一樣的工具欄區域。默認情況下工具欄的右邊區域用來顯示透視圖的列表
狀態欄
通常在畫面的最下面顯示的區域。編輯器的光標位置、生成進度狀況等根據工作臺上的操作內容顯示各種信息。
視圖
作用是提供開發者想要的信息。可以收到狀態欄內,必要時再打開(高速視圖)。基本上一個視圖在一個工作臺內只能打開一個。
編輯器
主要用于文件的編輯。和視圖不同編輯器可以同時打開多個。對于同一個文件也可以打開多個編輯器。
從插件的代碼中訪問工作臺使用org.eclipse.ui.PlatformUI類。代碼1-2說明了從PlatformUI中取得工作臺和工作臺窗口的代碼示例。
代碼1-2 使用PlatformUI訪問工作臺
- //取得工作臺
- IWorkbench workbench = PlatformUI.getWorkbench();
- //取得工作臺窗口
- IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
- //取得工作臺頁面
- IWorkbenchPage page = window.getActivePage();
- //取得當前處于活動狀態的編輯器窗口
- IEditorPart part = page.getActiveEditor();
#p#
4.工作區和資源API
在Eclipse中使用工作區作為開發人員的作業區域。工作區是在Eclipse啟動時指定的一個物理文件夾。開發人員在Eclipse上生成工程、創建文件等操作都會在工作區指定的文件夾內生成實際的文件。
工作區內的資源在Eclipse內部使用org.eclipse.core.resources包中定義的虛擬對象進行操作,例如工程是IProject、文件夾是IFolder、文件時IFile。
圖1-4 工作區內的資源
在插件開發的時候很多情況都會使用到工作區內的文件或者文件夾。這時就可以使用這些對象。
對工作區的訪問需要使用org.eclipse.core.resources.ResourcesPlugin。代碼1-3是利用IWorkspaceRoot,去的工作區內的工程的代碼示例
代碼1-3 使用ResourcesPlugin訪問工作區
- //取得工作區的root
- IWorkspaceRoot wsroot = ResourcesPlugin.getWorkspace().getRoot();
- //取得項目
- IProject[] projects = wsroot.getProjects();
工作臺和資源訪問的API是Eclipse提供的API中最基本的,在插件開發時使用頻率較高的API。在這里不做詳細的說明,在以后得例子中會出現一些這樣的API。使用PlatformUI作為工作臺訪問的入口點和使用ResourcesPlugin作為工作區訪問的入口點,是無論如何也要記住的。
在Eclipse中使用PDE(Plugin Development Environment)進行插件開發。在PDE中為大家準備了幾個模板供大家參考。***步咱們先利用模板制作一個簡單的插件作為和PDE的***次接觸。
感謝大家關注51CTO《Eclipse插件開發基礎篇之***攻略》。如果您對Eclipse有什么新的使用心得可以發Email:zhousn@51cto.com,51CTO將與您一起分享!
【編輯推薦】