内容为资料摘录。
eclipse 不单是一个java IDE,当然最初java IDE确实是eclipse最早最成功的产品之一。
eclipse 系统功能:是一个可扩展的、集程序开发平台、运行时和应用程序框架为一身的多功能系统。利用这套系统,开发者可以完成包含程序开发、部署和管理在内的一系列工作。他将软件开发周期的每一个环节都纳入了管理之中。
Eclipse的插件机制是轻型软件组件化架构。在富客户机平台上,Eclipse使用插件来提供所有的附加功能。eclipse的核心就是动态发现、装载和运行插件的体系结构。
Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。这些插件只有当eclipse启动后,真正使用它们时,才动态的调入内存。用户不必担心eclipse的臃肿问题。插件是可识别的最小的功能单元,插件的大小没有限制(JDT是eclipse中最大的组件之一,大约10的插件)。
Eclipse基本内核包括:图形API (SWT/Jface), Java开发环境插件(JDT ),插件开发环境(PDE)等。
具体包括四个部分组成——Eclipse Platform、JDT、CDT和PDE(Plug-in Development Environment,PDE)。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。
Eclipse SDK(软件开发者包)是Eclipse Platform、JDT和PDE所生产的组件合并。
eclipse的体系架构:
eclipse下的平台结构:
eclipse平台是一个通用的基础框架结构,它的组件包括平台运行库platform runtime;工作台workbench;工作区workspace;团队组件team component;调试debug;帮助help。如图所示(紫红色部分)。
1.运行库:是一个基于OSGi(open service Gateway initiative)规范用来定义eclipse插件模型以及扩展概念和扩展点的代码,在运行时是整个架构的核心。它还提供一些额外的服务,如日志和并发性。eclipse的架构就是参照OSGi实现的。其核心org.eclipse.osgi就是OSGi的实现。它管理插件,负责eclipse的启动,找到本地安装的插件,读入这些插件的清单,然后匹配扩展和扩展点,因此在内存中产生的注册表可用于所有的插件。在3.0之前的版本,必须重启才能识别新插件和扩展,3.0之后是在OSGi基于组件的运行时技术的基础得到的,就不必重启了。插件在OSGi和eclipse架构中声明接口的方式类似。OSGi中,其声明被称为bundle清单(manifest.mf),而在以前的eclipse中被称为插件清单plugin.xml。目前的eclipse尚且兼容这两种方式的声明,如果在运行时,找不到manifest.mf,它会使用插件清单中的
2.工作台workbench:它是eclipse的桌面集成开发环境,视图、编辑器、透视图的概念都在这一层定义。workbench中包含了两个GUI库,SWT和Jface,workbench为eclipse提供的用户界面就是通过他们实现的。SWT是一组独立于操作系统的低级工具箱,支持平台集成和可移植API,为eclipse提供器外在的观感。Jface构建在SWT之上,提供了一些MVC的类,使的开发图形应用程序更为简单。
3.工作区workspace-包含了编写项目的源代码,管理用户资源,以及一些eclipse的个性优化配置文件;还负责通知其他插件关于资源变更的信息。
4.团队组件team component 包含了一个框架,提供版本控制和配置管理支持,允许其他厂商的插入自身的版本控制系统(如CVS,SVN),并能交互。
5.调试debug。JPDA 是一个多层的调试框架,包括 JVMDI、JDWP、JDI 三个层次。JAVA 虚拟机提供了 JPDA 的实现。Eclipse 利用 JPDA 调试 JAVA 应用,事实上,所有 JAVA 开发工具都是这样做的。
6.帮助help,该组件让程序员可以为用户通过帮助系统进行协助,允许用户通过帮助系统搜索帮助文档。
eclipse的体系结构:
上面说过,eclipse体系结构包含了eclipse平台、JDT和PDE,他们都以插件的形式插在eclipse平台上,JDT 扩展平台工作台,提供了编辑、查看、编译、调试和运行java代码的专门功能部件。PDE提供了用来自动创建、处理、调试和部署插件的工具。
eclipse体系结构的最高优先级:可扩展性与集成
eclipse通过插件定义新功能,它使用一个名为扩展点的添加项来引入新的功能。这些扩展点描述了一个公开声明插件可扩展性的结构化方法。通过添加项加载新功能的方式,一般是通过查询注册表。如:添加可视化工具栏时,workbench在添加完了那些非由添加项的可视化组件后,就会遍历注册表,找到它指定的扩展点下的扩展(也就是添加项)。
用户界面架构
eclipse自身很大一部分代码是用户界面代码。如图:
SWT架构
包含了一般的图形和GUI小部件集,这些小部件都是基于本地操作系统的相同小部件,如果本地视窗系统没有某个特殊的小部件,SWT就模拟一个。SWT包含在一个插件中,其他插件更容易访问SWT的功能,SWT不依赖与platform runtime,workbench界面需要使用SWT。
JFace架构
JFace的设计目的是简化创建新用户界面的过程,压缩冗余代码,增强SWT的小部件功能。JFace UI通过几个架构完成上述目标。
1. JFace查看器
如果程序要显示部分数据模型(对象列表吧),如果通过SWT,则我们需要使用基本数据类型,如String,int ,Boolean。任何时候要显示都要转成字符串才能通过SWT显示。如果使用JFace就不同了,我们不需要处理基本类型的小部件,只需使用一个查看器的东东,这是一个类似SWT小部件的工具,它不知道要显示的类表结构是什么,只知道是一个数据库表,与你提供的helper类结合就可以显示数据。这个方法编码少,代码更易于理解和重用,代码更集中于模型-视图的交互。
2. JFace操作和添加项在扩展Eclipse UI的角色
操作架构通过识别一些界面上外观不同,但语义相同的操作,来压缩代码。如下拉菜单,弹出菜单,工具栏按钮等,在SWT看来它们是不同的,但在JFace看来都是等价的。因此jface为它们创建了一个操作抽象Action。而我们的编码重点也就放在action内,其他的部分让jface完成。
3. Jface的对话框和向导:用户交互架构
它是一种更高级别的外观和感觉上的一致性,可以理解为用户交互架构。作为开发者,我们更应关注与我们的逻辑,而不是向导/对话框本身的创建,jface中的向导/对话框处理了这些通用的行为,我们只需要继承这些类,覆盖/实现自己感兴趣的方法,就可以达到与用户界面之间的交互。如;首选项对话框,我们就可以通过扩展项,将自己的页面添加进去,代码量少。
4. Jface Text 构建定制的文本编辑器
5. 图像和注册表架构
可帮助简化图像、字体的创建和销毁的管理工作,SWT中是谁创建谁销毁,通过这个架构提供了全局的注册表,简化资源周期的管理,方便共享公共的字体和图像等。
workbench的架构
1. 存储持久性值。它包含几个选项,能够以一致并相互协调的方式来定义插件和存储值。这些选项包括对话框设置API,首选项API,用户设置API。如:打开一个对话框时,保留上次值,就可以用XXXPlugin.getDefault().getDialogSettings(),取得上次的值。(放在workspace中的.metadata/.plugins/your_plugin/dialog_settings.xml中)
2. 使用胖客户端平台创建应用程序。workbench是eclipse platform的“UI特性”。从用户角度来说workbench用户界面和eclipse是一个东西。这部分主要是视图和编辑器类的使用。
3. 使用并发架构维持对用户的快速响应。3.0之后eclipse后台添加了作业处理,同时可以进行多个后台操作,调度在线程上排队的任务。
4. 通过功能组管理用户界面。功能组决定在用户界面上提供什么组件,在首选项中激活或禁用。如Team 和 CVS。如果上述功能被激活,那么team组件和它的透视图、向导、视图、操作等就可见。否则不可见。
5. workbench中的资源架构。资源架构添加了必需的关键行为,具有监控资源更改的能力。如Navigator,能实时精确地显示工作空间的内容。它们也可以协调其他的行为,如保存资源时,workbench就会自动调用java编译器来构建.class文件,这些资源被称为生成器。资源还包括历史记录、书签、任务等。