开发软件可能十分困难,这早已不是什么秘密。与其他领域不同,软件开发并不会制造出有形的三维产品,可以让我们拿在手里感觉并审视。不管我们花多少时间来画类图或设计流程图,最终我们都得编写代码。今天,开发软件系统需要编写大量的源代码。即使是我们自己设计软件,并且在大多数情况下是我们自己编写代码,用不了多久,源代码的数量也会轻易地超出我们所能控制的范围。面对现实吧:我们需要帮助。
幸运的是,不断完善的开发工具大大减轻了开发人员的负担。源代码编辑器、调试工具等正使构建和调试大型软件系统变得简单。
在本章中,我们将研究一些能够简化Ajax开发的工具。幸运的是,我们能够利用很多你可能在日常的Java开发中已经在使用的工具和技术。
2.1 JavaScript源代码编辑器
很多人都使用某种IDE(集成开发环境)来编写Java程序。是的,用最简单的文本编辑器和命令行式的编译器也能编写Java程序。但是,我们确实都从现代IDE所提供的强大生产力中获益匪浅。
如果你正在阅读本书,那么很明显,你使用Java来编写Web应用。基于Java的Web应用不仅仅包含Java源代码文件。使用Java EE平台构建的Web应用包括Java源代码文件、HTML和XHTML文件、XML文件,甚至纯文本文件。现代IDE可以管理所有这些文件,这就减少了构建Java EE应用所要使用(并学习!)的程序的数量。
有多少人愿意阅读整页整页的源代码呢?更糟糕的是,如果源代码不是我们自己编写的,因而我们对它并不熟悉,那该怎么办呢?智能的源代码编辑器中一个很方便的功能是突出显示关键字。这是一种你可能会发现它很方便但很少会仔细考虑的功能。在能够突出显示某种语言的关键字的编辑器中阅读源代码显然要舒服得多。
如果没有现代IDE,面向对象开发几乎不可能成为现实。想像这样的场景,你在编写位于一个对象继承结构中的类。你想编写一个方法,但是不知道父类中是否已经定义了这样的方法。怎样才能弄清楚这一点呢?最耗时的办法就是去查看父类的源文件。你可能会发现父类中没有这个方法。但是父类的父类中有没有呢?你可能要不断地打开对象继承结构中的每个源文件。这可是既单调乏味又十分耗时的活儿。
更糟糕的是,如果你没有对象继承结构中的所有类的源代码的话,该怎么办呢?突然间,你不能浏览源代码文件了。查看Javadoc怎么样?浏览Javadoc也是很慢的,而且还要假设有Javadoc可用。
软件开发史上最大的生产力改进毫无疑问就是智能代码完成,如今它已经成为几乎每个Java IDE的标准功能。如果你不清楚一个类中有哪些方法或属性可用,只需使用IDE的代码完成功能,就可以弹出一个包含所有可用方法和属性的列表,允许选择想使用的那个方法或属性。更妙的是,很多编辑器甚至能在代码完成列表中加入所有可用对象和类的列表。这种智能代码完成不仅减少了搜寻源代码的时间,而且它还减少了我们的代码键入量,这间接减少了可能发生的代码键入错误,后者又间接减少了编译的失败。
为什么要谈Java IDE呢?事实上,你很可能已经感受到了使用智能IDE编辑Java源代码所带来的巨大的生产力提高。既然Ajax正在成为开发人员工具箱的一部分,你将会比以往编写更多的JavaScript。这当然就引发了这样一个问题:有可供JavaScript使用的智能代码编辑器吗?
简而言之,答案是有。但是JavaScript编辑器并不像Java编辑器那么先进,虽然随着Ajax和JavaScript开发的成熟,它们会逐步完善。很多编辑器已经提供了一些简单的功能,比如关键字突出显示。
当今大多数流行的Java IDE——Eclipse、NetBeans和IntelliJ IDEA——都提供对编辑JavaScript源代码文件的支持。在写作这本书的时候,IDEA已经内置支持JavaScript源文件了,而Eclipse和NetBeans则以插件的形式提供了对JavaScript的支持。在本节中,你将看到如何为Eclipse和NetBeans安装并配置JavaScript插件。
2.1.1 JSEclipse
InterAKT提供的JSEclipse是最先进的JavaScript编辑器之一。JSEclipse是针对Eclipse开发平台的免费插件。它支持的功能有:代码完成、大纲浏览、错误报告、代码换行,等等。
多亏了Eclipse的插件架构,JSEclipse的安装非常简单。选择Help→Software Updates→Find and Install,打开Eclipse的插件安装向导。选择Search for new features to install并单击Next。
现在,Install窗口就应该出现了。单击New Remote Site按钮,并在弹出窗口的Name文本框中输入InterAKT Online,在URL文本框中输入http://www.interaktonline.com/,然后单击OK按钮。现在,安装窗口应该如图2-1所示,其列表中应该包含InterAKT Online。
需要注意的是,JSEclipse需要Java 1.5或更高版本。对余下的安装步骤统统单击Next就可完成JSEclipse的安装。之后,重新启动Eclipse,确保插件安装正确。

图2-1 把InterAKT Online添加为远程站点后的Eclipse Install窗口
安装好JSEclipse之后,就可以开始编写JavaScript了。JSEclipse把所有以.js为扩展名的文件都识别为JavaScript源文件。选择File→New→File,并输入一个以.js结尾的文件名,就可以创建一个新的JavaScript源文件。创建好新的JavaScript源文件后,就可以开始编写JavaScript代码了。
在JSEclipse中编辑JavaScript时,你首先会注意到的就是它所提供的JavaScript关键字突出显示功能。同样需要注意的是,Outline视图中会包含JavaScript代码的大纲,显示出源文件中定义的对象所包含的方法。
图2-2展示了在JSEclipse打开的JavaScript源文件。项目中有两个JavaScript文件:Department.js和Employee.js。在源代码编辑器中打开的是Employee.js文件。在窗口左端的Navigator面板中的JavaScript文件有它们自己的图标,当前打开的源代码的大纲被展示在窗口右端的Outline面板中。
JSEclipse能做的不仅仅是这些。就像之前讨论过的那样,一直以来最具生产力的功能之一就是智能代码完成。JSEclipse为用户自定义的JavaScript对象提供了智能代码完成功能。图2-3演示了这种代码完成功能。Department.js文件含有一个简单的函数用来创建Employee对象的一个实例。然后,可通过圆点符号获得这个对象的方法。当键入圆点符号时,JSEclipse会自动显示代码完成窗口。

图2-2 JSEclipse源代码编辑器

图2-3 JSEclipse提供对JavaScript对象的代码完成
JSEclipse也提供对内置的JavaScript对象的代码完成,如Date、String、document和window,等等。
JSEclipse还提供扩展其自带的代码完成功能的方法。可以编写一个简单的XML文件,在其中定义对某个类型的对象应该出现的代码完成列表。事实上,默认的JSEclipse发行版本就使用XML文件定义其对内置JavaScript对象的代码完成。代码清单2-1列出了object.xml文件的内容,这个文件就定义了对基本JavaScript对象的代码完成。
代码清单2-1 object.xml为基本JavaScript对象定义代码完成

这个object.xml文件放在JSEclipse安装目录的library目录中。在这个目录中,还可以找到定义了各种JavaScript对象的代码完成的XML文件。可以修改这些文件来满足你的需要。更妙的是,可以创建自己的XML文件,描述你已经编写好的JavaScript文件。可以为在你的组织中共享的JavaScirpt文件编写一组XML文件来提供代码完成功能。JSEclipse的帮助中给出了一个创建自定义的代码完成库的很好的例子。打开Eclipse的Help菜单并找到JSEclipse extending the code completion一节,就可以访问到这个教程。
JSEclipse是一款强大的JavaScript编辑器,它可以简化JavaScript的开发。随着Ajax和JavaScript变得越来越主流,开发工具会变得越来越完善,但是从目前来看,JSEclipse是JavaScript编辑器的不二之选。
2.1.2 NetBeans的JavaScript插件
在写作这本书的时候,NetBeans的最新版本5.0并不提供对JavaScript源文件的内置支持。不过,NetBeans的使用者和贡献者Nicolas Désy为NetBeans开发了一款支持JavaScript源文件编辑的插件。
这个插件的主页是www.liguorien.com/jseditor。在那里可以找到更多关于插件功能的信息,可以从那里下载到这个插件。
Nicolas说这个插件只不过是在NetBeans内置支持JavaScript源文件之前的权宜之计,并且不会对这个插件做进一步的开发。不过,这个插件确实为工作在NetBeans环境下的开发人员提供了一些不错的功能。
1. 安装
有两种方法可以安装这个NetBeans插件。第一种方法是把插件的主页注册为NetBeans的一个更新中心,并从那里安装插件。第二种方法是手动下载并安装插件模块。两种方法比较相似,这里我们将演示使用手动下载的文件来安装。
访问插件的主页,并单击指向NetBeans JavaScript Editor二进制版本的链接。这会下载该插件模块,该模块具有.nbm扩展名。
下载好插件模块之后,启动NetBeans并从Tools菜单中选择Update Center菜单。这会打开Update Center Wizard,该向导会引导你完成插件的安装过程。选择Install Manually Downloaded Modules单选按钮并单击Next。在下一个窗口中,单击Add按钮,并选择下载的.nbm文件。单击Next按钮。
下一个窗口展示了将要被安装的模块,如图2-4所示。其中,JavaScript editor应该已经被选中了。

图2-4 安装NetBeans JavaScript Editor插件
单击Next按钮并接受许可协议,然后在下载窗口中单击Next。在最后一个窗口中,选择Include复选框并单击Finish按钮,这样,安装就完成了。重新启动NetBeans,现在就可以使用这个JavaScript编辑器了。
2. 功能和用途
NetBeans JavaScript Editor把所有扩展名为.js的文件都识别为JavaScript源代码文件。通过选择File菜单中的New File菜单项然后选择JavaScript分类,就可以创建一个新的JavaScript源文件。编辑器支持突出显示所有JavaScript关键字的语法,以及突出显示配对的大括号和小括号,并提供标准的DOM对象(如document和window)的基本代码完成。使用组合键Ctrl+Space可以调用代码完成功能。
该JavaScript编辑器的一个最好的功能就是它会格式化JavaScript源文件。有多少冗长的JavaScript源文件是那样难以阅读,只是因为其糟糕的格式和缩进?在该JavaScript编辑器中,你可以通过组合键Ctrl+Shift+F重新格式化整个JavaScript源文件。
这个功能的实际效果如何呢?图2-5展示了一个格式和缩进都很糟糕的简单JavaScript文件。即使是这么小的一个文件,它也是难以阅读的,而且每次修改这个文件的时候都可能会产生错误。图2-6展示了使用组合键Ctrl+Shift+F调用JavaScript编辑器的格式化功能后的相同文件。

图2-5 格式糟糕的JavaScript难以阅读和维护
对于使用NetBeans开发Java应用的开发人员来说,NetBeans JavaScript Editor插件是一个很方便的工具。该插件安装简便,功能强大。一旦对JavaScript编辑的支持成为标准NetBeans发行版本的一部分,NetBeans对JavaScript开发的支持一定会得到完善。

图2-6 格式良好的JavaScript,这是使用NetBeans JavaScript Editor格式化的







