【插件开发】—— 1 Eclipse插件开发导盲
【插件开发】—— 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技术开发,有一些很好的功能,都是需要付费试用的,所以“钱景”也是很大的。
希望这个方向,能有更多新人注入!
后续还会不断的更新,插件开发的小技巧以及使用等等,谢谢支持。
【插件开发】—— 1 Eclipse插件开发导盲的更多相关文章
- Eclipse插件开发_学习_00_资源帖
一.官方资料 1.eclipse api 2.GEF Developer's Guide 二. 精选资料 1.开发 Eclipse 插件 2.Eclipse, RCP, Plugin and OSGi ...
- Eclipse插件开发中对于Jar包和类文件引用的处理(彻底解决插件开发中的NoClassDefFoundError问题)(转)
目的:Eclipse插件开发中,经常要引用第三方包或者是引用其他插件中的类,由于插件开发环境引用类路径的设置和运行平台引用类路径的设置不同,经常导致开发过程OK,一旦运行则出现NoClassDefFo ...
- (地址)eclipse插件开发攻略的访问地址
园子地址: http://www.cnblogs.com/liuzhuo/category/257208.html 关键字: Eclipse插件开发彻底攻略 eclipse插件开发基础篇之
- 【转】eclipse插件开发,调试运行,导出与安装
[转自]http://www.kankanews.com/ICkengine/archives/61043.shtml 文章来自KENGINE | Kankanews.com 摘要: 本文主要讲ecl ...
- eclipse插件开发(一)
eclipse本身是一个开源平台, 给用户提供了很多扩展点.我们完全可以开发属于自己的一套插件,安装在eclipse插件目录下,即可使用我们的插件. 下面说下eclipse插件的快速开发. 1.在ec ...
- Eclipse 插件开发 -- 深入理解菜单(Menu)功能及其扩展点( FROM IBM)
Eclipse 插件开发 -- 深入理解菜单(Menu)功能及其扩展点 菜单是各种软件及开发平台会提供的必备功能,Eclipse 也不例外,提供了丰富的菜单,包括主菜单(Main Menu),视图 / ...
- Eclipse插件开发_异常_01_java.lang.RuntimeException: No application id has been found.
一.异常现象 在运行RCP程序时,出现 java.lang.RuntimeException: No application id has been found. at org.eclipse.equ ...
- Eclipse插件开发 学习笔记 PDF 第一篇到第四篇 免分下载 开发基础 核心技术 高级进阶 综合实例
<<Eclipse插件开发 学习笔记>>,本书由浅入深.有重点.有针对性地介绍了Eclipse插件开发技术,全书分为4篇共24章.第一篇介绍Eclipse平台界面开发的基础知识 ...
- 【eclipse插件开发实战】Eclipse插件开发7——插件发布jar包
Eclipse插件开发7--插件发布jar包 最省事的方式就是直接导出jar包,然后放到eclipse的plugins目录下,重启eclipse即可. step1: 对需要打包的插件工程右击→导出(E ...
随机推荐
- iOS 编译报错
Undefined symbols for architecture i386: “_OBJC_CLASS_$_XXX”, referenced from: objc-class-ref in XXX ...
- IOS之--UI进阶--多控制器管理第一天
01-项目中常见的文件(LaunchScreen) Xcode5 框架是苹果事先已经导入进去的.在项目的结构当中就能够看到导入的框架. Xcode6 会自动导入一些觉见的框架.在项目结构当中,看不到已 ...
- [Weblogic]如何清理缓存
背景:在开发调试或测试时,很多时候重新更新部署服务后会发现某些更新并没有体现到,还是之前的情况,也或者会出现其他错误问题,这个时候就要考虑到可能是weblogic缓存未清理引起. 清理缓存步骤如下: ...
- Android Design Support Library——Snackbar
Snackbar是一个轻量级控件,它可以很方便的提供消息的提示和动作反馈,类似于Toast.Snackbar包括一段文字信息与一个可选的操作按钮,超时自动隐藏,也可以通过滑动来删除.效果如下所示: S ...
- nginx入门(安装,启动,关闭,信号量控制)
公司使用到了nginx,于是周末初步接触了一下nginx,立即被其简洁,优雅,高效的特性给迷住了.nginx是在是个好东西,配置极其简单,容易理解,极其高效,稍微一调优,ab测试10k并发,很轻松.比 ...
- C标准头文件<assert.h>
<assert.h>定义了两个用来调试程序的宏: assert和NDEBUG,assert用来判断表达式是否为真,如果为真继续执行,如果为假,向stderr输出一条错误消息,并调用< ...
- Openwrt LuCI模块练习详细步骤
前言 又到了成胖子^_^每周一博的时间了.最近在学习openwrt luci方面的知识,为了贯穿整个知识体系,练习题目为: 通过页面配置周期性地往/tmp/addtest文件写入内容和时间戳 1.在w ...
- ipc之消息队列
消息队列以链表的方式将消息存储于内核中,调用msgsnd,msgrcv函数往消息队列里面投送,取出指定的消息. 创建一个消息队列 生成一个消息队列或者获取已有消息队列id #include <s ...
- Linux Commands intro1
$((expression)) echo $(2+2) :wrong echo $((2+2)) : right echo Front-{A,B,C}-Back Front-A-Back Front ...
- DFS cdoevs 3100 蜗牛
cdoevs 3100 蜗牛 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题目描述 Description 萨丽·斯内尔(Sally Snail,蜗牛)喜欢在 ...