基于Eclipse插件架构的代码生器.pptx_第1页
基于Eclipse插件架构的代码生器.pptx_第2页
基于Eclipse插件架构的代码生器.pptx_第3页
基于Eclipse插件架构的代码生器.pptx_第4页
基于Eclipse插件架构的代码生器.pptx_第5页
免费预览已结束,剩余37页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Eclipse插件架构的代码生器 吴光英Gavin PPT概要 名词解释 architecture 架构platform 平台component 组件OSGi 是openservicesgatewayinitiative的简称RCP 是RichClientPlatform简称 富客户端平台技术SWT StandardWidgetToolkit是Eclipse平台开发的GUI工具包 Widget 基本的SWTGUI组件 类似于JavaAWT中的Component和Swing中的JComponent Widget是一个抽象类 Composite 包含其他控件的控件 类似于JavaAWT中的Container和Swing中的JPanel 1 Eclipse简介 Eclipse是一个开放源代码的 基于Java的可扩展开发平台 虽然大多数用户很乐于将Eclipse当作Java集成开发环境 IDE 来使用 但Eclipse的目标却不仅限于此 Eclipse还包括插件开发环境 Plug inDevelopmentEnvironment PDE 这个组件主要针对希望扩展Eclipse的软件开发人员 因为它允许他们构建与Eclipse环境无缝集成的工具 Eclipse中的每样东西都是插件 对于给Eclipse提供插件 以及给用户提供一致和统一的集成开发环境而言 所有工具开发人员都具有同等的发挥场所 Eclipse是使用Java语言开发的 但它的用途并不限于Java语言 例如 支持诸如C C COBOL PHP Android等编程语言的插件已经可用基于Eclipse的应用程序的一个突出例子是IBMRationalSoftwareArchitect 它构成了IBMJava开发工具系列的基础 IBM Rational SoftwareArchitect是一个面向端对端软件交付先进全面的应用设计 建模及开发工具 2 Eclipse的架构 Eclipse被作为java的IDE 集成开发环境 被广泛的应用 但是从本质上看Eclipse是一个整合了各种开发工具的平台 因此 它采用了可以自由的增加各种功能的插件架构技术 Eclipse平台的基本架构如图1 1所示 2 1Eclipse的架构 在最底层位置的是作为Eclipse插件架构基干的OSGi运行时 在Eclipse3 0的时候才首次引入了OSGi OSGi是openservicesgatewayinitiative的简称 原本是一种为嵌入式硬件开发的 使网络上的服务提供者和使用者交互的注册服务 Eclipse使用OSGi来进行插件的管理 OSGi运行时之上所有被配置的组件群都是以插件的方式提供的 SWT和JFace提供了用户接口 UserInterface 的API 由于SWT和JFace并不依赖于Eclipse 也有可能被作为类库单独使用 Eclipse不仅把基本的用户接口作为工作台API WorkBenchAPI 提供出来 在后面要讲到的工作区 Workspace 内的资源通过资源API ResourceAPI 的形式也被作为基本API提供出来了 在这之上构建起了帮助系统以及基于更新管理器的自动更新等功能 从Eclipse平台的角度看 SWT JFace 工作台的部分就是EclipseRCP RichClientPlatform EclipseRCP是基于Eclipse的富客户端技术 Eclipse不仅是一个开发工具 也可以作为一个通用的应用程序平台 EclipseRCP是Eclipse平台的子集 同时 Eclipse自身也是一个EclipseRCP的运用实例 2 2 1工作台 Workbench 工作台是Eclipse的整个用户接口的统称 工作台内的结构见下图 2 2 2工作台 Workbench 工作台窗口 Eclipse的窗口 通常一个工作台会打开一个窗口 但是也可能一个工作台对应多个窗口 工作台页面 在工作台上打开的每个透视图 用于特定用途的视图 编辑器的布局 和一个页面对应 可以包含多个视图和编辑器 菜单栏 和一般的GUI应用一样的菜单栏区域 工具栏 和一般的GUI应用一样的工具栏区域 默认情况下工具栏的右边区域用来显示透视图的列表状态栏 通常在画面的最下面显示的区域 编辑器的光标位置 生成进度状况等根据工作台上的操作内容显示各种信息 视图 作用是提供开发者想要的信息 可以收到状态栏内 必要时再打开 高速视图 基本上一个视图在一个工作台内只能打开一个 编辑器 主要用于文件的编辑 和视图不同编辑器可以同时打开多个 对于同一个文件也可以打开多个编辑器 2 2 3工作台 Workbench 从插件的代码中访问工作台使用org eclipse ui PlatformUI类 代码1 2说明了从PlatformUI中取得工作台和工作台窗口的代码示例 2 3工作区和资源API 在Eclipse中使用工作区作为开发人员的作业区域 工作区是在Eclipse启动时指定的一个物理文件夹 开发人员在Eclipse上生成工程 创建文件等操作都会在工作区指定的文件夹内生成实际的文件 工作区内的资源在Eclipse内部使用org eclipse core resources包中定义的虚拟对象进行操作 例如工程是IProject 文件夹是IFolder 文件时IFile 工作区内的资源如下图 2 4工作区和资源API 在插件开发的时候很多情况都会使用到工作区内的文件或者文件夹 这时就可以使用这些对象 对工作区的访问需要使用org eclipse core resources ResourcesPlugin 如图代码是利用IWorkspaceRoot 取工作区内的工程的代码示例如图代码使用ResourcesPlugin访问工作区工作台和资源访问的API是Eclipse提供的API中最基本的 插件开发使用PlatformUI作为工作台访问的入口点和使用ResourcesPlugin作为工作区访问的入口点 3 SWT JFace简介 基于Java的图形库最主要的有三种 它们分别是Swing AWT和SWT 其中前两个是Sun随JDK一起发布的 而SWT则是由IBM领导的开源项目 现在已经脱离IBM了 Eclipse的一个子项目 SWT的执行效率非常高 这是由于SWT的底层是由C编写的 由于SWT通过C直接调用系统层的GUIAPI 在外观上就和使用C Delphi 在Windows下 编写的程序完全一样 AWT在底层也是使用C直接调用系统层的GUIAPI 最大的区别可能就是一个是Sun提供的 一个是Eclipse自带的 这就意味着如果使用AWT 只要机器上安装了JDK或JRE 发布软件时无需带其它的库 而如何使用SWT 在发布时必须要自带上SWT的 dll Windows版 或 so Linux Unix版 文件以及相关的 jar包 它们所提供的图形接口有一些差异 SWT可能更丰富一些 我们可以看看Eclipse的界面就知道了 虽然SWT很强大 但它比较底层 也就是说它的一些功能在使用上还比较低级 不太符合面向对象的特征 因此 在SWT的基础上又开发了JFace JFace在SWT上进行了一定的扩展 也可说JFace是基于SWT的 就象在VC中使用MFC来包装Win32API一样 3 1SWT JFace简介 Swing缺点 对内存的需求量大 导致速度比较慢 且外观与操作系统平台下的其他软件格格不入SWT界面美观 且界面响应速度快 使用SWT可以开发出高效率的桌面应用 且具有标准的windows外观 eclipse就是基于SWT写成的 SWT是eclipse图形API的基础JFace是在SWT基础上创建的基于MVC模式的更易用且功能强大的图形API包 但JFace没完全覆盖SWT的全部功能SWT JFace关系图如下 3 1SWT JFace简介 SWT StandardWidgetToolkit 是为Eclipse平台开发的GUI工具包 SWT构建了Eclipse的UI 但SWT并不依赖Eclipse 也可以被单独使用 SWT的特征 1 现在的Eclipse中绝大部分的UI都由SWT的组件构成 SWT最大的特征就是各个OS平台API的依赖在必要的时候才会通过java去调用 2 依赖于OSAPI部分都被封装在了SWT内部 用SWT开发出来的应用程序 在更换了SWT库或者OS的时候都不会受到影响 SWT的开发环境和运行环境 1 SWT不仅可以用于开发Eclipse的插件 也可以用于单独的GUI的开发 作为单独的应用程序运行时 需要有OS对应的SWT库 2 在Eclipse的plugins文件夹中有SWT的JAR文件存在 Windows是org eclipse swt win32 win32 x86 3 4 1 v3449c jar等 发布使用SWT开发的应用程序时 SWT库文件也要一起发布 3 2SWT JFace简介 SWT包常用组件 控件 3 3简单的SWT应用示例 3 3简单的SWT应用示例 1 生成Display的对象 Display对象是平台GUI层和SWT间的连接 Widget等 SWT的GUI组件通过Display对象和执行平台提供的API 2 生成Shell的对象 Shell对象负责画面窗体的显示 通过Shell对象可以调整窗体的大小 标题以及对窗体进行布局管理 3 在Shell对象上生成Widget SWT中把输入框 按钮等GUI控件称为Widget 这个步骤为前一步生成的window配置了Widget 并且对每个控件的text属性 在画面上的位置等等做了设置 4 为Button的事件定义监听器 按下按钮 选择下拉框等等的用户动作 在Widget中通过事件进行传达 这个步骤为事件生成了对应的处理 listener 并且注册到了Widget上 5 打开shell对象 对Widget的设置全部结束后 就可以让窗体显示了 窗体显示时需要调用Shell对象的open方法 open方法在内部启动一个新线程对窗体显示 6 结束前一直循环 因为SWT的应用会启动一个新的线程 如果不阻塞主线程的话整个应用就会结束了 为了不让主线程结束 我们用了一个while循环 直到shell关闭一直循环 7 释放display对象 SWT并不是纯java的 框架会依赖一些自然语言的API 所以 生成的SWT对象要显式的调用dispose方法来执行销毁动作 但是 dispose方法会递归调用子对象的dispose方法 所以像label和button之类的Widget就不用再调用dispose方法了 4 Eclipse基于插件的体系结构 Eclipse平台是一个成熟的 精心设计的以及可扩展的体系结构 Eclipse的价值是它为创建可扩展的集成开发环境提供了一个开放源码平台 这个平台允许任何人构建与环境和其它工具无缝集成的工具 工具与Eclipse无缝集成的关键是插件 除了小型的运行时内核之外 Eclipse中的所有东西都是插件 Workbench和Workspace是Eclipse平台的两个必备的插件 它们提供了大多数插件使用的扩展点 如图所示 插件需要扩展点才可以插入 这样它才能运行 4 1扩展点 插件为了自身能够对其他插件进行扩展而提出了扩展点的概念 当要为插件增加功能的时候就可以利用这个扩展点 在扩展点的基础上 插件之间可以互相连接 图1 2使用扩展点进行扩展扩展和扩展点的连接在程序执行时被建立 提供扩展点的插件事先并不知道该扩展点实际被扩展了什么样的行为 使用扩展点的插件需要在清单文件 plugin xml 中像代码1 1那样 使用extension元素声明扩展 这样的扩展点和扩展不断的积累重叠 使得Eclipse平台能够实现各种各样的功能 Eclipse平台提供的扩展点有 增加菜单项 增加视图 增加编辑器 5 创建插件简介 创建插件最简单的方法是使用Plug inDevelopmentEnvironment PDE 在这里研究的 Hello world 示例 从Eclipse菜单 选择File New Other 或按Ctrl N 然后选择Select对话框左边的Plug inDevelopment向导 在Select对话框的右边 选择Plug inProject 按Next 在下一屏上 输入项目名称 我使用了com example hello 再次按Next 在下一屏上 请注意 插件标识就与项目名称相同 使用项目名称作为插件标识可以将该插件与另一个插件的名称发生冲突的机会减到最小 再按一次Next 下一屏让您选择是手工创建初始插件代码 还是运行代码生成向导 保留代码生成向导的缺省选项 选择 Hello World 然后按Next 5 1创建插件简介 如下图创建插件hello的步骤 5 2创建hello插件简介 向导将完成 而在您的工作区中将会有一个新的项目 名为com example hello 如图3所示 5 3插件hello清单文件 插件清单文件plugin xml包含了Eclipse将插件集成到框架所使用的描述信息 5 4插件hello源代码 代码生成向导生成了两个Java源文件 打开PDEPackageExplorer中的src文件夹就可以看到它们 第一个文件Activator java是插件类 它继承了AbstractUIPlugin抽象类 HelloPlugin负责管理插件的生命周期 在更为扩展的应用程序中 它负责维护诸如对话框设置和用户首选项等内容 5 4插件hello源代码 第二个源文件SampleAction java包含的类将执行在清单文件的操作集合中指定的操作 SampleAction实现了IWorkbenchWindowActionDelegate接口 5 5运行和调试插件hello 当开发Eclipse的插件时 必须停止Eclipse并用新的插件重新启动它以便进行测试和调试 这不便捷 幸好 EclipsePDE提供了一个自托管 self hosted 的开发环境 它让您无需将插件安装在工作台的单独实例中即可运行 要运行Hello插件 选择Run RunAs Run timeWorkbench来启动另一个Workbench实例 而该实例添加了插件的菜单选项和工具栏如图5 在运行时工作台中运行的Hello插件 5 6插件的导出与安装 5 6插件的导出与安装 复制com example hello 1 0 0 201505111248 jar到eclipse目录的dropins或者plugins 并重启eclipse完成安装 6 代码生

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论