【插件开发】—— 1 Eclipse插件开发导盲

在真正接触eclipse插件开发一个月后,对插件的开发过程以及技术要求,也有了一定的了解。遥想之前像无头苍蝇一样乱撞乱学,真心觉得浪费了不少时间。这里就总结一下学习的主要过程以及需要的资料。

  Eclipse作为强大的开发IDE,本身也作为一款开源软件,提供给了用户强大的扩展能力。我们可以自己开发一款插件,只要放到插件目录下,就可以使用。

  下面是本博文主要介绍的内容,希望能帮助新手对插件开发有一定的了解。

1 学习资料

  学习资料就是思维导图上面介绍的几种。由于国内搞这个方向的确实是少,也就是在一些大型公司或者专门开发一些设计工具的公司才会用到。因此,目前出版的书籍大多已经不再印刷了,只能从网上下载电子版,或者从淘宝买稀缺的纸质书籍。

关于书籍,推荐下面几本。推荐书籍都有百度云盘链接可以下载。

  《Eclipse插件开发读书笔记

  这本书相对于新手来说,还算不错。因为网上可以轻松的找到源码。对照着看书,容易理解一些。书籍的风格上也偏新手教学。

  《Eclipse插件开发》 

  这本书简直就像一本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技术开发,有一些很好的功能,都是需要付费试用的,所以“钱景”也是很大的。

  希望这个方向,能有更多新人注入!

  后续还会不断的更新,插件开发的小技巧以及使用等等,谢谢支持。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏王亚昌的专栏

UNIX编程艺术之“模块性”

     本章主要讨论模块划分、接口设计,提出了几个很重要的概念,包括紧凑性、正交性、自顶向下和自底向上的设计、SPOT原则、分层、插件化。下面就这几个概念,谈...

11320
来自专栏北京马哥教育

Uread 自动化运维平台七大阶段实践

首先技术并没有好坏之分,只能说一种技术在特定场景会优于另一种技术。 首先uread优读( http://aiuread.com/ )作为一个还处于起步阶段的团队...

37640
来自专栏数据和云

且听AWR之父解读AWR报告

AWR报告是数据库性能评估和优化的重要参考,将数据库的问题已量化的形式展现出来,给DBA带来了很多便利。然而AWR中的内容是非常多的,如何才能以最佳的方式解读A...

38070
来自专栏全华班

springboot实例工程案例(含源码)

引: 最近朋友那边要我给他开发一套JAVA WEB 后台信息管理系统。他要求时间短,任务重,但在 主要业务模板相对比较简单:主要是用于APP后台...

81050
来自专栏开源项目

还有这种操作?构建高性能微服务架构 | 码云周刊第 29 期

高性能微服务架构 码云项目推荐 1基于 Java 8 的微服务框架 Redkale 项目简介:Redkale (中文名: 红菜苔,湖北武汉的一种特产蔬菜) 是基...

480130
来自专栏服务端技术杂谈

[硅谷热门公司技术巡礼]:UBER数据大迁徙

想象一下如果你必须在几个星期内迁移数以亿计的数据和100多个服务项目,同时还要保持UBER被几百万的乘客正常使用,这是多么艰巨的任务啊!而以下这个故事就是关于数...

30970
来自专栏PPV课数据科学社区

【数据可视化专题】数据可视化:前端数据之美如何展示?

随着 web 技术的蓬勃发展,前端的展示、交互越来越复杂,在用户的访问、操作过程中产生了大量的数据。由此,前端的数据分析也变得尤为重要。当然,对于站长来说,你可...

625100
来自专栏程序人生 阅读快乐

超实用的Node.js代码段(代码逆袭)

本书精选300余段Node.js代码,涵盖了服务器端脚本开发中的绝大多数要点、技巧与方法,堪称史上最实用的Node.js框架开发方面的参考书籍,是网站建设与服务...

16520
来自专栏FreeBuf

如何阻止下一次心脏出血漏洞

原文:How to Prevent the next Heartbleed.docx 翻译:赵阳 一、引言 基于OpenSSL的心脏出血漏洞被认为是CVE-20...

364100
来自专栏DevOps时代的专栏

特性分支与特性开关哪家强?

合并冲突 新产品研发初期代码量较少,团队规模也不大,这种时候并不需要太多正式流程。 然而,即使一个团队只有两名开发人员,为了有效避免冲突,仍然建议不要在同时对...

22970

扫码关注云+社区

领取腾讯云代金券