服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

eclipse 平台入门

eclipse 平台入门

作者:david gallardo     来自:ibm

  本文为您提供关于 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 项目的方向和范围。

  在最高层,项目管理委员会(project management committee,pmc)管理着 eclipse 项目。这个项目被划分为多个子项目,每个子项目都有一名负责人。大型子项目又被划分为组,每个组也有一名负责人。目前,这其中的大多数管理角色都由最初开发 eclipse 的 ibm 子公司 object technology international (oti)的人担任,但是作为一个开放源代码的项目,它欢迎任何人的参与。任何特定部门的职责是通过该部门对项目的贡献来争取的。

  现在我们已经考察了 eclipse 背后的一些理论、历史和管理,下面让我们考察该产品本身。

  eclipse 工作台

  在第一次打开 eclipse 时,首先看到的是下面的欢迎屏幕:

eclipse 平台入门(图一)

点击查看大图

图 1. eclipse 工作台

  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。

eclipse 平台入门(图二)
图 2. 在 java 透视图中创建新类

  这样将在编辑器区域创建一个包含 hello 类和空的 main() 方法的 .java 文件,如图 3 所示。然后向该方法添加如下代码(注意其中 i 的声明是有意省略了的):

eclipse 平台入门(图三)

点击查看大图

图 3. java 编辑器中的 hello 类

  您会在键入时注意到 eclipse 编辑器的一些特性,包括语法检查和代码自动完成。在 2.1 版(我曾下载 m2 版来试用过)中,当您键入开括号或双引号时,eclipse 会自动提供配对的符号,并将光标置于符号对之内。

  在其他情况下,您可以通过按 ctrl-space 来调用代码自动完成功能。代码自动完成提供了上下文敏感的建议列表,您可通过键盘或鼠标来从列表中选择。这些建议可以是针对某个特定对象的方法列表,也可以是基于不同的关键字(比如 for 或 while)来展开的代码片断。

  语法检查依赖增量编译。每当您保存代码,它就在后台接受编译和语法检查。默认情况下,语法错误将以红色下划线显示,一个带白 “x” 的红点将出现在左边沿。其他错误在编辑器的左边沿通过灯泡状的图标来指示;这些就是编辑器或许能为您修复的问题——即所谓的quick fix(快速修复)特性。

  上面的代码例子在 for 语句后面有一个灯泡状图标,因为 i 的声明被省略了。双击该图标将调出建议的修复列表。在此例中,它将提供创建一个类字段 i、一个局部变量 i 或一个方法参数 i 的建议;单击其中的每一个建议都会显示将要生成的代码。图 4 显示了该建议列表和建议创建一个局部变量之后生成的代码。

eclipse 平台入门(图四)

点击查看大图

图 4. quick fix 建议

  双击该建议就会把建议代码插入到代码中的恰当位置。

  一旦代码无错误地编译完成,您就能够从 eclipse 菜单上选择 run 来执行该程序(注意这里不存在单独的编译步骤,因为编译是在您保存代码时进行的。如果代码没有语法错误,它就可以运行了)。这时会出现一个具有适当默认设置的 launch configurations 对话框;请按右上角的 run 按钮。一个新的选项卡式窗格将出现在下面的窗格(控制台)中,其中显示了程序的输出,如图 5 所示。

eclipse 平台入门(图五)

点击查看大图

图 5. 程序的输出

  也可以在 java 调试器中运行程序。首先双击编辑器视图左端的灰色边沿,从而在调用 system.out.println() 之后的 main() system.out.println() 中设置一个断点。一个蓝色的点将会出现在那里。然后从 run 菜单上选择 debug。正如上面描述的,这时会出现一个 launch configurations 对话框。请选择 run。透视图将自动切换到 debug 透视图,其中具有许多有趣的新视图,如图 6 所示:

eclipse 平台入门(图六)

点击查看大图

图 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

  欲了解可用插件的更完整列表,请参阅 eclipse 插件列表。

  例子:一个用于 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 版)。

  下载之后,插件的安装通常是通过解压缩下载文件,并将其内容复制到 eclipse 插件目录来完成的。在此例中,gef 需要解压缩到 eclipse目录(它将自动从该目录进入插件目录)。为安全起见,您可能想将它解压缩到某个临时目录,再相应地从那里复制相关目录。如果 eclipse 正在运行,您需要停止它然后再重新启动它,这样它才能识别新安装的插件。

  一旦 eclipseuml(以及 gef)安装完成,您就能够像创建一个 java 类文件一样创建一个类图。在 java 透视图中,右键单击 package explorer 中的“hello”项目,然后从弹出菜单上选择 new=>other。new 对话框的左边窗格中将会有一个用于 uml 的新选项。eclipseuml 的免费版本仅支持类图,因此右侧的惟一选项是 uml class diagram。请选择 uml class diagram,然后为该类图键入一个名称,比如“hello”:

eclipse 平台入门(图七)

点击查看大图

图 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。

eclipse 平台入门(图八)

点击查看大图

图 8. person 类图

  要从 uml 创建 java 类,请单击类图窗口顶部工具栏上的“new class”按钮,即左起第三个按钮,然后单击类图。当 new 类向导打开时,请键入 adress 作为类名称,然后按 finish。

  您可以右键单击类名称并选择 new=>attribute,从而给类添加属性。在 new 属性对话框中,请输入属性名称、类型和可见性。然后右键单击类名称并选择 new=>method 来添加方法。

  当您更改类图时,图下面的 source editor 窗口将反映所做的更改。最后,您可以单击 association 按钮(左起第五个),绘制一条从 person 类指向 address 类的线段,从而绘制这两个类之间的关系图。这样会调出另外一个对话框,您可以在其中输入关联属性(请参考 eclipseuml 帮助,以了解关于必需信息的更多内容)。完成后的图应该类似如下:

eclipse 平台入门(图九)

点击查看大图

图 9. 关联

  这个 uml 插件展示了 eclipse 插件的几个典型特点。首先,它展示了工具之间的紧密集成。表面上绝对无法看出有多个组件在工作;与 eclipse 平台和 jdt 的集成是无缝的。例如,当 person 类被创建时,它显示语法错误是因为它的一个属性 address 没有定义。一旦 address 类在 uml 图中创建完成,这些组件就会分开显示出来。

  另一个特点是 eclipseuml 利用其他插件提供的功能的能力——在此例中是 gef 插件,它提供用于开发可视化编辑器的工具。

  还有另一个特点涉及 eclipseuml 插件使用多层次功能来分发的方式。支持类图的基本插件是免费的,但是更成熟的版本要付费才能使用。

  eclipse 平台体系结构
  eclipse 平台是一个具有一组强大服务的框架,这些服务支持插件,比如 jdt 和插件开发环境(pde)。它由几个主要的部分构成:平台运行库、工作区、工作台、团队支持和帮助。

eclipse 平台入门(图十)
图 10. eclipse 平台体系结构

  平台
  平台运行库是内核,它在启动时检查已安装了哪些插件,并创建关于它们的注册表信息。为降低启动时间和资源使用,它在实际需要任何插件时才加载该插件。除了内核外,其他每样东西都是作为插件来实现的。

  工作区
  工作区是负责管理用户资源的插件。这包括用户创建的项目、那些项目中的文件,以及文件变更和其他资源。工作区还负责通知其他插件关于资源变更的信息,比如文件创建、删除或更改。

  工作台
  工作台为 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 万美元的世界级软件在开放源代码领域的发布,给业界带来了久违的震撼。

扫描关注微信公众号