Eclipse 是个开源社区,其项目大都集中于构建开放的开发平台,该平台由可扩展的框架、工具和运行库组成,用来跨生命周期构建、部署和管理软件。Eclipse Foundation 是一个非盈利性会员性质的组织,主管 Eclipse 项目和协助发展开放源码社区及补充成品和服务的生态系统。 Eclipse Project 最初由 IBM 在 2001 年 11 月创建并得到了软件厂商联盟的支持。Eclipse Foundation 则作为一个独立的非盈利性组织于 2004 年 1 月创建,其职能是充当 Eclipse 社区的 “干事”。它的创建旨在让独立于厂商的开放、透明的社区得以围绕 Eclipse 繁荣起来。现在,Eclipse 社区的组成涵盖了软件行业不同层面的组织和个人。 Eclipse Foundation 负责管理和指导 Eclipse 的现行发展。该基金会为社区提供服务,但并不雇佣任何实际致力于 Eclipse 项目开发的开放源码开发人员(称为 提交者)。Eclipse 提交者一般都是受雇于组织或是自愿为开放源码项目贡献时间的独立开发人员。 现在我们已经考察了 Eclipse 背后的一些理论、历史和管理,下面让我们考察该产品本身。
在第一次打开 Eclipse 时,首先看到的是工作台中的欢迎页面(参见图 1)。作为一个 Eclipse 用户,您可以有几个选项可选:可以进入概览页面(这也是我推荐的做法,参见图 2),也可以看看有何新特性、浏览一些示例或阅读一些教程。
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 开发环境,我们将创建并运行一个 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。
这样将在编辑器区域创建一个包含 Hello 类和空的 main()
方法的 .java 文件,如图 4 所示。然后向该方法添加如下代码(注意其中 i 的声明是有意省略了的):
您会在键入时注意到 Eclipse 编辑器的一些特性,包括语法检查和代码自动完成。当您键入开括号或双引号时,Eclipse 会自动提供配对的符号,并将光标置于符号对之内。
在其他情况下,您可以通过按 Ctrl+1 来调用代码自动完成功能。代码自动完成提供了上下文敏感的建议列表,可通过键盘或鼠标来从列表中选择。这些建议可以是针对某个特定对象的方法列表,也可以是基于不同的关键字(比如 for
或 while
)来展开的代码片段。
语法检查依赖增量编译。每当您保存代码,它就在后台接受编译和语法检查。默认情况下,语法错误将以红色下划线显示,一个带白 X 的红点将出现在左边沿。其他错误在编辑器的左边沿通过灯泡状的图标来指示;这些就是编辑器或许能为您修复的问题 —— 即所谓的 Quick Fix(快速修复)特性。
上面的代码例子在 for
语句后面有一个灯泡状图标,因为 i
的声明被省略了。双击该灯泡状图标将调出建议的修复列表。在此例中,它将提供创建一个类字段 i
、一个局部变量 i
或一个方法参数 i
的建议;单击其中的每一个建议都会显示将要生成的代码。图 5 示了该建议列表和建议创建一个局部变量之后所生成的代码。
双击该建议就会把建议代码插入到代码中的恰当位置。
一旦代码无错误地编译完成,您就能够从 Eclipse 菜单上选择 Run 来执行该程序(注意这里不存在单独的编译步骤,因为编译是在您保存代码时进行的。如果代码没有语法错误,它就可以运行了)。这时会出现一个具有适当默认设置的 Launch Configurations 对话框;请单击右下角的 Run。一个新的选项卡式窗格将出现在下面的窗格(控制台)中,其中显示了程序的输出,如下图所示。
也可以在 Java 调试器中运行程序。首先双击编辑器视图左端的灰色边沿,从而在调用 System.out.println()
之后的 main() System.out.println()
中设置一个断点。一个蓝色的点会随即出现。从 Run 菜单,选择 Debug。正如上面描述的,这时会出现一个 Launch Configurations 对话框。选择 Run。透视图将自动切换到 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 平台具有一组功能强大的插件(参见图 8),这些插件可支持多种项目,比如 JDT 和 PDE。
图中深蓝色的部分代表的是 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 才得以为我们带来了全新的动力。
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 和国际化语言支持。