每个IDE都允许您管理文件和构建项目。Eclipse不仅仅局限于此,因为它可以在比大多数IDE所拥有的典型文件中心视图更密切的层次上处理您所编写的代码。作为开发人员,您可以只编写少量代码,而让Eclipse来完成查找、改变、切换、移动、等待这些繁杂的工作,从而获得好处。
有了Eclipse这个工具,您就可以把精力集中在手边真正的任务上:编写能完成预定功能的代码。
从UI开始 首先请注意,本文所涉及的是新的Eclipse3,它在某些方面与较早的2.1版,以及WSAD和RAD不同。
Eclipse看上去与其他大多数的IDE很类似,因为基本的用户界面(UI)已被各地的开发人员所熟悉——除了那些仍在使用Emacs或vi的人,但他们还是可以在Eclipse中找到吸引人的东西,Eclipse对这两个键绑定都是支持的。
基本的Eclipse用户界面如图 1所示。在屏幕的左边,可以看到开发资源列表:源代码、jars,以及组成您的最新开发项目的其他成分。实际上,列表被划分成您当前正在开发的不同项目,它们可以是相互依赖的也可以是完全独立的。
Eclipse将项目数据保存在两个文件中,分别是.project文件和.classpath文件。.project文件保存关于项目中包含哪些文件、如何使用它们、如何构建项目等方面的信息,以及更多的详细信息。任何Java项目中都有.classpath文件,该文件告诉Eclipse在构建过程中使用什么作为CLASSPATH变量。
所有当前的项目都存在于当前的Workspace中。Eclipse中的Workspace是一个包含了许多文件的目录,可能还包含了项目所需的资源。Eclipse从一个默认Workspace开始;不过,您可以很方便地将它设置为打开多个Workspace。要打开一个不同的Workspace,只需要在启动可执行文件时使用-data标志即可,例如:
eclipse.exe -data E:/shared/workspaces/artemis
中间部分是一个源代码查看器,它可以显示当前打开的文件的源代码。注意,它是多重标签的(tabbed),所以您可以一次打开多个文件。右边是当前打开文件的概要。Eclipse列出了类、方法和文件的其他部分。双击一个条目会跳转到相应的位置。最后,在底部,是另一个多重标签的区域,用于传输关于Eclipse所做的、所发现的或者具有问题的事情的信息。注意所有这些下面的标签都是视图,您可以任意拖动,还可以将它们堆叠起来组成堆栈。信息视图是独立的,如果您希望同时看到它们而且您的屏幕足够大,您可以将它们铺开。
视图被分组为透视图,透视图通常是面向环境的。这里有一个用于处理Java项目的Java透视图,一个用于追踪运行时问题的Debug透视图,一个用于管理CVS连接的CVS透视图,等等。实际上,透视图和视图的数目是可扩展的,Eclipse的几乎每个部分都是可扩展的。IDE为增加和扩充现有功能提供了多种方法,这些功能为Eclipse社团的许多人所利用。
Eclipse的所有资源和项目都具有属性。在左边列表中的任意一项上右击,再选择“Properties”,就可以看到更详细的信息。对于文件,您可以看到文件自身的一些基本信息,比如修改日期、位置和权限。对于项目,有更多高级选项,允许您设置Eclipse构建项目的方式。
如果单击“Java Build Path”,您将会看到四个控制构建行为的标签,第一个是“Source”,它允许您设置Eclipse将在哪里查找源文件,还可指定哪些源文件是要用的哪些是可以忽略的。下一个标签是“Projects”,它允许您设置当前项目所依赖的项目,这样,您可以在一个项目中设置一些库或公共代码,并从其他项目简单地包含该项目。
下一个标签是“Libraries”,它允许您将JAR文件、库和类文件夹添加到类路径中。最后,您可以指定该项目将导出哪些资源,这样,该项目的属性就可以应用于导入该项目的其他项目。
Eclipse是在中间大型源视图中进行构建的,所有的编辑也是在那里进行的。但是有一些事情要注意,Eclipse提供的不仅仅是简单的文本视图。首先,文本的左边有一个小槽,Eclipse用它来隐藏传递有用信息的图标。一个红色的“X”会显示在Eclipse不能编译的行的旁边,Eclipse认为可能存在错误的代码旁会有黄色的“warning”标志,如未使用的导入语句(见图1)。
其次,存在问题的代码被加上了适当颜色的下划线。同样,红色下划线代表编译错误,黄色代表警告。最后,滚动条的右边有另一个小槽。颜色在这里又一次被用来传达信息:红色块标识有错误的代码区域,黄色块标识警告代码区域。单击色块会将光标直接移至问题代码。将鼠标悬停在这三个带颜色的条目(图标、下划线或块——图1中显示了这三者)上,可以打开相关问题的描述。右击会出现上下文菜单。
动态构建 使用Eclipse进行Java开发,您首先注意到的就是它的编译是多么智能。进入Preferences(WindowMenu > Preferences)并启用动态构建(Workbench > Build Automatically)。现在,每当您保存文件时,Eclipse将会自动编译该文件以及依赖于该文件的文件。因此,当您想运行您的应用程序时,它基本上已经保存好并且是最新版本。当您处理大型代码基时,这可以节约不少时间。如果您不得不使用其他IDE,那么您首先失去的就是该特性的简单性。
当您使用Eclipse时,您将会一次又一次地感受到这样一个底层原理:IDE了解代码。Eclipse不仅仅是一个能在以文件为中心的基础上处理代码和其他事情的编译器,它还能够查看源代码并聪明地加以处理。它的智能编译能力通过它能够明白表达在导入语句中的依赖性而得到了证明。
智能搜索 Eclipse具有非常智能的搜索特性(Search Menu > Search),允许您搜索文件中、整个项目中或一个文件组中出现的任何字符串。这个特性很好,但是还在变得更好。Java搜索(Search Menu > Java)允许您将搜索限定为只查找类、方法、类型或其他Java了解的类别。Eclipse可以找到以“set”开头的所有方法实现,您可以轻易地找到您所有的写存取方法。更好的是,您可以在任意方法调用上控件单击(control-click)从而进入它的实现。或控件单击一个类名进入它的实现。另外,您可以在方法上右击找到所有它被使用的地方(References > Project)。Eclipse对代码的了解有助于它导航大型代码基,而您会从中获益。
“TODO”任务链接创建 Eclipse还可以提醒您仍需执行的任务。许多开发人员在代码中添加TODO注释来提醒他们还有特定的任务要完成,或者特定的情况要处理。Eclipse又一次利用它对Java结构的知识找到任何以TODO开头的注释,并将它添加到一个特殊的Tasks视图(打开Window Menu > Show View > Other > Basic > Tasks就可看到)。这样,Eclipse可以提供一个全面的待完成的任务列表。
此外,您还可以配置Eclipse去识别您定义的其他标签。打开Preferences(Window Menu > Preferences)并浏览到“Task Tags”页面(Java > Task Tags)。您就可以添加新标签,删除已有标签,设置不同标签的属性,为代码指定Eclipse提供的默认值。
代码编写 您将会发现Eclipse实际上可以为您编写代码。右击源文件,在“Source”子菜单下,提供了Eclipse可以修改或扩展代码的一些方法,这会去做一些枯燥工作,从而把您解脱出来。其中最有用的代码编写能力是“Generate Getters and Setters”选项,它将会扫描一个类以查找域并为这些域产生适当的存取方法。
如果您选择了它,将会弹出一个窗口,让您指定要为之产生存取方法的域,以及产生什么存取方法(get,set,或两者)。您还可以指定产生的方法的权限(public,private等)。相似地,Eclipse可以基于超类及方法而产生构造函数,以覆盖或封装超类方法。
重构 Eclipse最强大的一个特性就是它对重构的健壮支持。选中一个方法并右击鼠标,您将会看到“Refactor”子菜单。如果您使用该方法来改变一个方法名,Eclipse将找到该方法的所有调用并将这些调用改变为使用新的方法名。您也可以改变方法签名,具体方法是通过添加参数,同时令Eclipse改变所有现有调用来添加那个参数,使用的是您指定的值。当然,您也可以删除您认为不再有用的参数,或重新排列参数使界面更一致。重构也可以工作在类的层次,您可以将内部的类拖至它们自己的文件中,或将类移至其他的包中。
健壮的撤销支持 另一个非常好的特性叫做“Local History”,这是一种极简单的本地CVS存储库。每保存一次文件,Eclipse将会记住这一保存,并允许您在需要的时候退回到该保存。在默认状态下,它会记录过去7天的保存(可以在Window Menu > Preferences > Workbench > Local History中修改这个默认设置)。
当您采用新特性,却破坏了不相干的特性时,撤销机制可以挽回局面。您可以快速地在两个版本间做一个异同比较,看看您都做出了哪些改动,并可以将改动退回到前一个版本,甚至昨天的版本。更好的是,您可以只回退特定的方法,而保留其他方法中的修改。
JUnit集成 Eclipse可以很容易与JUnit框架一起使用。如果您有按JUnit标准编写的类,您可以在左边的Resources视图中选择类并运行测试(Run Menu > Run As > JUnit Test)。Eclipse将会自动找到定义的测试套件并运行其中的所有测试,使用它自己的定制UI来显示测试的运行及发现的错误。常见的JUnit绿色线在测试失败的情况下会变成红色,Eclipse将会为您显示导致出错的栈追踪信息。
让Eclipse来做吧 您看,Eclipse提供了如此多的特性来自动完成一些枯燥繁重的工作,使开发