序 Preface
今天本书终于完稿,看着自己历时近一年的工作,不禁思绪万千。在与Sun公司的一位朋友聊天时,他提到了Sun公司想出版一本关于NetBeans的书。我碰巧一直在使用NetBeans,而且国内当时尚无专门关于NetBeans的书。出于好胜之心(也的确低估了其中的工作量),我就答应了下来。
在开始写作后,才发现确实不是一件轻松的活。为了能够写好这本书,从书的结构到内容安排,都经过了精心的策划。在和Sun公司的工程师反复商议后,才定下来了大致的框架和结构。在内容上,每章都经过了多次的审阅和修改。这样以来,进度就自然不会快了,再加上俗务缠身,只有晚上才能静下心来写上一些内容。因此导致了本书大约历时一年。说实话,在这一年中,我有好几次打算放弃。要不是答应了Sun公司的朋友以及出版社的胡辛征老师,必须履行诺言,而且我也认为这是一次很好的学习过程,否则本书就不能问世了。还好,总算坚持了下来。这里,要非常感谢Sun公司的工程师以及出版社老师们的宽容和忍耐,并没有在时间上太催促我。
在写序的时候,又想起了出版社胡辛征老师对我提出的要求,要尽量“活泼”一些,不要墨守成规。工科出身的我,国文的学习只到高中就打住了。以后的十多年中,我把大部分时间花在了“背英文单词→考试→忘记→背英文单词……”的不停循环中。国文的使用,基本上就限于发发邮件而已,而且还是借助于拼音输入法。现在不说提笔忘字吧,也差不了多少了。要像写散文一样写序,可真是让我头痛。不过再困难,工作还得干,毕竟这稿件历时一年多,就差这最后一笔了。于是乎,就出了这篇攒鸡毛凑掸子的序了。还希望大家不要笑话我这三脚猫的国文水平。
逐鹿中原
自从Java语言变得越来越热门,成为可以和微软的.NET分庭抗礼一门主要开发语言后,Java开发工具的市场也成了诸多公司眼中的大蛋糕。于是乎,群雄纷起,开始逐鹿中原。除了本书中介绍的NetBeans以外,还有如下几路英雄。
西楚霸王:JBuilder
在进行角逐的各种势力中,有我们非常熟悉的Borland(www.borland.com)的JBuilder。曾记得在大学二年级学习C语言时,使用的就是Borland的Turbo C集成开发环境与DOS操作系统。那个时候在学校机房中,使用1.2MB的软盘和Turbo C开发出了一个中国象棋打谱和管理程序。后来,Windows逐渐成为主流,Borland又推出了Delphi开发环境。我就从Turbo C转移到了Delphi。从Delphi 2.0开始一直到Delphi 7.0,我一直都是Delphi的忠实用户。我也曾为Delphi出版过两本书。在寻找Java开发工具时,由于对Borland的情结,很自然地就会首选JBuilder作为开发工具。我想,有我这样因为Borland情结而选择JBuilder的开发人员不在少数。再加上JBuilder推出的时间比较早,这也就使得JBuilder很快就占领了Java开发工具的市场,成为这个领域的霸主,长期占有最大的市场份额。
水泊梁山:JDeveloper
JDeveloper是数据库领域的老大Oracle公司开发的一个Java集成开发环境。Oracle希望将Java的部署与开发能力集成到其整个企业级软件产品线之中,JDeveloper被优化用于同Oracle应用和数据库服务器紧密集成,同时它还是一个纯3GLJava编程环境。JDeveloper还是一个开发的开发工具,利用JDeveloper建立的Java部件可以部署在任何客户、Web服务器、应用服务器、数据服务器中。
嵩山少林:Visual Cafe for Java
Visual Cafe for Java是Symantec(赛门铁克)公司于1996年推出的第一个适合于Java语言的完整的快速应用开发RAD(Rapid Application Development)环境。Visual Cafe for Java类似于Delphi开发工具,是Java语言可视化快速的集成开发环境,具有图形化用户界面编译器。Visual Cafe for Java凭借其“七十二绝技”,几乎囊括了所有Java开发工具的大奖。
南帝:Visual Age for Java
Visual Age for Java最早诞生于IBM公司在美国卡罗莱纳州北部的Cary(卡里)开发实验室。由于IBM公司的缘故,Visual Age for Java从一出生就带着雍容华贵的帝王气质,它不仅支持与WebSphere的集成开发、EJB的开发应用等,还可以支持利用CICS连接遗传大型机应用。
Visual Age for Java被包含在了IBM著名的Web服务器WebSphere Studio套件中。凭借其成名绝技六脉神剑(WebSphere)与一阳指(Visual Age for Java),足以令IBM纵横Java与Web开发领域。
神雕大侠:IntelliJ IDEA
IntelliJ IDEA是JetBrains公司(http://www.jetbrains.com/)开发的一个Java开发工具。虽然是Java开发工具领域的一个较新的成员,但是其功力一点也不逊于其他老前辈。IntelliJ IDEA支持许多新的特性,包括对Java EE的支持、Spring框架、Hibernate代码分析、扩展版本控制支持、Rational ClearCase集成、动态语言支持(例如Groovy、Ruby、JRuby等)、插件开发、团队协作等。
瓦岗英雄:WebLogic Workshop
WebLogic Workshop是EBA公司(www.eba.com)推出的一款能够在BEA WebLogic服务器上迅速构建、测试和部署面向服务的企业级应用的开发工具。WebLogic Workshop是一个统一、简化、可扩展的开发环境,开发人员可以快速、简单地开发出符合客户需要的Web服务。同时,WebLogic Workshop还提供了对Web服务的异步调用和回调等先进技术的支持。
令狐冲:Eclipse
Eclipse最初由IBM开发,并在2001年11月向开源社区开放了全部的源代码,由此变为一个开放源代码的Java开发工具。在Eclipse开放源代码后(www.eclipse.org),得到了高速的发展,不但功能上得到了大大的提高,而且市场份额也与日俱增,大有问鼎天下之势。
Eclipse和Visual Age for Java都是IBM公司开发的,那IBM为什么要开发两个Java的工具呢?原来,Visual Age for Java和WebSphere Studio集成到一起时会有一些问题和限制,试想把六脉神剑和一阳指拼在一起使用,难免会有问题,不走火入魔已经很不错了。于是,IBM又“悟”出了又一门神功——独孤九剑。
本来Eclipse就身出名门,是天生的练武坯子。又加上一大批武林帮派支持,于是便如日中天,大有一统江湖的趋势。看看Eclipse基金会的战略成员,你就知道人家为什么能在那么短的时间内练就傲视群雄的武功了(篇幅有限,只举几个大家比较熟悉的):
● Borland
● CA
● IBM
● Intel
● Motorola
● Nokia
● Orcale
● Sybase
目前Eclipse、NetBeans等争夺武林盟主的战斗仍在激烈地进行着,鹿死谁手言之尚早。
老顽童:Sun Java Studio & JCreator
如果说NetBeans是中神通王重阳的话,那么Sun Java Studio和JCreator就是老顽童。它们不但都是出身一门——全真教(Sun公司),功力路数也同出一辙(Sun Java Studio和JCreator都是基于NetBeans平台的)——都会使用九阴真经。
三分天下
JBuilder的霸主地位是随着Eclipse和NetBeans等源代码开放的、免费的Java开发工具的兴起而逐渐丧失的。Java开发工具的市场也逐渐变为JBuilder、Eclipse和NetBeans三足鼎立。下面的表格中是几个Java开发工具的参考报价,可以看出每个开发工具都价格不菲。
对于企业和个人开发者而言,除非特殊开发需求,都会自然地倾向于使用免费的开发工具。Eclipse和NetBeans支持的功能逐渐增加和增强,其功能上与商业版的Java开发工具已没有大的区别,甚至有些支持的功能还大大超过商业开发工具。在这种情况下,用户的流失是可以预测的必然结果。就像两个高手过招,人家的内力源源不断,而自己的内力消耗一分就少一分,那么随着时间的流逝,结果也就显而易见。
九阴真经VS独孤九剑
随着JBuilder的兵败乌江,占有市场份额的最大的开发工具变为Eclipse和NetBeans。NetBeans近几年的快速崛起,不断地挑战着Eclipse的市场份额。两强终于要进行华山论剑,决战于紫禁之巅。
我想大家已经读过很多对Eclipse和NetBeans进行比较的文章,因此这里不再重复地对这些内容进行引述。本文只想给出我个人对于选择Java开发工具的观点,以期抛砖引玉。
我经常会被人问到:“进行Java程序开发,使用什么开发工具好呢?”这使我想起早些国内流行自己买散件组装PC的时候,经常有人问我:“我们家想装一个电脑,你说什么配置好呢?”这两个看似不相关的问题,其实却有同一个答案,即“你想要用它来干什么”。无论Java开发工具也好,PC机也好,都是一个要使用的工具,因此在选择工具的时候你首先要清楚自己打算用它来干什么。再说得专业点,你得明白你的需求是什么。例如你打算进行图像处理,那么就需要高档的图形加速卡和大屏幕的显示器;如果你打算玩音乐,那么就需要配置高档的声卡;如果你打算进行程序开发,就需用使用快速的CPU并增加内存的容量;如果只是进行文字处理,那么就把配置降低,尽量节省Money。
回到Java工具的选择上,我想任何一个工具都有其擅长的地方和不足的地方(相对于其他开发工具)。试想,如果你选择的工具无论其他功能上多么的优秀,但是在你要使用的那部分却不能帮助你,那这个工具对你有多么大的意义呢?因此,我的观点是,选择Java开发工具是一个仁者见仁、智者见智的事情,主要可以有如下两个考量点:
① 你要用这个开发工具来干什么?
② 你重视的性能或者功能是哪些?
对于第一个考量点,你要首先弄清楚开发中的几个大的分类。这个分类也有不同的分法,例如按照NetBeans下载时候分的开发包可以分为:
● Java SE桌面程序开发
● Java EE和Web应用程序开发
● SOA
● Java ME手机应用程序开发
● NetBeans插件开发
● C/C++开发等
按照技术点来划分,又可以分为:
● 数据库开发
● JSP开发
● AJAX开发
● Struts开发
● Spring开发
● EJB开发等
在弄清楚自己的需求后,就需要集中在一个领域中进行比较。至于其他的领域,这个工具即使再优秀也与你无关了。
在某一个领域进行比较的时候,你还得弄清楚你的第二个考量点,即你侧重哪些方面的性能/功能。我想大家都清楚,任何一个工具都不是十全十美的,即使在一个小的领域中,它也是有侧重的。如果它在功能上比较齐全,就可能在速度上受到影响。进行选择的时候,你需要弄清楚你看重哪些,可以忽略哪些。整体上来讲,可以有如下几个常用的主观因素。
● 功能/性能因素:是否有你需要的功能,该工具是否有你在意的bug等。
● 兼容性因素:是否和其他可能使用的工具兼容,例如Web服务器等。
● 速度因素:工具的运行速度是否符合你的要求。
● 汉化程度因素:如果你对英文不太习惯,那么汉化程序将可能变得非常重要。
● 易用性因素:是否使用起来比较简便,比较顺手。
需要注意的是,以上都是一些主观因素。每个人可能需求的功能不一样,每个人对于易用性的理解也不相同。在选择工具的时候,建议读者多试几个工具,只有通过自己的比较才能得到确切的数据,不要人云亦云。例如就拿易用性因素来说,不管别人介绍使用起来如何简单方便,那些不一定会趁自己的手。
为了让读者更容易理解,我就拿我选择Java ME开发工具来举例子,进行具体的说明。下面介绍的内容,仅代表个人观点,如果不符合你的想法,请不要较真。
在最早选择Java ME开发工具的时候,由于Borland情结,我首先考虑的是JBuilder。但是不久就放弃了,而选择使用Eclipse和NetBeans。理由很简单,这两个工具在功能上一点也不逊于JBuilder,而且是免费的。
至于NetBeans和Eclipse,两个工具我都一直在使用。我的另外一本书《Java ME使用详解——用Eclipse进行移动开发》(电子工业出版社),就是使用Eclipse进行开发的。但是就我个人而言,如果没有其他特别原因,我会首选使用NetBeans。我是基于以下原因进行选择的。
1.功能/性能因素
这是我最看重的因素之一,占比重最大。NetBeans提供了可视化的设计界面,通过拖曳可以完成程序的开发。虽然大多数时候,我还是选择了传统的逐行编写Code的方式,这个功能并不经常使用,但是偶尔需要快速创建一个测试程序的时候,我会选择使用这个功能。这个功能被我看做是不可缺少的一个功能。Eclipse需要安装EclipseME插件后才能进行Java ME程序开发,并且不能进行可视化的开发,这是Eclipse失分的一个地方。
NetBeans 6.0中提供了一个可视化的游戏设计器,这也是我喜欢的一个功能。相对于Eclipse这个功能的缺失,NetBeans又从这里赚了不少的分。
2.兼容性因素
这是对我来说最重要的一个考虑因素。Eclipse在这个方面做得就不太好。EclipseME和摩托罗拉的一些手机模拟器就有兼容性问题,在EclipseME中导入摩托罗拉模拟器时会丢失一些模拟器。但是当使用NetBeans进行导入时,所有的模拟器都可以导入。
3.速度因素
如果对比Eclipse和具有全部功能的NetBeans的启动速度,会发现Eclipse比NetBeans快一些。在这个因素上,我个人认为Eclipse是得分的。但是需要提醒读者的是,这个对比有一定的局限性和主观性,因为这个对比的起始条件是不对等的。即使对于同一个软件,支持10个功能的速度,显然要比支持8个功能的速度要慢些。笔者曾经试过,下载并安装支持Java SE和Java ME的安装包,然后再卸载掉一些不使用的模块,速度显然大大提高。不知道有没有人试过让两个工具都只支持N个功能,然后看看其启动和运行速度?这确实是我一直想知道的结果。
相对于功能和兼容性因素来说,速度因素我不太重视,因为大多数情况下,我电脑的配置都比较高档一些,这个因素对我进行程序开发几乎没有影响。还有些人说NetBeans占有的内存比Eclipse多,这个因素我也选择了忽略,因为我机器的内存足够大,这个因素对我几乎没有影响。
客观地说,NetBeans 6.0比NetBeans 5.0慢了一些,因此这里建议NetBeans开发社区把速度因素多考虑一些,当然功能多且速度快是最理想的了。如果NetBeans变得越来越慢,那势必会影响到很多人来选择NetBeans。
4.汉化程度因素
Eclipse的汉化做得有些不如NetBeans,需要单独下载并安装语言包。从汉化的程度上来说也并不如NetBeans彻底。虽然我能够轻松地使用英文版界面工具,并顺利地阅读技术文档,但是我还是偏重于使用中文。就像移居到美国的大多数中国人一样,尽管遍地都是印度、意大利、墨西哥菜,但仍然保留以中餐为首选的习惯。
国内的有些程序员,选择非英文的书不看。(因为国内的计算机书太烂了?)我只是在找不到中文资料的情况下,才去查找英文资料。因为,毕竟从小阅读几乎全部的金庸和古龙先生作品练就的阅读速度,是仅读过几本英文名著(还是靠字典的帮忙)的阅读速度不可比的。
在这个方面,我是给NetBeans加分的,也希望它们继续努力!
5.易用性因素
就我个人来讲,我不太喜欢Eclipse的项目组织方式,我更倾向于NetBeans的项目管理方式。在NetBeans中打开一个项目后,只需要按下F6键,就可以在模拟器上运行这个项目。而在Eclipse中,你还得先打开“运行”对话框,新建或者修改一个配置以后,才能运行这个项目。尽管这个配置过程只需要一次,但是当你经常打开/关闭项目的时候,就会发现这个很烦琐。
在NetBeans中,MIDlet的JAR和JAD文件都是自动被创建的。在Eclipse中要创建JAR和JAD文件,需要每次在“包资源管理器”窗口中右键单击项目根节点,选择弹出菜单中的J2ME→Create Package才能完成。如果你需要不停地修改代码,然后把JAR和JAD文件安装到手机上进行测试,那么你就会发现这个过程在Eclipse会让你感到很厌烦。
如果想清理一个项目,在NetBeans中只要在“项目”窗口中右键单击项目根节点,选择“清理”命令即可。在Eclipse中则要选择“项目”→“清理”命令,打开“清理”对话框。然后在这个对话框中选择“清理所有项目”还是“清理下面所选的项目”(如果选择这个选项,还要在下面通过复选框选择要被清理的项目)。这个过程也时常让我感到很不舒服。
以上都是我个人在使用过程中发现的对于我适用的易用性因素。
6.其他因素
其他因素是我认为可以忽略的因素。例如有些文章上说Eclipse内核采用的是OSGi R4内核框架规范,因此具有高度的可扩展性,这个框架如何先进等。我个人认为这不是我关心的内容,这应该是开发Java工具的人来关心的内容。我不管工具的将来如何,现在能不能方便地开发出Java ME程序才是我最优先考虑的(黑猫还是白猫,抓住老鼠就是好猫)。
还有些文章中说Eclipse因为采用的是SWT库,因此界面比NetBeans漂亮,这个也是我选择忽略的因素。
沙场秋点兵
本书的学习流程图
本书共分为5 篇,其中第一篇为标准开发环境,主要讲解NetBeans的基本开发环境,在NetBeans中开发、调试标准Java SE的方法。这部分内容是其他部分内容的基础,因此必须认真掌握。
第一篇 标准开发环境
第二篇为NetBeans高级应用,这部分主要讲解Web开发、Java EE开发、UML建模、JUnit测试等技术,为本书的重点部分。
第二篇 NetBeans高级应用
第三篇为手机开发篇,主要讲解如何使用NetBeans进行Java ME应用程序的开发,对于不进行Java ME开发的人员,可以跳过本篇。
第三篇 NetBeans手机开发
第四篇为NetBeans组件开发,这里大概介绍了简单的插件模块开发方法和富客户端程序的开发方法。
第四篇 NetBeans组件开发
第五篇为NetBeans开发C++程序篇,主要讲解如何在NetBeans中开发C/C++程序。
第五篇C/C++程序开发
本书包括的内容
第一篇 标准开发环境
第二篇 NetBeans高级应用
第三篇 NetBeans手机开发
第四篇 NetBeans组件开发
第五篇 NetBeans开发C++程序
和其他书籍相比,本书有何特点
① 本书为Sun公司指定NetBeans官方用书,书的出版和推广都得到了Sun公司的官方支持。书中的内容也得到了Sun公司的确认和支持。
② 内容广泛、技术新颖:从内容上来讲,覆盖了Java程序开发的标准应用程序开发、Java EE和Web开发、Java ME开发、模块开发,以及非Java技术的C/C++开发。从技术上来讲,都是一些前沿的技术,例如Struts程序开发、JSF程序开发、AJAX程序开发、SOA开发、Web服务、UML建模、JUnit测试,Profiler性能分析、版本控制等。
③ 知识与实例密切结合:为了能使读者迅速理解书中的每个知识点,在每章介绍技术的同时,穿插着具体的实例。这些实例都是作者精心设计的,力争说明该章节的每个技术点,使读者在实践中理解知识。
④ 例子的纵向联系:本书还注意了例子的纵向联系,即一个例子使用不同的技术来实现,这样读者不但在学习这部分知识的时候可以快速理解,而且还能与其他技术进行纵向比较以加深理解。
⑤ 配带代码光盘,加速学习:本书示例中的所有源代码都可以在随书光盘中找到,根据相应的程序说明,读者可以基于书中的讲解并借助代码进行同步学习。
本书超值光盘和实例分布
1.本书实例源文件
包括本书涉及的所有源文件,读者可以在学习的过程中,直接将其复制到开发环境中,提高学习效率。
操作系统:Windows 2000及其以上版本
开发环境:JDK 6.0、NetBeans 6.0简体中文版
数据库:Java DB数据库
服务器:Tomcat、GlassFish
2.实例分布表
适合阅读本书的读者
本书的5个部分按照由独立讲解到结合应用的顺序,使读者可以先各自了解每个技术的知识,然后再结合实现程序的开发。本书第一篇为基础篇,其中部分内容必须掌握。其他各篇的学习,读者可以根据自身的技术背景来进行选择。例如希望进行Web开发,则要阅读第二篇的内容;进行Java ME手机开发则选择阅读第三篇的内容。
书中内容安排由浅入深,非常适合希望使用NetBeans工具进行开发的读者。本书也可以作为编程开发的参考工具书使用。
致谢
最后,衷心地感谢Sun中文技术社区的蒋清野经理、叶亮以及其他参与本书审阅的Sun公司的工程师。他们都非常认真地审阅了本书的内容,并提出了非常具体的修改意见和建议。没有他们作为后盾,这本书是不可能面世的。另外,还要感谢出版社的胡辛征老师,在进度一再落后的情况下,他一直在鼓励我。对他长久以来的支持,这里表示衷心的感谢。这里还要感谢出版社的江立老师,她帮助我发现并改正了很多的错误。
仅以此书献与我所深爱的家人、妻子和我可爱的女儿,他们是我奋斗不息的力量源泉。同时感谢所有关心我、爱护我的朋友们!
刘斌
2008年3月6日于美国硅谷
“终于要交付印刷了,脑海中忽然有很多事涌出来,很想说点什么……
……
谢谢刘斌!谢谢John!”
本书策划
2008年4月18日于办公室灯光下