1、漲姿式java
在介紹Eclipse插件開發以前先介紹一點有趣的小知識,剛剛開始的時候知道Eclipse是Java寫的我很驚訝,我比較奇怪爲何Eclipse使用Java寫出來的界面那麼精緻,而我本身寫的Java窗體程序簡直沒有辦法見人。git
說來真的很是慚愧,知道今天我才知道Eclipse不是使用的Sun的AWT和Swing技術,而是本身弄了一個底層圖形技術SWT(Standard Widgit Toolkit,標準圖形工具箱),這裏先說一說這3中技術。shell
首先是AWT,這個是Java中最先弄的一個底層圖形技術,由於Java要跨平臺,因此AWT是對所用圖形系統的支持的圖形的一個交集,從名字就能夠看出來AWT(Abstract Widgit Toolkit,抽象圖形工具箱),它是對支持的圖形系統的一個抽象,就是提取公有的作成抽象圖形工具箱。這樣作的缺點也是很明顯的嘛?交集嘛,支持的圖形組件固然少了,作出來的東西簡陋也就理所固然了。架構
Swing的思想是,基本圖形系統都支持手繪(本身寫函數畫)圖形界面。Swing的組件就都是手繪出來的。這樣用戶須要什麼就徹底能夠本身手繪就能夠了,它的缺點是要本身實現消息處理,性能不是很好。框架
Eclipse的SWT技術的思想就是結合了AWT和Swing的技術,它是判斷若是系統有要使用的圖形組件就使用系統提供的,若是沒有就使用手繪的方式。eclipse
偷偷的思考了一下AWT的界面看起來不怎麼樣應該並不只僅是可用圖形少的緣由。對比一下JDeveloper和Eclipse就知道了,JDeveloper是使用Swing作的,Eclipse是使用SWT作的,一對比感受徹底不在一個檔次上啊。ide
還有一個聽的比較多原來一直不清楚具體是個什麼鬼的JFace,簡單的說JFace就是對SWT進行了封裝,至關於一個開發框架避免你們都作不少重複的工做。函數
使用Eclipse這一套技術及相關的技術來開發基於Java的圖形界面應用逼格馬上就感受高多了。想xmind就是使用Java基於Eclipse RCP架構的軟件。若是感興趣能夠了解一下RCP,EMF,GEF等相關的知識就會發現Eclipse真的很好很強大。工具
2、Eclipse插件小實例性能
言歸正傳,咱們仍是來了解一下Eclipse的插件開發的東西,由於開發Eclipse插件涉及的相關知識比較多,因此下面的介紹感受比較朦朧,這裏主要的目的是漲一點見識,若是感興趣能夠查閱相關的詳細資料。
首先開發Eclipse插件可使用Eclipse,以下圖所示,選擇File->New->Plug-in Project。
圖1 新建Eclipse插件項目
出現以下圖所示的對話框,在Project name中輸入一個項目名字單擊next。
圖2 插件名稱肯定
出現以下圖所示的對話框,直接單擊next
圖3 插件相關內容配置
出現以下圖所示的對話框,咱們能夠選擇Hello,World Command而後單擊finish。
圖4 選擇插件模板
以下圖所示是Eclipse爲咱們生成的目錄和代碼。
圖5 Eclipse插件項目工程結構圖
這裏主要是爲了漲姿式,因此不介紹具體的代碼了,等下面運行一下程序就知道插件的做用了。不過既然是寫Eclipse插件老是要實現一點功能的,咱們就來實現一下記錄Eclipse啓動時間的功能好了。爲了區分咱們仍是先建一個新的包startup,而後新建一個類LaunchTime實現IStartup接口。新的工程結構圖以下:
圖6 Eclipse插件新的工程結構圖
LaunchTime類的代碼以下:
import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IStartup; public class LaunchTime implements IStartup { @Override public void earlyStartup() { //獲取當前線程的Display,而且同步執行Runnable接口的run方法 Display.getDefault().syncExec(new Runnable(){ @Override public void run() { //獲取eclipse的啓動時間 long start = Long.parseLong(System.getProperty("eclipse.startTime")); long launchTime = System.currentTimeMillis() - start; String message = "Eclipse launch cost:" + launchTime + "ms"; //經過Display得到一個窗口(Shell對象) Shell shell = Display.getDefault().getActiveShell(); //使用獲得的shell,使用MessageDialog打開一個信息對話框 MessageDialog.openInformation(shell, "LaunchTime", message); } }); } }
而後以下圖所示,選擇plugin.xml文件選擇Extentions選項,單擊Add按鈕。
圖7 添加擴展點
出現以下圖所示的對話框,在Extension Point filter中輸入startup,而後選擇org.eclipse.startup,而後單擊finish。
圖8 添加starup擴展點
而後入下圖所示,仍是選擇plugin.xml文件,選擇plugin.xml選項,而後像在圖中3所示的位置添加<startup class="plugin.startup.LaunchTime" />把咱們寫的類配置進去。
圖9 配置咱們的擴展類
而後入下圖所示,依然選擇plugin.xml文件,而後選擇Overview選項,而後選擇途中3所表示位置的Launch或者Launch in Debug。
圖10 插件測試
以下圖所示,是Eclipse啓動成功以後咱們的插件的效果:
圖11 Eclipse啓動時間插件測試
以下圖所示,是咱們配置生成的Eclipse插件
圖12 生成的Hello World插件
當咱們單擊如上圖所示的圖標的時候,出現以下圖所示的效果:
圖13 生成的Hello World插件測試
3、插件的導出與安裝
以下圖所示選擇File->Export選項,
圖14 導出插件項目
出現以下圖所示對話框,選擇Deployable plug-ins and fragments單擊next。
圖15 選擇要導出的項目類型
出現以下圖所示的對話框,選擇要導出的插件項目,選擇目標文件夾,單擊finish就能夠了。
圖16 選擇要導出插件和導出位置
在導出的目錄下有一個plugins文件夾下面就是導出的插件,把這個插件拷貝到Eclipse目錄下的plugins目錄下,重啓Eclipse就OK了。