在真正接触eclipse插件开发一个月后,对插件的开发过程以及技术要求,也有了一定的了解。遥想之前像无头苍蝇一样乱撞乱学,真心觉得浪费了不少时间。这里就总结一下学习的主要过程以及需要的资料。
Eclipse作为强大的开发IDE,本身也作为一款开源软件,提供给了用户强大的扩展能力。我们可以自己开发一款插件,只要放到插件目录下,就可以使用。
下面是本博文主要介绍的内容,希望能帮助新手对插件开发有一定的了解。
学习资料就是思维导图上面介绍的几种。由于国内搞这个方向的确实是少,也就是在一些大型公司或者专门开发一些设计工具的公司才会用到。因此,目前出版的书籍大多已经不再印刷了,只能从网上下载电子版,或者从淘宝买稀缺的纸质书籍。
关于书籍,推荐下面几本。推荐书籍都有百度云盘链接可以下载。
这本书相对于新手来说,还算不错。因为网上可以轻松的找到源码。对照着看书,容易理解一些。书籍的风格上也偏新手教学。
这本书简直就像一本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上面都有不少的开源插件,但是大多比较庞大,大家可以针对某一些领域专门查找学习。
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
之前整理过一篇图片贴,是关于 如何创建一个插件开发工程 ,那么这里就不再对创建工程做过多的描述了。
一般插件都是以Eclipse Application方式启动调试,如果是Debug模式,当你插入断电后,运行到此处会进入debug调试模式。与正常的JAVA项目相同。
当然也有许多是在Java Application,也即是main函数里面创建的,比如org.eclipse.draw2d.examples里面的示例。
基本的路线就是要有一定的JAVA基础,要不然学习起来很吃力的。
swt,主要是一些界面的布局开发。
GEF,是开发编辑器的一种常用技术。
EMF,是开发复杂模型的框架。
GMF,是GEF与EMF的整合,但是包含的插件包很多,因此不推荐学习。如果使用的话,自己整合GEF和EMF也是可以的。红皮书里面有整合的内容。
关于设计模式,不得不说,Eclipse插件开发里面涉及到了大量的设计模式。下面就简单的介绍下插件开发中设计模式的典型应用场景。
【工厂方法】
比如在GEF中的Control模块,就是使用这种设计模式匹配Model与view之间的关系。
【单例模式】
由于eclipse面向的是整个开发周期,因此资源的使用必须高效。在必要的时候,对生命周期很长的对象使用单例模式是必须的,比如Plugin对象。
【适配器模式】
对于不同的类,编辑器提供不同的处理方法。在Editor类中,就需要对不同的类进行适配。
【命令模式】
编辑器里面,很多命令操作都是需要记录的。比如我们删除了一个模型节点,需要通过撤销操作恢复。那么数据都要保存在命令对象中,并且记录在CommonStack里面,在必要的时候进行Undo,Redo操作。
【策略模式】
对于复杂的应用场景,有很多处理方法。为了便于对某一模型扩展处理方法,策略模式也是经典的处理方法。
设计模式的学习,可以参考之前整理的博文:设计模式总览 进行学习。
说到这个,如果没有一定的开发价值,也许大家没有学习的动力。
市场上的许多UML设计软件都是使用Eclipse插件来开发的,而且Eclipse的RCP富客户端开发,应用也十分广泛。
就说目前流行的一款思维导图软件XMind,就是使用Eclipse的RCP技术开发,有一些很好的功能,都是需要付费试用的,所以“钱景”也是很大的。
希望这个方向,能有更多新人注入!
后续还会不断的更新,插件开发的小技巧以及使用等等,谢谢支持。