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了。