Eclipse开拓平台发源和体系布局
副标题#e#
本文为您提供关于 Eclipse 平台的概述,包罗其发源和体系布局。本文首先扼要接头 Eclipse 的开放源代码性质及其对多种编程语言的支持,然后通过一个简朴的措施例子展示 Java 开拓情况。本文还将观察以插件扩展形式可用的一些软件开拓东西,并展示一个用于 UML 建模的插件扩展。
Eclipse 是什么?
Eclipse 是一个开放源代码的、基于 Java 的可扩展开拓平台。就其自己而言,它只是一个框架和一组处事,用于通过插件组件构建开拓情况。幸运的是,Eclipse 附带了一个尺度的插件集,包罗 Java 开拓东西(Java Development Tools,JDT)。
固然大大都用户很乐于将 Eclipse 看成 Java IDE 来利用,但 Eclipse 的方针不只限于此。Eclipse 还包罗插件开拓情况(Plug-in Development Environment,PDE),这个组件主要针对但愿扩展 Eclipse 的软件开拓人员,因为它答允他们构建与 Eclipse 情况无缝集成的东西。由于 Eclipse 中的每样对象都是插件,对付给 Eclipse 提供插件,以及给用户提供一致和统一的集成开拓情况而言,所有东西开拓人员都具有同等的发挥场合。
这种平等和一致性并不只限于 Java 开拓东西。尽量 Eclipse 是利用 Java 语言开拓的,但它的用途并不限于 Java 语言;譬喻,支持诸如 C/C++、COBOL 和 Eiffel 等编程语言的插件已经可用,或估量会推出。Eclipse 框架还可用来作为与软件开拓无关的其他应用措施范例的基本,好比内容打点系统。
基于 Eclipse 的应用措施的突出例子是 IBM 的 WebSphere Studio Workbench,它组成了 IBM Java 开拓东西系列的基本。譬喻,WebSphere Studio Application Developer 添加了对 JSP、servlet、EJB、XML、Web 处事和数据库会见的支持。
Eclipse 是开放源代码的软件
开放源代码软件是这样一种软件,它们在宣布时附带了旨在确保将某些权利授予用户的许可证。虽然,最明明的权利就是源代码必需可用,以便用户能自由地修改和再分发该软件。这种用户权利的掩护是通过一种称为 copyleft 的计策来完成的:软件许可证主张版权掩护,除非明晰授予用户这样的权利,不然用户不得分发该软件。copyleft 还要求同一许可证涵盖任何被再分发的软件。这实际上倒置了版权的目标——利用版权来授予用户权利,而不是为软件的开拓者保存版权——copyleft 常常被描写为“保存所有版权”。
曾经四处伸张的对开放源代码软件的很多惊骇、担心和疑虑,都与某些 copyleft 许可证的所谓“病毒”性质有关——假如利用开放源代码软件作为您开拓的措施的一部门,您将失去本身的常识产权,因为该许可证将“熏染”您开拓的专有部门。换句话说,该许可证大概要求与开放源代码软件一起打包的所有软件,都必需在沟通的许可证之下宣布。固然这对最著名的 copyleft 许可证(即 GNU 通用民众许可证,譬喻 Linux 就是在该许可证之下宣布的)来说大概是事实,其时尚有其他许可证在贸易化和社区思量之间提供了较好的均衡。
开放源代码打算(Open Software Initiative)是一家非营利机构,它明晰界说了开放源代码的寄义及满意其尺度的认证许可证。Eclipse 是在 OSI 承认的通用民众许可证(CPL)1.0 版之下被授予许可证的,CPL“旨在促进措施的贸易化利用……”(欲得到指向通用民众许可证 1.0 版完整文本的链接,请参阅本文稍后的 参考资料)。
为 Eclipse 建设插件或将 Eclipse 用作软件开拓应用措施基本的开拓人员,需要宣布他们在 CPL 下利用或修改的任何 Eclipse 代码,可是他们可以自由抉择本身添加的代码的许可证授予方法。与出自 Eclipse 的软件一起打包的专有代码不需要作为开放源代码来授予许可证,该源代码也不需要提供应用户。
尽量大大都开拓人员不会利用 Eclipse 来开拓插件,或建设基于 Eclipse 的新产物,可是 Eclipse 的开放源代码性质所意味的,并不可是它使得 Eclipse 免费可用(尽量便于贸易化的许可证意味着插件大概要费钱)。开放源代码勉励创新,并鼓励开拓人员(甚至是贸易开拓人员)为民众开放源代码库孝敬代码。对此存在很多原因,不外最本质的原因或者是为这个项目作孝敬的开拓人员越多,这个项目就会变得对每小我私家都越名贵。跟着这个项目变得越发有用,更多的开拓人员将会利用它,并环绕它形成一个社区,就像那些环绕 Apache 和 Linux 形成的社区一样。
Eclipse 是什么机构?
Eclipse.org 协会打点和指导 Eclipse 正在举办中的开拓。在听说 IBM 花了 4000 万美元开拓 Eclipse,并把它作为一个开放源代码项目宣布之后,Eclipse.org 协会接收了很多软件东西提供商,包罗 Borland、Merant、Rational、RedHat、SuSE、TogetherSoft 和 QNX。从那今后尚有其他公司相继插手,包罗 Hewlett Packard、Fujitsu、Sybase。这些公司别离向理事会派了一名代表,这个理事会认真确定 Eclipse 项目标偏向和范畴。
#p#分页标题#e#
在最高层,项目打点委员会(Project Management Committee,PMC)打点着 Eclipse 项目。这个项目被分别为多个子项目,每个子项目都有一名认真人。大型子项目又被分别为组,每个组也有一名认真人。今朝,这个中的大大都打点脚色都由最初开拓 Eclipse 的 IBM 子公司 Object Technology International (OTI)的人接受,可是作为一个开放源代码的项目,它接待任何人的参加。任何特定部分的职责是通过该部分对项目标孝敬来争取的。
此刻我们已经考查了 Eclipse 背后的一些理论、汗青和打点,下面让我们考查该产物自己。
Eclipse 事情台
在第一次打开 Eclipse 时,首先看到的是下面的接待屏幕:
图 1. Eclipse 事情台
#p#副标题#e#
Eclipse 事情台由几个称为 >视图(view) 的窗格构成,好比左上角的 Navigator 视图。窗格的荟萃称为 >透视图(perspective)。默认的透视图是 Resource 透视图,它是一个根基的通用视图集,用于打点项目以及查察和编辑项目中的文件。
Navigator 视图 答允您建设、选择和删除项目。Navigator 右侧的窗格是 编辑器区域。取决于 Navigator 中选定的文档范例,一个适当的编辑器窗口将在这里打开。假如 Eclipse 没有注册用于某特定文档范例(譬喻,Windows 系统上的 .doc 文件)的适当编辑器,Eclipse 将设法利用外部编辑器来打开该文档。
Navigator 下面的 Outline 视图 在编辑器中显示文档的纲要;这个纲要的精确性取决于编辑器和文档的范例;对付 Java 源文件,该纲要将显示所有已声明的类、属性和要领。
Tasks 视图 收集关于您正在操纵的项目标信息;这可以是 Eclipse 生成的信息,好比编译错误,也可以是您手动添加的任务。
该事情台的大大都其他特性,好比菜单和东西栏,都应该和其他那些熟悉的应用措施雷同。一个便利的特性就是差异透视图的快捷方法东西栏,它显示在屏幕的左端;这些特性随上下文和汗青的差异而有显著不同。Eclipse 还附带了一个结实的辅佐系统,个中包罗 Eclipse 事情台以及所包罗的插件(好比 Java 开拓东西)的用户指南。至少欣赏一遍这个辅佐系统是值得的,这样可以看到有哪些可用的选项,同时也可更好地领略 Eclipse 的事情流程。
为继承这个短暂的 Eclipse 之旅,我们将在 Navigator 中建设一个项目。右键单击 Navigator 视图,然后选择 New=>Project。当 New Project 对话框呈现时,选择左面的 Java。尺度 Eclipse 只有一种 Java 项目范例,名为“Java Project”。假如安装了插件来提供 JSP 和 servlet 支持,我们会从这里看到一个用于 Web 应用措施的附加选项。眼下,请选择 Java Project,在提示项目名称时输入“Hello”,然后按 Finish。
接下来,我们将查抄一下 Java 透视图。取决于您喜欢的屏幕打点方法,您可以通过选择 Window=>Open Perspective=>Java 来改变当前窗口中的透视图,也可以通过选择 Window=>New Window,然后再选择这个新的透视图,从而打开一个新的窗口。
正如您大概预期的那样,Java 透视图包括一组更适合于 Java 开拓的视图。个中之一就是左上角的视图,它是一个包括各类 Java 包、类、jar 和其他文件的条理布局。这个视图称为 Package Explorer。还要留意主菜单已经展开了——而且呈现了两个新的菜单项:Source 和 Refactor。
Java 开拓情况(JDE)
为试验一下 Java 开拓情况,我们将建设并运行一个“Hello, world”应用措施。利用 Java 透视图,右键单击“Hello”项目,选择 New=>Class,如图 2 所示。在随后呈现的对话框中,键入“Hello”作为类名称。在“Which method stubs would you like to create?”下面,选中“public static void main(String[] args)”复选框,然后按 Finish。
图 2. 在 Java 透视图中建设新类
这样将在编辑器区域建设一个包括 Hello 类和空的 main() 要领的 .java 文件,如图 3 所示。然后向该要领添加如下代码(留意个中 i 的声明是有意省略了的):
图 3. Java 编辑器中的 Hello 类
#p#分页标题#e#
您会在键入时留意到 Eclipse 编辑器的一些特性,包罗语法查抄和代码自动完成。在 2.1 版(我曾下载 M2 版来试用过)中,当您键入开括号或双引号时,Eclipse 会自动提供配对的标记,并将光标置于标记对之内。
在其他环境下,您可以通过按 Ctrl-Space 来挪用代码自动完乐成能。代码自动完成提供了上下文敏感的发起列表,您可通过键盘或鼠标来从列表中选择。这些发起可以是针对某个特定工具的要领列表,也可以是基于差异的要害字(好比 for 或 while)来展开的代码片段。
语法查抄依赖增量编译。每当您生存代码,它就在靠山接管编译和语法查抄。默认环境下,语法错误将以赤色下划线显示,一个带白 “X” 的红点将呈此刻左边缘。其他错误在编辑器的左边缘通过灯胆状的图标来指示;这些就是编辑器或者能为您修复的问题——即所谓的Quick Fix(快速修复)特性。
上面的代码例子在 for 语句后头有一个灯胆状图标,因为 i 的声明被省略了。双击该图标将调出发起的修复列表。在此例中,它将提供建设一个类字段 i、一个局部变量 i 或一个要领参数 i 的发起;单击个中的每一个发起城市显示将要生成的代码。图 4 显示了该发起列表和发起建设一个局部变量之后生成的代码。
图 4. Quick Fix 发起
双击该发起就会把发起代码插入到代码中的得当位置。
一旦代码无错误地编译完成,您就可以或许从 Eclipse 菜单上选择 Run 来执行该措施(留意这里不存在单独的编译步调,因为编译是在您生存代码时举办的。假如代码没有语法错误,它就可以运行了)。这时会呈现一个具有适当默认配置的 Launch Configurations 对话框;请按右上角的 Run 按钮。一个新的选项卡式窗格将呈此刻下面的窗格(节制台)中,个中显示了措施的输出,如图 5 所示。
图 5. 措施的输出
也可以在 Java 调试器中运行措施。首先双击编辑器视图左端的灰色边缘,从而在挪用 System.out.println() 之后的 main() System.out.println() 中配置一个断点。一个蓝色的点将会呈此刻哪里。然后从 Run 菜单上选择 Debug。正如上面描写的,这时会呈现一个 Launch Configurations 对话框。请选择 Run。透视图将自动切换到 Debug 透视图,个中具有很多有趣的新视图,如图 6 所示:
图 6. Debug 透视图
首先,请留意该透视图左上角的 Debug 视图。这个视图显示挪用仓库,而且标题栏中有一个东西栏,它答允您节制措施的执行,包罗继承、挂起或终止措施、跟踪下一个语句、单步执行下一个语句,可能从要领返回。
右上角的窗格包括很多选项卡式的视图,包罗 Variables、Breakpoints、Expressions 和 Display。这里我单击了 Variables 视图,以便我们可以或许看到 i 的当前值。
可以通过上下文敏感的辅佐,得到关于这些视图的更多信息:单击视图的标题,然后按 F1。
附加插件
除了像 JDT 这样用于编辑、编译和调试应用措施的插件外,尚有些可用的插件支持从建模、生成自动化、单位测试、机能测试、版本节制到设置打点的完整开拓进程。
Eclipse 尺度地附带了共同 CVS 利用的插件,CVS 是用于源代码节制的开放源代码并发版本系统(Concurrent Versions System)。Team 插件毗连到 CVS 处事器,答允开拓团队的成员操纵一组源代码文件,却不会彼此包围其他人的变动。这里不规划进一步探讨如何从 Eclipse 内部举办源代码节制,因为这需要安装 CVS 处事器,不外支持开拓团队而不可是独立的开拓,这是 Eclipse 的一个重要的必备特性。
已经可用或已公布要推出的一些第三方插件包罗:
版本节制和设置打点
CVS Merant PVCS Rational ClearCase
UML 建模
OMONDO EclipseUML Rational XDE (取代 Rose) Together WebSphere Studio Edition
图形
Batik SVG Macromedia Flash
Web 开拓、HTML、XML
Macromedia Dreamweaver XMLBuddy
应用处事器集成
Sysdeo Tomcat launcher
欲相识可用插件的更完整列表,请参阅 参考资料 中的链接。
例子:一个用于 UML 建模的插件
要查察插件的例子,以及查察它是如何与 Eclipse 集成的,请下载风行的 OMONDO EclipseUML(参阅 参考资料 中的链接);您需要注册,不外该插件是免费的。这个插件依赖 GEF,即 Graphical Editor Framework,这是另一个 Eclipse 插件。GEF 是 Tools 子项目标一部门。要下载 GEF,请转到 Eclipse Web 站点(参阅 参考资料),选择“downloads”,然后单击“Tools PMC downloads page”链接。留意您需要下载 OMONDO 推荐的 GEF 版本(针对 OMONDO 1.0.2 的是 GEF 2.0 版)。
#p#分页标题#e#
下载之后,插件的安装凡是是通过解压缩下载文件,并将其内容复制到 Eclipse 插件目次来完成的。在此例中,GEF 需要解压缩到 Eclipse目次(它将自动从该目次进入插件目次)。为安详起见,您大概想将它解压缩到某个姑且目次,再相应地从哪里复制相关目次。假如 Eclipse 正在运行,您需要遏制它然后再从头启动它,这样它才气识别新安装的插件。
一旦 EclipseUML(以及 GEF)安装完成,您就可以或许像建设一个 Java 类文件一样建设一个类图。在 Java 透视图中,右键单击 Package Explorer 中的“Hello”项目,然后从弹出菜单上选择 New=>Other。New 对话框的左边窗格中将会有一个用于 UML 的新选项。EclipseUML 的免费版本仅支持类图,因此右侧的惟一选项是 UML Class Diagram。请选择 UML Class Diagram,然后为该类图键入一个名称,好比“Hello”:
图 7. Class Diagram 编辑器
编辑器区域中将会呈现一个图形编辑器,它带有用于绘制类图的画布。您可以通过两种方法建设类图:通过将 Java 文件从 Package Explorer 拖放到类图上,从而对现有代码举办逆向工程;可能利用空缺类图上面东西栏中可用的绘制东西。要试验第一种要领,请建设一个名为 Person 的新类(利用 File=>New=>Class),然后赋予它下面列出的两个私有属性:
/** Person.java
* @author david
*/
public class Person {
private String name;
private Address address;
/**
* Returns the address.
* @return Address
*/
public Address getAddress() {
return address;
}
/**
* Returns the name.
* @return String
*/
public String getName() {
return name;
}
/**
* Sets the address.
* @param address The address to set
*/
public void setAddress(Address address) {
this.address = address;
}
/**
* Sets the name.
* @param name The name to set
*/
public void setName(String name) {
this.name = name;
}
}
(应该认可,我仅键入了针对 name 和 address 的行。getter 和 setter 要领是通过 Eclipse 自动生成的,即右键单击源代码,然后从弹出菜单上选择 Source=>Generate Getter and Setter 。)
请生存并封锁 Person.java Hello.ucd。
图 8. Person 类图
要从 UML 建设 Java 类,请单击类图窗口顶部东西栏上的“New class”按钮,即左起第三个按钮,然后单击类图。当 New 类领导打开时,请键入 Adress 作为类名称,然后按 Finish。
您可以右键单击类名称并选择 New=>Attribute,从而给类添加属性。在 New 属性对话框中,请输入属性名称、范例和可见性。然后右键单击类名称并选择 New=>Method 来添加要领。
当您变动类图时,图下面的 Source Editor 窗口将反应所做的变动。最后,您可以单击 Association 按钮(左起第五个),绘制一条从 Person 类指向 Address 类的线段,从而绘制这两个类之间的干系图。这样会调出别的一个对话框,您可以在个中输入关联属性(请参考 EclipseUML 辅佐,以相识关于必须信息的更多内容)。完成后的图应该雷同如下:
图 9. 关联
这个 UML 插件展示了 Eclipse 插件的几个典范特点。首先,它展示了东西之间的细麋集成。外貌上绝对无法看出有多个组件在事情;与 Eclipse 平台和 JDT 的集成是无缝的。譬喻,当 Person 类被建设时,它显示语法错误是因为它的一个属性 Address 没有界说。一旦 Address 类在 UML 图中建设完成,这些组件就会分隔显示出来。
另一个特点是 EclipseUML 操作其他插件提供的成果的本领——在此例中是 GEF 插件,它提供用于开拓可视化编辑器的东西。
尚有另一个特点涉及 EclipseUML 插件利用多条理成果来分发的方法。支持类图的根基插件是免费的,可是更成熟的版本要付费才气利用。
Eclipse 平台体系布局
Eclipse 平台是一个具有一组强大处事的框架,这些处事支持插件,好比 JDT 和插件开拓情况(PDE)。它由几个主要的部门组成:平台运行库、事情区、事情台、团队支持和辅佐。
图 10. Eclipse 平台体系布局
平台
#p#分页标题#e#
平台运行库是内核,它在启动时查抄已安装了哪些插件,并建设关于它们的注册表信息。为低落启动时间和资源利用,它在实际需要任何插件时才加载该插件。除了内核外,其他每样对象都是作为插件来实现的。
事情区
事情区是认真打点用户资源的插件。这包罗用户建设的项目、那些项目中的文件,以及文件改观和其他资源。事情区还认真通知其他插件关于资源改观的信息,好比文件建设、删除或变动。
事情台
事情台为 Eclipse 提供用户界面。它是利用尺度窗口东西包(SWT)和一个更高级的 API(JFace)来构建的;SWT 是 Java 的 Swing/AWT GUI API 的非尺度替代者,JFace 则成立在 SWT 基本上,提供用户界面组件。
SWT 已被证明是 Eclipse 最具争议的部门。SWT 比 Swing 或 SWT 更细密地映射到底层操纵系统的本机图形成果,这不只使得 SWT 更快速,并且使得 Java 措施具有更像本机应用措施的外观和感受。利用这个新的 GUI API大概会限制 Eclipse 事情台的可移植性,不外针对大大都风行操纵系统的 SWT 移植版本已经可用。
Eclipse 对 SWT 的利用只会影响 Eclipse 自身的可移植性——利用 Eclipse 构建的任何 Java 应用措施都不会受到影响,除非它们利用 SWT 而不是利用 Swing/AWT。
团队支持
团队支持组件认真提供版本节制和设置打点支持。它按照需要添加视图,以答允用户与所利用的任何版本节制系统(假如有的话)交互。大大都插件都不需要与团队支持组件交互,除非它们提供版本节制处事。
辅佐
辅佐组件具有与 Eclipse 平台自己相当的可扩展本领。与插件向 Eclipse 添加成果沟通,辅佐提供一个附加的导航布局,答允东西以 HTML 文件的形式添加文档。
Eclipse 的前景
环绕 Eclipse 的开拓正处于要害阶段。主要软件东西提供商都参加进来了,而且开放源代码 Eclipse 插件项目标数量正在与日俱增。
可移植、可扩展、开放源代码的框架并不是个新思想(您会想起 Emacs),可是由于它成熟、结实和优雅的设计,Eclipse 带来了全新的动力。IBM 代价 4000 万美元的世界级软件在开放源代码规模的宣布,给业界带来了久违的震撼。