【插件開發】—— 1 Eclipse插件開發導盲
在真正接觸eclipse插件開發一個月后,對插件的開發過程以及技術要求,也有了一定的了解。遙想之前像無頭蒼蠅一樣亂撞亂學,真心覺得浪費了不少時間。這里就總結一下學習的主要過程以及需要的資料。
Eclipse作為強大的開發IDE,本身也作為一款開源軟件,提供給了用戶強大的擴展能力。我們可以自己開發一款插件,只要放到插件目錄下,就可以使用。
下面是本博文主要介紹的內容,希望能幫助新手對插件開發有一定的了解。
1 學習資料
學習資料就是思維導圖上面介紹的幾種。由於國內搞這個方向的確實是少,也就是在一些大型公司或者專門開發一些設計工具的公司才會用到。因此,目前出版的書籍大多已經不再印刷了,只能從網上下載電子版,或者從淘寶買稀缺的紙質書籍。
關於書籍,推薦下面幾本。推薦書籍都有百度雲盤鏈接可以下載。
這本書相對於新手來說,還算不錯。因為網上可以輕松的找到源碼。對照着看書,容易理解一些。書籍的風格上也偏新手教學。
這本書簡直就像一本API的教程,英文原版應該說是Eclipse開發聖經,但是漢譯的沒什么特別感覺,而且找不到源代碼。穿插着,用來熟悉API不錯。
《GEF紅皮書》
這本英文電子版的書籍,是從GEF的官網上就可以下載的。推薦研究GEF的時候再看。
論壇,其實沒有太好的,畢竟開發人員少。
還是看IBM的developer或者Eclipse的官方網站比較好。
IBM Develper : http://www.ibm.com/developerworks/cn/java/os-ecplug/
Eclipse Corner : https://wiki.eclipse.org/Eclipse_Corner
博客
這個可以說是國內開發人員最好的學習地方了。
首輪最佳推薦,【八進制】的博客,我學習GEF基本就是總看他的博客,可惜他已經不研究這個了,要不然可以作為領路人了。
http://www.cnblogs.com/bjzhanghao/category/36197.html
其他人的寫的也不多,也就不做多說了。
源碼
關於Eclipse插件的源碼,閱讀起來真心不是一般的累。因為為了迎合官方的開發模式,我們自己開發的插件,往往也十分龐大。一個簡單的編輯器功能,基本上都要幾千行甚至上萬的代碼。如果沒有一定的理論基礎,看代碼是十分痛苦的。這里推薦幾個學習的源碼:
【org.eclipse.draw2d.examples】,這里面有很多獨立啟動的小應用。可以學習很多插件相關的知識,比如屬性開發,界面等等。
【讀書筆記附帶源碼】, 結合書籍閱讀,簡直是開發必備。
【GEF源碼】,官網都有下載,這里是3.6版本。這個插件安裝到eclipse后,會在新建工程的導航菜單里面,看到Examples文件夾,打開就可以看到有幾個文件。這幾個都是GEF的樣例代碼,比如logic,可以給開發者進行學習和參考。
另外呢,sourceForge以及github上面都有不少的開源插件,但是大多比較龐大,大家可以針對某一些領域專門查找學習。
2 插件的安裝
Eclipse插件通常以jar包形式存在,這個jar包需要先進行解壓縮。
【方法1】:解壓縮后直接放在Eclipse開發工具文件目錄的Plugins下。
【方法2】:在dropins里面創建XXX.link文件,然后以相對路徑的方式放置插件。
比如我們在這個目錄下新建一個文件夾my_plugins。那么link的內容應該是:path=my_plugins\\XXX
另外有一個小技巧:如果你想查看eclipse的版本,可以用記事本打開.eclipseproduct文件,里面可以看到eclipse的版本:
name=Eclipse Platform id=org.eclipse.platform version=4.4.0
如果你想修改jvm或者綁定jdk的路徑,可以修改eclipse.ini
-startup plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20140603-1326 -product org.eclipse.epp.package.jee.product --launcher.defaultAction openFile --launcher.XXMaxPermSize 256M -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m --launcher.defaultAction openFile --launcher.appendVmargs -vmargs -Dosgi.requiredJavaVersion=1.6 -Xms40m -Xmx512m
3 插件的調試以及創建
之前整理過一篇圖片貼,是關於 如何創建一個插件開發工程 ,那么這里就不再對創建工程做過多的描述了。
一般插件都是以Eclipse Application方式啟動調試,如果是Debug模式,當你插入斷電后,運行到此處會進入debug調試模式。與正常的JAVA項目相同。
當然也有許多是在Java Application,也即是main函數里面創建的,比如org.eclipse.draw2d.examples里面的示例。
4 學習路線
基本的路線就是要有一定的JAVA基礎,要不然學習起來很吃力的。
swt,主要是一些界面的布局開發。
GEF,是開發編輯器的一種常用技術。
EMF,是開發復雜模型的框架。
GMF,是GEF與EMF的整合,但是包含的插件包很多,因此不推薦學習。如果使用的話,自己整合GEF和EMF也是可以的。紅皮書里面有整合的內容。
關於設計模式,不得不說,Eclipse插件開發里面涉及到了大量的設計模式。下面就簡單的介紹下插件開發中設計模式的典型應用場景。
【工廠方法】
比如在GEF中的Control模塊,就是使用這種設計模式匹配Model與view之間的關系。
【單例模式】
由於eclipse面向的是整個開發周期,因此資源的使用必須高效。在必要的時候,對生命周期很長的對象使用單例模式是必須的,比如Plugin對象。
【適配器模式】
對於不同的類,編輯器提供不同的處理方法。在Editor類中,就需要對不同的類進行適配。
【命令模式】
編輯器里面,很多命令操作都是需要記錄的。比如我們刪除了一個模型節點,需要通過撤銷操作恢復。那么數據都要保存在命令對象中,並且記錄在CommonStack里面,在必要的時候進行Undo,Redo操作。
【策略模式】
對於復雜的應用場景,有很多處理方法。為了便於對某一模型擴展處理方法,策略模式也是經典的處理方法。
設計模式的學習,可以參考之前整理的博文:設計模式總覽 進行學習。
5 開發前景
說到這個,如果沒有一定的開發價值,也許大家沒有學習的動力。
市場上的許多UML設計軟件都是使用Eclipse插件來開發的,而且Eclipse的RCP富客戶端開發,應用也十分廣泛。
就說目前流行的一款思維導圖軟件XMind,就是使用Eclipse的RCP技術開發,有一些很好的功能,都是需要付費試用的,所以“錢景”也是很大的。
希望這個方向,能有更多新人注入!
后續還會不斷的更新,插件開發的小技巧以及使用等等,謝謝支持。