这是一本有关NetBeans富客户端应用程序开发的权威指南,内容涵盖了NetBeans 5.5和6.x版本,重点介绍了如何使用NetBeans平台作为框架,开发“一次编写,处处运行”的富客户端应用程序。旨在帮助读者掌握NetBeans模块的开发,精通NetBeans的主要API,以及学会一些构建可靠桌面软件的技术与技巧。 本书由三位顶级NetBeans专家联合编写,并由Sun中国的专家团队叶亮等人翻译和审校, 是中国读者不可多得的NetBeans学习用书,也是Sun中国技术社区推荐的NetBeans技术用书。
最初,代码都是用简单的基于文本的工具来编写的,如Notepad。出于讨论的目的,本书将“最初”定义为20世纪90年代中期,也就是Java刚刚开始流行的时候。结合一个文本编辑器和命令提示行一起使用,用户可以编写并编译代码。 很快,人们就觉得该方法并不能提供一个最为高效的开发环境。例如,如果在文本编辑器中产生了一个代码语法错误,那么该错误要到保存并编译文件时才能被发现,而在此之前没有其他的方法可以确定这个问题。然后,查看编译错误,在代码中定位出错的代码行,并试图确定错误的原因。编译错误在诊断代码中的问题时并不总是完全有帮助。 很多新的程序员最初都是使用Notepad加命令行的编程环境。该方法本身并没有任何错误,因为很多专业程序员仍然使用相同的方式。对于一个纯粹的Java初学者而言,使用一个普通的文本编辑器是最容易也是最快的方法。但是,文本编辑并不提供语言语法的帮助,也不会提供编译器集成、智能反向工程支持以及其他的编写代码的支持功能。 大多数文本编辑器处理中比较有用的一个特性就是“查找和替换”。通过这个简单的功能,程序员能够用一个单词替换某个单词或者短语的出现。这一点在一些情况下是有用的,但是也可能导致一些问题。假定创建了如下的类: public class SomeCode { public void myMethod1(String var) { String FirstName = var.toUpperCase(); // do something with FirstName } public void myMethod2(String var) { String FirstName = var.toLowerCase(); // do something else with FirstName } } SomeCode类包含两个方法:myMethod1和myMethod2。如果以后需要重命名myMethod1中的FirstName变量,就需要手动地编辑每一行代码来改变该方法名。显然,这是一个非常简单的例子。但是,如果myMethod1方法碰巧有数百行,并且FirstName在多个地方出现,那么手动编辑代码将花费大量的时间。也可以使用文本编辑器的“查找和替换”功能来用新的变量名快速替换所有出现的FirstName。但是,最初的改变需求仅仅指定了在myMethod1方法中的FirstName需要改变,而myMethod2中的该方法则不需要改变。使用查找和替换将会错误地替换所有myMethod1和myMethod2中出现的FirstName。当然,逐个替换出现的FirstName也是有可能的,但是这也是非常耗时的,并且可能人为出错。 许多文本编辑器都为编程语言提供了更好的支持。较为流行的、基于Unix的工具Emacs提供了很多有趣的特性,包括高级文本匹配和替换能力。通过安装插件,这些编辑器也可以提供Java语法强调、代码缩排、简单调试以及编译等支持。这些插件功能比较强大,但是这些编辑器仍然不能提供最灵活和高效的编程环境。 使用Emacs和文本编辑器的程序员问的第一个问题就是“为什么要使用IDE”。有些程序员往往都会依赖于一个特定的工具集或者编程语言,并拒绝做任何改变。在当今日新月异的世界中,程序员一个非常重要的能力就是适应新技术的发展。 新的工具集在很多方面都可以给专业的编程人员提供帮助。作为一个程序员,应该将时间花在编写代码、重写代码以及测试代码上,而不是将时间浪费在试图解决如何重命名代码中的方法名、生成工程文档、或者正确地编译一个包中的所有类上。一旦确定了所要执行的动作,工具将非常快地为您完成这些任务。 集成开发环境(IDE)为开发工作提供了一个完整的环境。它将不同的工具以一种关联的方式集成到了一起。因此所需要的服务和动作都无缝地集成到了一起。 IDE包含了很多的技术优点,如下所示: ● 执行动作的图形化用户界面(GUI) ● 将源代码和配置文件放入一个工程 ● 与编译器紧密集成 ● 与源代码库耦合 ● 性能调整、分析和加载测试代码的能力 ● 集成的可重用测试框架 ● 使用第三方插件和工具的能力 ● 通过一次执行一行代码来调试代码的能力 ● 快速访问工程文档和易于生成工程文档 另外一些使用IDE的非常实用的业务优点如下所示: ● 减少开发的周期时间 ● 提高代码的质量和可靠性 ● 标准化软件开发过程 ● 为编程人员提供一个通用的平台以减少培训时间 这些优点中有一些确实存在争议,并且有些可能需要通过仔细分析、实施和执行之后才能真正实现。虽然受多方面因素的影响,但就像前面举的例子一样,一个真正好用的Java IDE工具是取得重要进展的基础。 NetBeans是笔者对Java IDE的选择。笔者喜欢并使用NetBeans的理由有很多。笔者已经使用过很多开发工具,包括Notepad、TextPad、Emacs、vi、Macromedia UltraDeveloper、Macromedia Dreamweaver、Oracle JDeveloper、IntelliJ IDEA、Borland JBuilder、Microsoft Visual Studio和Eclipse。 这些工具都有其优缺点。它们都希望所有用户和整个团体以它们为中心。在不久的将来,要区分这些工具就非常困难了,因为它们提供了许多相似的特性。笔者过去一直在犹豫是采用IntelliJ IDEA还是采用Eclipse,但是在使用了NetBeans之后,发现NetBeans确实是一个不错的工具,其所有特性及功能都和所期望的一样,并且这些特性很少有或者根本没有配置问题。 编程人员愿意使用NetBeans而不是其他Java IDE的前10大理由包括如下方面,这些理由没有先后之分: 为Swing开发提供了直观且易于使用的Matisse GUI设计器:即使对Swing了解不多,甚至是一无所知,用户都可以立刻将元素拖拉到一个所见即所得(WYSIWYG)的设计窗口。Matisse GUI设计器实际上产生了真正的Swing代码,而不再是其他一些工具所创建的样本文件代码。在最近举办的JavaOne会议上,笔者坐在一个使用JBuilder GUI设计功能的绅士旁边,该绅士在看笔者使用了Matisse几分钟后,就完全被它征服了,并立刻下载了该GUI设计器。 强大的重构支持:这一点对于Jackpot引擎是非常真实的。该引擎允许使用一个类似于正则表达式的查询语言来实现Java类型感知的重构。该查询语言由James Gosling设计,非常容易使用,并允许实施模式匹配和替换。而且,这些查询可以测试,以匹配特定的Java类型或者对象实例。 最优秀的代码分析器之一:在众多代码分析器中,NetBeans Profiler是最好的一个。用户可以分析内存、CPU、性能以及监视线程。NetBeans 6 Profiler引入了分析点的概念。该Profiler可以绑定到一个当前运行的进程或者应用,也可以和当前运行进程或应用取消绑定。它还提供了32位和64位支持,并允许对Enterprise JavaBeans(EJB)模块以及企业应用进行分析。对于喜欢Mac系统的人员而言,它也支持分析Mac OS X Intel系统。 UML工程支持:为了对代码、进程步骤或者是设计模式进行建模,程序员可以创建统一建模语言(Unified Modeling Language,UML)工程。UML工程可以直接链接到Java工程。当用户创建并修改UML对象和UML图时,相应的Java代码将自动生成。如果在链接的Java工程中的源代码发生了改变,那么UML图也将自动地相应更新。由于具有导出UML图、生成代码以及创建基于Web的工程报告的能力,UML工程特性是NetBeans最好的特性之一。 集成Ant:在NetBeans中,Java工程是使用Ant构建文件来结构化的。当一个工程第一次被创建时,IDE生成该构建脚本和相应的目标。然后,用户可以触发特定的目标或者是完全自定义它们的构建文件结构以适应工程的需求。即使对于不熟悉Ant的用户而言,也不存在任何影响,因为Ant目标的执行直接链接到了NetBeans的菜单和按钮。许多用户也发现从外部工程中导入已有的构建文件将大大地加快软件开发的速度。对于初学者而言,它非常容易使用。对于专家而言,它非常容易实现自定义。 J2ME移动应用支持:即使没有进行过太多的移动应用开发,在查看一些示例,并阅读了介绍性指南后,就可以感受到NetBeans移动工具的能力,其所提供的示例应用令人深刻印象。由于支持Java 2 Micro Edition (J2ME) Mobile Information Device Profile (MIDP) 2.0,且提供可视化的移动设计器、无线连接向导以及无线的下载测试,移动应用开发人员具有一些很好的、功能很强大的工具。 开发人员协同工具:开发人员可以登录到一个公开或者私有的环境,以共享代码。也可以加入一些公开会话,或者启动带有一些限制的私有会话。现在所能看到的最好的特性是能够将代码或者是整个工程拖到聊天窗口,并和一个或者多个程序员共享代码。NetBeans支持多用户团队编码。当某个用户开始改变一个代码块时,该代码块被突出显示,并被锁定以和其他用户进行共享。在目前的全球经济环境下,开发团队散布在多个不同地方,因此该工具非常有用。 易用的Update Center:NetBeans Update Center允许快速地选择从哪个发布站点来检查改变、更新以及创新的模块。也可以选择安装之前下载尚未安装的模块。Update Center比其他Java IDE的更新工具更加直观,并使得更新NetBeans更加方便。 固有的JSP和Tomcat支持:NetBeans包含了Apache Tomcat。只要使用了New Project向导来创建Web应用工程,就可以创建JavaServer Pages(JSP)文件。然后可以右击任意JSP文件并选择Run File。绑定的Tomcat服务器立即就会启动,默认的Internet浏览器将打开,并且在Tomcat中执行的JSP文件将会显示。NetBeans甚至具有足够智能,可以激活HTTP Monitor。 NetBeans HTTP Monitor:在参与了很多Web相关的Java开发后,笔者认为这是目前市面上所有Java IDE中最好的,也是独一无二的特性。HTTP Monitor在调试或者执行Web应用时能够被激活。该工具允许监视请求、HTTP请求头、Cookies、会话、servlet场景以及客户端/服务器参数。并且也不再需要编写服务器端代码来读取这些变量,将变量输出到日志,并查看该日志文件。在NetBeans中,可以调试代码、逐行运行代码,并监视所需要监视的属性。 这些特性仅仅是NetBeans所提供特性的一部分。其他Java IDE可能也提供了这里所描述的一些功能,但是没有哪个Java IDE能够提供NetBeans IDE所提供的直观的界面和集成工具集。为了学习NetBeans所提供的所有功能,请继续阅读本书的其他章节。 本书将重点讨论NetBeans IDE 6所提供的一些新特性。当学习NetBeans时,可以重点学习某些类型的技术和领域。在最新的发行版本中,开发人员已经可以访问一些令人印象深刻的新特性了,包括如下特性,但并不限于此: ● 一个新的、改进过的Source Editor ● 改进的重构能力 ● 改进的代码补全 ● 经过全面改进的Profiler,包括分析点和HeapWalker ● Maven支持 ● JUnit 4支持 ● Ruby和JRuby支持 本书适用于各个层次的开发人员。不管是NetBeans的新手,或者是初级的程序员,还是具有丰富经验的资深程序员,都会发现本书将提供各个特性的直接解释以及简单示例。本书还重点介绍了NetBeans的一些核心特性以为专业的软件开发人员提供帮助,如Ant、JUnit、CVS、Subversion以及一些静态分析工具等。 笔者的个人网站提供了大量信息,包含Java和NetBeans的新闻、文章和指南等。该站点还包含本书的更新、修改以及勘误。如果您有任何问题或者想提供反馈的话,可以发送电子邮件到wkservice@vip.163.com。