Eclipse平台入门(07年8月06日)

转自: www.ibm.com

 

Chris Aniszczyk (zx@us.ibm.com), 软件工程师, IBM 
David Gallardo, 独立软件顾问和作家

2007 年 8 月 06 日

通过本文,了解 Eclipse 平台,包括其起源和体系结构。本文首先简要讨论 Eclipse 的开源特性以及它对多种编程语言的支持,随后,将通过一个简单的编程示例展示 Java™ 开发环境。本文还会介绍以插件扩展形式可用的一些软件开发工具。

本文是 David Gallardo 题为 “Eclipse
平台入门
” 文章的后续篇,提供了有关 Eclipse V3.3 的新信息。

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 等编程语言的插件已经可用,或预计将会推出。Eclipse
框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。

基于 Eclipse 的应用程序的一个突出例子是 IBM®
Rational® Software Architect(参见 参考资料),它构成了 IBM Java 开发工具系列的基础。

Eclipse 是开源的

开源软件是通过许可证发行以确保授予用户某些权利的软件。当然,最明显的一点是,源代码必须可用,从而用户可以自由地修改和重新发布软件。这种用户权利保
护可通过称为 copyleft 的设备实现:软件许可证声明了版权保护和禁止发布,除非用户被授予了这些权利。copyleft
还要求所有重新发布的软件使用原软件的许可。因此,这实际上倒置了版权的目的 — 使用版权来授予用户权利,而不是为软件的开发者保留版权 —
copyleft 经常被描述为 “保留所有版权”。

曾经四处蔓延的对开源软件的许多恐惧、担忧和疑虑,都与
某些 copyleft 许可证的所谓 “病毒” 性质有关 —
如果使用开源软件作为您开发的程序的一部分,您将失去自己的知识产权,因为该许可证将“感染”您开发的专有部分。换句话说,该许可证可能要求与开源软件一
起打包的所有软件,都必须在相同的许可证之下发布。虽然这对最著名的 copyleft 许可证(即 GNU 通用公共许可证,例如 Linux®
就是在该许可证之下发布的)来说可能是事实,但当时还有其他许可证在商业化和社区考虑之间提供了较好的平衡。


放软件计划(Open Software
Initiative)是一家非营利机构,它明确定义了开放源码的含义及满足其标准的认证许可证。Eclipse 是在 OSI 认可的
Eclipse 公共许可证(EPL)1.0 版之下被授予许可证的,EPL 旨在促进 Eclipse 的商业化使用而同时又能对开源作者保持公平。

为 Eclipse 创建插件或将 Eclipse 用作软件开发应用程序基础的开发人员,需要发布他们在 EPL 下使用或修改的任何
Eclipse 代码,但是他们可以自由决定自己添加的代码的许可证授予方式。与出自 Eclipse
的软件一起打包的专有代码不需要作为开放源码来授予许可证,该源代码也不需要提供给用户。


管大多数开发人员不会使用 Eclipse 来开发插件,或基于 Eclipse 创建新产品,但是 Eclipse 的开源性质所意味的并不只是使得
Eclipse
免费可用(尽管便于商业化的许可证意味着插件可能要花钱)。开放源码鼓励创新,并激励开发人员(甚至是商业开发人员)为公共开放源码库贡献代码。其中的原
因很多,不过最本质的原因是为这个项目作贡献的开发人员越多,这个项目就会变得对每个人都越宝贵。随着此项目变得日益有用,更多的开发人员将会使用它,并
围绕它形成一个社区,就像那些围绕 Apache 和 Linux 形成的社区一样。(有关许可证的更多信息,请参阅 参考资料。)


回页首

Eclipse 是什么?

Eclipse 是个开源社区,其项目大都集中于构建开放的开发平台,该平台由可扩展的框架、工具和运行库组成,用来跨生命周期构建、部署和管理软件。Eclipse
Foundation 是一个非盈利性会员性质的组织,主管 Eclipse
项目和协助发展开放源码社区及补充成品和服务的生态系统。

Eclipse Project 最初由 IBM 在 2001 年 11 月创建并得到了软件厂商联盟的支持。Eclipse Foundation 则作为一个独立的非盈利性组织于 2004 年 1 月创建,其职能是充当 Eclipse
社区的 “干事”。它的创建旨在让独立于厂商的开放、透明的社区得以围绕 Eclipse 繁荣起来。现在,Eclipse 社区的组成涵盖了软件行业不同层面的组织和个人。

Eclipse Foundation 负责管理和指导 Eclipse 的现行发展。该基金会为社区提供服务,但并不雇佣任何实际致力于 Eclipse 项目开发的开放源码开发人员(称为 提交者)。Eclipse 提交者一般都是受雇于组织或是自愿为开放源码项目贡献时间的独立开发人员。

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


回页首

Eclipse 工作台

在第一次打开 Eclipse 时,首先看到的是工作台中的欢迎页面(参见图 1)。作为一个 Eclipse 用户,您可以有几个选项可选:可以进入概览页面(这也是我推荐的做法,参见图 2),也可以看看有何新特性、浏览一些示例或阅读一些教程。

图 1. Eclipse 欢迎页面
Eclipse 欢迎页面

图 2. Eclipse 概览页面
Eclipse 概览页面

Eclipse 工作台由几个称为视图 的窗格组成,比如 Navigator 或 Outline 视图。这些视图的集合称为透视图。其中最为常见的透视图之一是 Resource 透视图,它是一个基本的通用视图集,用于管理项目以及查看和编辑项目中的文件。


建议新手用户从图 2 所示的概览页面开始了解和熟悉 Eclipse。这个工作台的基本部分包含了大量有关 Eclipse
的组成部分以及各部分之间如何互动的优秀入门信息。请花几分钟时间阅读一下这些资料,之后我们就可以直接开始探究 Eclipse 中的 Java
开发工具(Java Development Tools,JDT)了。实践才是最好的学习方法。

为了继续这个简短的 Eclipse 学习之旅,我们需要创建一个新的 Java 项目。选择File > New > Java Project,当系统提示要求提供项目名称时,输入 Hello ,然后单击 Finish

接下来,我们将对 Java 透视图(如果您已经在此)稍作介绍。根据想要管理屏幕的方式的不同,可以更改当前窗口中的透视图,方法是选择 Window > Open Perspective > Java,也可以通过选择 Window > New Window 和新的透视图来打开一个新窗口。


如您所预期的那样,Java 透视图具有一组更适合 Java 开发的视图。左上角的这个视图就是其中之一,该视图是一个包含了各种 Java
包、类、JAR 以及其他文件的层级结构。此视图被称作包浏览器(Package
Explorer)。此外,此主菜单也已经扩展包括了两个菜单项:Source 和 Refactor。


回页首

Java 开发工具 (JDT)

为试验一下 Java 开发环境,我们将创建并运行一个 Hello World 应用程序。使用 Java 透视图,右键单击 Hello 项目,从 Hello 项目的源文件夹 (src) 选择 New > Class,如图 3 所示。在随后出现的对话框中,键入 Hello 作为类名称。在 Which
method stubs would you like to create?
下面,选中 public static
void main(String[] args)
复选框,然后单击 Finish

图 3. 在 Java 透视图中创建新类
在 Java 透视图中创建新类

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

图 4. Java 编辑器中的 Hello 类
Java 编辑器中的 Hello 类

您会在键入时注意到 Eclipse 编辑器的一些特性,包括语法检查和代码自动完成。当您键入开括号或双引号时,Eclipse 会自动提供配对的符号,并将光标置于符号对之内。

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


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

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

图 5. Quick Fix 建议
Quick Fix 建议

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

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

图 6. 程序的输出
程序的输出

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

图 7. Debug 透视图
Debug 透视图


先,请注意该透视图左上角的 Debug
视图。这个视图显示调用堆栈,并且标题栏中有一个工具栏,它允许您控制程序的执行,包括继续、挂起或终止程序、跟踪下一个语句、单步执行下一个语句,或者
从方法返回。右上角的窗格包含许多选项卡式的视图,包括 Variables、Breakpoints、Expressions 和
Display。这里我单击了 Variables 视图,以便我们能够看到 i 的当前值。

通过上下文敏感的帮助可以获得关于这些视图的更多信息:单击视图的标题,然后按 F1


回页首

附加的插件

除了像 JDT 这样用于编辑、编译和调试应用程序的插件外,还有其他一些可用的插件支持从建模、构建自动化、单元测试、性能测试、版本控制到配置管理的完整开发过程。

Eclipse
附带了配合开放源码并发版本系统(Concurrent Versions System,CVS)使用的插件,可用于源代码控制。Team
插件连接到 CVS 服务器,允许开发团队的成员操作一组源代码文件,却不会相互覆盖其他人的更改。这里不打算进一步探讨如何从 Eclipse
内部进行源代码控制,因为这需要安装 CVS 服务器,不过支持开发团队而不只是独立的开发,这是 Eclipse 的一个重要的必备特性。

受 Eclipse Foundation 支持和管理的插件可以在
Eclipse Web 站点找到。有关可用插件的完整列表,可以参考 Eclipse Plug-in Central,它可视为是插件的索引。


回页首

Eclipse 平台体系结构

Eclipse 平台具有一组功能强大的插件(参见图 8),这些插件可支持多种项目,比如 JDT 和 PDE。

图 8. Eclipse 平台体系结构简化图
Eclipse 平台体系结构简化图


中深蓝色的部分代表的是 Eclipse 的富客户机平台(Rich Client Platform,RCP)的核心组件。RCP
本身的概念和原理超出了本文的讨论范围,但可以将 RCP 简单地视为 Eclipse 的一组插件,人们可用这些插件来开发应用程序,比如
Lotus Notes® 8。图中淡蓝色所标示的部分代表的是可包含到基于 RCP
的应用程序中的可选(但建议包含)部件。而灰色部分所示的部件则完全可选。此平台包含有几个组件,下面,我将逐一加以介绍:

运行库
运行库是基于 OSGi 规范用来定义 Eclipse 插件模型以及扩展概念和扩展点的代码。运行库还提供了一些额外服务,比如日志和并发性。
JFace/SWT

准小部件工具箱(Standard Widget Toolkit,SWT)是一组小部件集,为 Eclipse 提供了其外在感观。JFace
是位于 SWT 之上的一层,提供了一些
模型-视图-控制器(Model-View-Controller,MVC)类,以使开发图形应用程序更为简单。
工作台
工作台为 Eclipse 赋予了个性化。视图、透视图的概念以及编辑器等都在这一层定义。
帮助(用户协助)
Eclipse 组件让您可以为用户提供协助。这可以通过帮助系统实现,该系统允许用户搜索帮助文档,也可以采用备忘单(cheatsheet),它可视为面向终端用户的互动性任务列表。
更新
Eclipse 的更新组件提供了可允许您将应用程序从一个版本更新到另一个版本的设施。
团队
团队组件包含有一个框架以允许厂商插入其自身的版本控制系统。Eclipse 开箱即用的 CVS 插件就是这类提供商的一个示范实现。


回页首

结束语

Eclipse 源于来自 IBM 的一点代码,现已发展成了一个功能完善的开源生态系统,参与的公司多达 100 多家。可移植、可扩展的开源框架并非什么新鲜的理念,但正是由于其成熟、健壮和优雅的设计,Eclipse 才得以为我们带来了全新的动力。

欢迎您加入 Eclipse 生态系统。我们的目标是让您能快速熟悉 Eclipse
平台。本文通过理论介绍和实际练习达到了此目的。请您吸收和应用本文中所获得的知识,尽快成为 Eclipse 生态系统中活跃的一分子。

参考资料

学习

获得产品和技术

讨论

  • Eclipse Platform 新闻组 应当是讨论关于 Eclipse 的问题的第一站(选择此链接将启动默认的 Usenet 新闻阅读器应用程序并打开 eclipse.platform)。
  • Eclipse 新闻组 中有很多参考资料适用于对使用和扩展 Eclipse 感兴趣的人员。
  • 通过参与 developerWorks blogs 加入 developerWorks 社区。

作者简介

Chris Aniszczyk 是 IBM Lotus 的软件工程师,专门从事 OSGi 相关开发工作。他是开放源码的忠实拥护者,目前在开发 Gentoo Linux 发行版,他还是一些 Eclipse 项目(PDE、ECF、EMFT)的参与者。他十分 乐意与您讨论 关于开放源码和 Eclipse 方面的问题。

David
Gallardo 是一名独立软件顾问和作家,他的专长是软件国际化、Java Web 应用程序和数据库开发。他作为专业软件工程师已经有 15
年多,对于多种操作系统、编程语言以及网络协议都具有丰富的经验。最近,他在一家 B2B 电子商务公司 TradeAccess, Inc.
中领导数据库和国际化的开发。在这之前,他是 Lotus Development Corporation
国际化产品开发小组的高级工程师,致力于跨平台库的开发,这个跨平台库为 Lotus 产品(包括 Domino)提供了 Unicode
和国际化语言支持。