22.1 eclipse的体系结构。
刚刚开始学习eclipse的时候,也就是早在第一章,我们就对eclipse的发展有所了解了,我们知道,eclipse平台是ibm捐赠给开发源码社区的一个开发框架,从它出现到现在,逐步发展,名声越来越大。它之所以这么有名,并不是因为ibm财大气粗,投入了4千万美元开发此项目,也不是因为ibm的影响力和名气,而是因为eclipse确实是优秀的、烈火练就真金。eclipse平台是一个成熟的、精心设计的并且可扩展的体系结构。
其中,最重要的还属可扩展的体系结构,该结构的设计使得eclipse可以提供一个可扩展的集成开发环境平台。
eclipse平台提供了一个展示自我风采的舞台,在这个舞台上,任何的工具都可以运行,展示自我。当然说任何也不确切。eclipse平台为工具提供商提供了一套使用和需要遵循的机制,只有符合这些使用和应该遵循的机制的工具才可以在该平台上如鱼得水,实现无缝地集成。
这些机制主要表现为经过明确定义的api、接口、类和方法。另外,平台还提供一些有用的构建模块和框架,在这些模块和框架基础上,可以让我们开发出新的工具。那么eclipse平台上都有些什么呢?
下面的eclipse架构图就给除了我们非常好的回答,该图显示了eclipse平台的主要部件以及api,如图22.1
图22.1接下来,我们将对这个架构主要组成部分进行剖析,具体看看各个部分的功能和作用。
22.1.1平台运行时系统(platform runtime)
eclipse的“万物皆插件”的思想,我们已经领教过了。在eclipse中,从功能上来分,一个插件(plugin)是eclipse平台中的最小单元,也是可以被独立开发和发布的单位。通常,一个小的工具可能只需要用一个插件来实现,但是对于一个复杂的工具,需要将它的功能分割成多个小的功能单元,也就是说它需要由几个插件来实现。
开发这些个工具的时候,所有的eclipse平台的功能都位于插件中。但是只有这些,开发的出来的工具还不能够运行,它还需要一个很小的内核,这个内核就是所谓的平台运行时系统(platform runtime)。从字面上来看,它是开发出来的工具运行时需要的运行环境,就像在图22.
1描述的一样,平台运行时系统处在架构的最底层,是其他的插件或者工具运行的基础。在后面的开发中,我们更能体会到这一点。每次运行一个开发出来的插件,都需要重新启动一个eclipse实例,其实也就是在运行平台运行时系统。
22.1.2 eclipse的插件架构。
eclipse中的插件是怎样一种架构呢?在正式学习开发之前,我觉得很有必要跟大家先来了解一下eclipse的插件架构。当然,eclipse中的插件是用j**a语言编写出来的,所以,插件也就具有和j**a语言相同的特性。
一个典型的插件主要由以下部分组成:jar中的j**a**、一些只读文件以及其它资源(如:**、
web模板、消息资源文件、本地类库等等)。但是有一些插件可以不包含任何**。一个插件的**及只读文件位于文件系统中的一个目录里,或位于服务器的根目录下。
这种机制为插件的国际化提供了便利。
每个插件都对应一个插件清单,通过这个清单,可以看出该插件和其它插件之间的连接关系。这种连接模型很简单的,理论上来讲,一个插件可以定义任意数量的扩展点,而且,可以定义任意数量的扩展,实现对其它插件中的扩展点的扩展。可以见得,插件和插件之间的连接是比较灵活的。
当一个插件开发完毕,它就可以运行了。当启动时,eclipse平台运行时系统会检索并发现可以使用的插件集合,读取它们的清单文件,并且在内存中建立一个插件注册表。eclipse平台通过名称来匹配扩展和对应的扩展点的声明。
如果出现问题的话,会被检测到,而且,将检测的问题写入日志。
以上,就是对eclipse的插件架构的概述,这里,只需要对eclipse的插件架构有个大体的了解,在以后的学习过程中,大家结合例子,再来深入地体会。
22.1.3可扩展和集成。
从图22.1中可以看出,workbench组件是eclipse平台一个重要组成部分,它包含了一些扩展点,例如,我们可以用插件来扩展eclipse用户界面,可以让这些用户界面上有菜单选择和工具栏按钮等部分;也可以请求不同类型事件的通知;当然也能够创建新视图。workspace组件包含了可以让我们与资源(包括项目和文件等)进行灵活交互的扩展点。
当然,workspace等其他组件也提供了一些扩展点。对于不同的插件,只要将它安装在合适的扩展点,它就能够实现对eclipse的扩展。所以说eclipse平台是可扩展的。
采用eclipse平台提供的api以j**a语言规范开发出来的工具可以和平台之间实现最高层次的集成。但是,还有另外一个极端的情况:当我们从平台中启动外部工具的时候,这些工具为了和用户进行交流,必须要打开它们自己的独立的窗口,而且,必须通过底层的文件系统对用户数据进行访问。
因此,这种集成又是非常松散的,特别是在用户界面这个层次。在某些环境里,eclipse平台也支持其它一些级别的集成:
l在工作台内部机制支持把一个ole文档当作一个编辑器(只支持windows)。通过这。
种方式实现了紧密的用户界面集成。2一个插件工具可以实现一个容器,把这个容器作为eclipse平台的api到activex
控件之间桥梁,这样就可以在编辑器、视图、对话框等部分使用activex控件。而swt提供了必要的低级支持。这种方式也实现了紧密的用户界面集成。
3一个插件工具也可以使用awt或swing等打开一个独立的窗口,这种方式类似于刚。
才我们说的极端情况,很明显,这种方式提供了松散的用户界面集成,但它允许用户界面之下的紧密集成。
22.1.4 eclipse中“万物皆为插件”
通过前面的学习,咱们也就明白了,由于eclipse平台的特性所决定,我们的eclipse中除了内核,也就是平台运行时系统之外,所有的东西都可以被看成是插件,真可谓是“万物皆为插件”啊。
得益于“万物皆为插件”,我们的eclipse用起来就比较灵活。我们不但可以使用eclipse提供的比较经典的插件,比如jdt,swt/jface,pde等,而且还可以自己来开发具有自己特色的插件,是不是非常灵活和具有人性化呢?对于jdt、swt/jface,我们已经非常熟悉了,那pde是什么呢?
太巧了,它就是我们开发自己的插件所使用的一个工具。所以,可以说是用插件来制造插件了。插件,插件,制造以后生产出来的还是插件,真是不能不说是“万物皆为插件”了!
高级体系结构
isa为instruction set architecture的缩写形式,即为指令集体系结构,它划分了整个计算机系统的软件和硬件,是处理器的核心。一 定义。指令 instruction 规定计算机执行特定操作的命令。指令集 指令系统 instruction set 全部指令的集合。指令集体系结构 ...
体系结构重点
1 计算机设计者的工作 指令集设计 功能组成设计 逻辑电路设计和硬件结构的设计等。2 设计计算机的功能并不就是用户所需要的功能,它主要考虑到成本 技术 兼容性和市场大小等诸多因素,体现在生产和设计中要有赢利,用户承受得了。衡量原则就是成本性能比。根据这一原则,我们首先要设计确定计算机应具有的功能,我...
Oracle体系结构
课后测试。单选题。1.哪个不是数据库的物理组件 a表空间 b物理文件 c控制文件 d日志文件 正确答案 a 2.最小的数据库逻辑结构是什么?a操作系统块 b数据库块 c表空间 d表 e区 正确答案 b 3.在数据库启动的mount阶段,可以进行什么操作 a查询用户scott下的表 b建立表空间 c创...