内容


面向 Visual Studio 用户的 Eclipse 简介

Visual Studio 与 Eclipse 的比较和对照

Comments

所有集成开发环境 (IDE) 都十分相似,因为它们都是为同一目的而构建的,但是它们也有差异。这些差异中有些可以归因于应用域不同,但是其余差异则因 IDE 设计而产生。

很明显,Microsoft Visual Studio 与 Eclipse 是不同的:Java™ 编程语言不同于 C/C++/.NET,并且 Java 曾经是 Eclipse 所支持的第一种语言。两者不同还因为 Eclipse 旨在成为 “可以实现任何功能而不是实现具体某项功能(everything and nothing in particular)” 的 IDE,引入了更多一般功能和可自定义功能。Eclipse 还可用于更多的操作系统中。但是,我们的目的不是要列举出 Eclipse 与 Visual Studio 之间的所有 差异。

本文不是要详细讨论 IDE 设计,而是要说明这些 IDE 之间的主要差异。本文适用于已经使用了 Visual Studio 一段时间并且要开始使用 Eclipse 的所有开发人员。本文不教您如何在 Eclipse 中进行 Java 编程,也不关注 Java 特有功能(参考资料 中列出了一部介绍 Java 特有功能的优秀教程),而是讨论两者总体上的差异。

Eclipse 工作区

一般而言,Eclipse 工作区的功用与 Visual Studio 解决方案相同:组织层次结构中的顶级项目、文件夹和文件。但是,有一些主要差异。Visual Studio 解决方案仅仅列出它所包含的项目及其依赖关系、配置、版本控制信息等。

Eclipse 工作区所实现的功能不只包含上述这些。它将管理大多数非项目信息,例如全局首选项、窗口布局以及搜索和浏览历史记录。Eclipse 启动时必须同时启动一个工作区,并且您不能按照关闭 Visual Studio 解决方案的方法来关闭工作区。虽然可以在 Eclipse 中切换工作区,但是许多用户都使用包含自己所有项目的一个工作区。

项目结构

Eclipse 项目与 Visual Studio 项目的差异在于与底层文件系统的交互方法上。在 Visual Studio 中,项目与它在文件系统中的布局的关联并不紧密:您可以将 c:\temp\ 中的文件添加到位于 d:\work 的项目中,并且 Visual Studio 将记录新文件的引用位置并像任何其他文件一样打开它。文件夹(如 “头文件”)不与文件系统文件夹(在内部,此类文件夹被称为过滤器)对应。

在 Eclipse 中,项目元素的结构必须与它们在底层文件系统中的布局相对应。例如,如果 Eclipse 项目 HelloWorld(参见图 1)位于 c:\eclipse\workspace\HelloWorld,则 README.TXT 位于 c:\eclipse\workspace\HelloWorld\src\README.TXT。

图 1. 简单的 HelloWorld 项目
简单的 HelloWorld 项目

Eclipse 还需要与项目目录下的文件同步。如果删除 Eclipse 中的文件或文件夹,那么被删除的文件或文件夹也将从文件系统中消失。但是,当您使用 Windows® 资源管理器添加或删除同一个文件时,Eclipse 中的相关资源将不同步,这可能干扰 Eclipse 的某些操作。在这种情况下,您应当在项目的右键菜单中选择 Refresh,手动刷新项目。您可以通过在 Eclipse 首选项中选择 Refresh automatically 选项,告诉 Eclipse 与文件系统进行自动同步。

把资源链接到 Eclipse 中

严格的工作区结构是执行此操作的基础。虽然项目可以存储在工作区目录以外,但是早期的 Eclipse 版本甚至都不能打开一个外部文件(现在,可以选择 File > Open File)。UNIX® 用户十分幸运,因为他们可以使用符号链接来模拟灵活的项目结构,但是 Windows 用户没有这样的权限。现在,Eclipse 在 IDE 级别支持链接资源

Eclipse 中的链接资源的作用与 UNIX 符号链接非常相似。例如,要将大型测试输入文件添加到项目中而不从其原始位置复制,请选择 File > New > File,并在打开的窗口中单击 Advanced(参见图 2)。添加后,系统将给链接资源的图标上加一个小箭头(参见图 3)。

图 2. 添加链接文件
添加链接文件
添加链接文件
图 3. HelloWorld 项目中的链接文件
HelloWorld 项目中的链接文件

提示:使用链接资源提高性能

当您在处理驻留在远程位置(例如文件服务器或 ClearCase 动态视图)的大型项目时,链接文件夹会非常有用。虽然源文件可以受益于适当的备份和通过其他方式执行的管理,但是没有足够的理由把生成的 .class 文件存储到这样的远程存储设备中。在拥有几百个源文件的项目中,如果把生成的文件存储到本机上,可以极大地提高许多操作的性能。

在 Visual Studio C++ 项目中,您可以通过将中间目录设为本地位置来提高构建性能。在 Eclipse 中,您可以通过使用指向本机目录的链接输出文件夹来实现同样的效果。

有关其他信息,包括如何使用变量来定义依赖于平台的链接目标(例如使用 UNIX 中的临时目录 /tmp,Windows 中的临时目录 c:\temp),请参阅 参考资料

用工作组减少混乱

正如前面提到的,许多开发人员都把他们的所有项目加载到一个 Eclipse 工作区中。这样做很方便,但是有时可能会带来太多混乱。除了关闭不必要的项目以外,您还可以定义工作组:元素组(项目、文件夹、类等)。Eclipse 可以在各种视图(例如 Package Explorer)和操作(如搜索)中使用工作组。有关其他信息,请参阅 参考资料

本地历史记录

Eclipse 最棒的一项功能 —— 并且是 Visual Studio 所没有的一项功能 —— 是本地历史记录。每次您更改文件、类或方法,Eclipse 都会在其本地历史记录中记录更改。然后,您可以将现在的文件与几分钟前、几小时前或几天前的文件相比较。如果文件被删除,则从其父目录节点的上下文菜单中调用 Restore from Local History 可以找回该文件。

本地历史记录不能替代版本控制。它更像是一个拥有历史记录天数和分配存储能力的可配置限制的超级撤消引擎。

构建项目

与 Visual Studio 方法下的项目拥有单个项目类型 (C++/C#/J#) 相反,Eclipse 项目可以没有、有一个或有多个本性。例如,Eclipse 中的 Java 项目有 Java 本性,而动态 Web 项目(使用 Eclipse WTP 创建;请参阅 参考资料)有 Java 和(隐含的)Web 本性。项目本性将定义一组生成器,这些生成器将在构建项目时运行。例如,Java 本性将添加一个把 Java 源文件编译成 .class 文件的生成器,而 Web 本性将添加一个验证 XML 和 HTML 文件的生成器。

自动构建项目

当开发人员第一次使用 Eclipse 时,许多人都会去寻找 Build 命令。但是令人惊讶的是,他们要么找不到这条命令,要么不能使用这条命令。那是因为不同于 Visual Studio 和其他一些 IDE,Eclipse 有一项自动构建 功能。在 Java 项目中,Java 文件每修改一次,Eclipse 就将编译一次相关文件,包括未直接受更改影响的文件。自动构建是一种可以快速发现影响其他文件的编译错误的优秀方法。许多操作(例如 Java 搜索)依赖于这些构建结果。

自定义构建

通常 —— 主要针对 C++ 项目 —— Visual Studio 项目将使用自定义构建步骤来执行非标准构建任务。自定义构建命令都是 Visual Studio 项目中的普通命令行指令。另一方面,Eclipse 可以运行独立程序和 Ant 构建脚本。例如,只要项目被重新构建,您就可以使用 Ant 脚本构建和部署包含项目的类的 Java Archive (JAR) 文件。附含了 Ant 的 build.xml 文件的编辑器。

您可以在项目属性窗口的 Builders 页面中配置自定义项目生成器,并且可以选择 Run > External Tools 来定义和运行全局脚本。

运行和调试

Eclipse 不像 Visual Studio 一样有启动项目的概念。此差异可以归因于语言差异,但是 Visual Studio 通过为每个项目生成一个可执行文件并只允许不同的项目配置使用不同的启动参数(例如命令行参数),进一步限制了它的用户。在大多数情况下,为了使用不同的命令行参数管理多个配置是一种不好的方法。

Eclipse 使用启动配置 来收集用于启动应用程序的参数。对于 Java 程序,主类名和命令行参数都是这类参数。项目中有 main() 方法的类都可以有单独的启动配置。当您使用 Run > Run As 命令启动含有新主类的应用程序时,将自动创建一个新配置。您还可以使用 Run 窗口 (Run > Run) 创建和删除启动配置。

默认情况下,启动配置保存在本地工作区中并且不是项目的一部分,这意味着它们不被共享给其他团队成员。要在项目中保存启动配置,请使用 Run 窗口的 Common 选项卡,如下所示:

图 4. 更改启动配置的位置
更改启动配置的位置
更改启动配置的位置

Debug 透视图

Eclipse 没有调试模式 —— 只有能够来回切换的 Debug 透视图。主 Debug 视图将列出所有正在运行或调试的程序,并允许您同时调试多个 prograDebuggingms,这一点在 Visual Studio 中完成起来要困难一些。要了解关于 Eclipse 必须提供的调试功能的更多信息,请阅读 “用 Eclipse Platform 进行调试”(请参阅 参考资料)。

Eclipse 插件

除了是一个优秀的免费开源 Java IDE 以外,Eclipse 最重要的特性 —— 在它所获得的成功中占据了较大的位置 —— 是开放的可扩展架构。大多数 Eclipse 功能都可以扩展或接受插件。实际上,许多 Eclipse 功能都使用可以通用的同一个可扩展架构。

Eclipse 使用的业务友好的开源许可证鼓励开发商业插件和开源插件。Eclipse Plugin Central 的官方插件市场中列出 800 多个插件也就不足为奇了。

除了集成到现有 Eclipse 安装中的插件以外,一些公司已经在 Eclipse 之上构建了功能全面的 IDE,包括所有 IBM® Rational® 工具、CodeGear JBuilder 2007 和 Genuitec MyEclipse。通常,这些产品都提供用于建模、Web 开发和可视化设计的工具。有关产品和插件目录,请参阅 参考资料

其他 Eclipse 项目

基本 Eclipse 软件开发包 (SDK) 只包含 Java IDE。用于其他语言(C/C++、PHP)、模型工具和其他扩展的工具包正在庞大的 Eclipse 下开发,并且可以作为 Eclipse 插件来安装。有关 Europa、2007 年最近同时发行的 21 个顶级 Eclipse 项目以及 Callisto(先前于 2006 年 6 月发布的 10 个顶级项目)的更多信息,请参阅 参考资料

Update Manager

只要您第一次下载 Eclipse 或者下载 Eclipse 的升级程序,就会获得一个释放到空目录中的普通压缩文件,而没有安装程序执行任何配置或创建桌面快捷方式。但是,对于插件,Eclipse 有 Update Manager (Help > Software Updates),该工具将管理安装和更新。它还可以启用和禁用插件,类似于 Visual Studio 的 Add-in Manager 的功能。

Update Manager 将从更新站点(本地或通过 Web)安装或更新插件。要安装新插件,您必须在供应商的 Web 站点中找到更新站点 URL 并将其手动输入到 Update Manager 窗口中(一些供应商已经构建了与 Update Manager 在后台进行交互的全功能安装程序)。

在较小的范围内,Eclipse 支持把插件手动复制到相应的目录中来安装插件。不建议采用这种方法,并且它会导致 Eclipse 配置中出现不一致。有关更多信息,请参阅 “基本故障诊断”。

当您需要帮助时

如果您是 Eclipse 新用户,则可能会有一些问题要问。并且在使用它一段时间以后,您可能会发现一堆 bug 或者可能希望建议增加新功能。此部分通盘考虑了各种支持选项。

基本故障诊断

每个人都知道 IDE 有时候会出错。使用 Visual Studio,您可以在命令提示符处键入 devenv /setup 来把一切重设回出厂状态。Eclipse 提供了一个类似的命令行开关。在命令行中运行 eclipse.exe -clean 将重新构建已安装插件的大部分信息。如果您已经安装了一个新插件而它不显示,则可能需要使用 -clean 选项。

当 Eclipse 出错时,您可能还需要检查错误日志。要打开 Error Log 视图,请选择 Window > Show View > Error Log。原始日志位于 <workspace dir>/.metadata/.log 文件中。

新闻组

如果使用过 Microsoft 产品,您知道可以在 Microsoft Developer Network (MSDN) 论坛和新闻组中获得帮助。Eclipse 社区有自己的新闻组(请参阅 参考资料),并且社区中有许多 Eclipse 定期投稿者都可以帮助您走出困境。

报告 bug 和建议开发新功能

不同于 Microsoft Connect Web 站点中旨在提供客户支持的 Microsoft 反馈功能,Eclipse Bugs 是 Eclipse 开发人员所使用的实际 bug 跟踪系统。使用 Eclipse Bugs,您不但可以搜索、报告及给 bug 投票,而且可以将您自己添加到其他人报告的 bug 的抄送名单中、查看指定了谁来解决问题、了解在哪个版本中 bug 应当会被更正等等。您可以使用同一个界面发布功能请求(请参阅 参考资料)。

高级支持

除了具有开源精神的 Eclipse Bugs 和社区帮助以外,一些公司需要为自己的开发团队提供商业级支持。如果您购买了构建在 Eclipse 之上的产品,则其供应商应当提供产品(包括底层 Eclipse 组件在内)支持。如果使用基本的 Eclipse SDK,则可以查看拥有世界级 24x7x365 支持计划的 IBM Rational Elite Support for Eclipse 项目。

结束语

我们已经讨论了 Eclipse 如何处理一些常见的 IDE 原理和任务。一方面使用工作区集中的方法和项目结构,另一方面拥有 UI 设计和启动配置的极大灵活性,使 Eclipse 的 IDE 设计独一无二。并且开放的可扩展性架构使 Eclipse 成为适用于各种第三方插件和产品的平台。

如果您尚未开始使用 Eclipse,请阅读 “Eclipse for Visual Studio developers” 教程(请参阅 参考资料),这篇文章给出了在 Eclipse 中进行 Java 开发的详细介绍。但是,Eclipse 不全都使用 Java 编程语言。要获得其他 Eclipse 项目(例如 C++ IDE),请查阅 Callisto 和 Europa 发行版。然后访问 Eclipse Plugin Central 并下载一些流行的 Eclipse 插件。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Open source
ArticleID=260288
ArticleTitle=面向 Visual Studio 用户的 Eclipse 简介
publish-date=10082007