内容为资料摘录。
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,它会使用插件清单中的<plugin><runtime><requires>标签来生产manifest.mf放到configuration\org.eclipse.osgi \manifests下。
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文件,这些资源被称为生成器。资源还包括历史记录、书签、任务等。
相关推荐
一、Eclipse插件体系结构 Eclipse基于OSGi(Open Service Gateway Initiative)框架,采用模块化设计,使得每个功能都以插件的形式存在。这些插件之间通过API进行交互,形成了一个庞大的生态系统。Eclipse的插件由三...
2. **插件体系结构**:学习Eclipse插件开发首先要了解OSGi(Open Services Gateway Initiative)框架,它是Eclipse插件运行的基础。理解Bundle(模块)的概念,以及如何创建、配置和管理它们。 3. **开发环境搭建**...
- Eclipse的核心架构之一就是其强大的插件体系,这种体系基于OSGi(Open Service Gateway Initiative)规范。通过插件机制,开发者可以扩展Eclipse的功能,而不必修改其核心代码。 - OSGi定义了一套模块化的服务框架...
《Eclipse插件学习笔记》是一本专注于Eclipse插件开发的书籍,旨在帮助开发者...通过这些章节的学习,读者可以逐步建立起完整的Eclipse插件开发知识体系,从而能够独立开发出高效、功能丰富的Eclipse插件或RCP应用。
Eclipse插件开发是Java开发领域中的一个重要分支,它...通过学习这三份文档,开发者可以深入了解Eclipse插件开发和RCP应用的高级特性,以及如何利用Draw2d库来创建复杂的图形界面,从而提升Eclipse平台上的开发能力。
Eclipse RCP插件开发官方示例是学习和理解Eclipse插件体系结构的重要资源,尤其对于那些希望利用Eclipse RCP创建自定义桌面应用的开发者来说。 该示例集合包含了`org.eclipse.ui.examples`包下的所有内容,这通常...
首先,我们需要了解Eclipse的插件体系结构。Eclipse基于OSGi框架,每个插件都是一个独立的模块,通过声明依赖关系与其他插件协同工作。在开始开发之前,你需要安装Eclipse IDE并配置相应的插件开发环境,这通常包括...
接下来,第9章"第9章 Eclipse插件体系结构",深入探讨了Eclipse插件的内部构造。Eclipse采用模型-视图-控制器(MVC)架构,插件之间通过服务进行通信。本章将讲解插件的生命周期、扩展点、依赖管理、插件激活策略等...
1. **Eclipse平台结构体系**:Eclipse是一个基于插件的架构,其核心是一个小型的内核,大部分功能由各种插件提供。每个插件都有自己的作用域,它们通过插件扩展点进行交互,实现功能的增减和集成。 2. **插件工作...
### 通过例子学习Eclipse RCP开发 #### Eclipse RCP概览 Eclipse RCP(Rich Client Platform,富客户端平台)是一种基于Java的框架和技术集合,用于构建具有丰富用户界面的应用程序。它允许开发者创建高度可定制且...
通过这6个章节的学习,读者可以逐步掌握Eclipse插件开发的基本技能,从界面设计到事件处理,再到插件架构的理解,最后能够独立完成一个基本的插件项目。每个章节都结合理论与实践,旨在让读者不仅理解概念,还能具备...
Eclipse的插件体系结构是其灵活性的核心。源码和API文档可以帮助开发者创建自定义的插件,这些插件可以扩展Eclipse的功能,例如添加新的编辑器、调试器或者构建工具。插件开发涉及理解Extension Points(扩展点),...
1. **插件体系架构**:Eclipse的核心特性之一是其基于插件的架构,源码中可以看到每个功能模块都是一个独立的插件,通过OSGI(Open Services Gateway Initiative)框架进行管理和交互。开发者可以深入理解如何设计和...
Eclipse不仅支持Java开发,还通过丰富的插件体系支持多种其他语言和技术栈的开发工作。 #### 二、Eclipse项目架构 Eclipse项目主要由以下三个部分组成: 1. **Eclipse项目**:负责构建一个全面且功能强大的工业级...
- **Web应用开发**:通过实际的Web应用开发案例,演示如何在Eclipse中实现MVC架构,使用Servlet和JSP。 - **桌面应用开发**:利用Eclipse RCP(Rich Client Platform)开发桌面应用,理解组件化开发的优势。 8. *...
基于Eclipse的工具开发是指利用Eclipse的插件体系结构来扩展其功能,以满足特定的开发需求。本教程针对那些希望通过Eclipse进行插件开发的朋友们,提供了丰富的实践指导和实例。 首先,"打开方式.htm"可能是一个...
一、Eclipse体系结构 Eclipse的架构基于OSGi(Open Service Gateway Initiative)框架,它将应用程序分解为可独立更新的小模块——称为"bundle"。每个bundle都有自己的类加载器,允许它们在不相互依赖的情况下运行...
这份指南可能深入讲解了Eclipse的插件体系结构,如OSGi模块化系统、Plugin.xml配置文件、透视图(Perspective)、视图(View)、编辑器(Editor)和命令(Command)等核心概念。 通过学习这些内容,开发者可以了解...