审校者序
2004年4月,我正在欧洲进行技术访问,湖南移动的老权打来电话,说家乡几位青年学子应清华大学出版社之邀正在翻译一本Java经典图书,希望能够找位资深人士对其进行审校。尽管我本人是技术出身,在通信行业工作二十余年,对Java等前沿技术有着浓厚的兴趣,但是此事关系重大马虎不得,因此没有应允。回国之后,小邓态度诚恳地多次联系,我便只好勉为其难,抽时间和几位助手一起审校了整个稿件。翻译初稿质量相当不错,修改工作其实不多。历时几个月的辛苦,终于就要付梓了,出版社又邀我写点想法。以我们的看法,Java远远不只是一种语言本身,它代表的是一种全新的理念。它使得各种机型的设备都可以使用同一种语言来对话,而无需过多考虑设备本身的特性。就手机而言,Java能使手机提供更多的智能服务和互动服务,比如动态产生个性化的股市服务,图形动画、实时路况、报告报表、数字照片、在线游戏等。尽管语音业务在移动通信运营商业务收入中的主导地位在短时间内仍不可撼动,但数据业务的增长速度使所有的移动通信运营商都意识到,数据业务将是未来赢利的主力军。Java为电信运营商带来全新商业模式,同时为内容和应用服务提供商也带来创新的契机。Java技术有效地解决了手机使用者、网络运营商、软件开发商和内容提供者四者之间在移动服务上的整合和统一,从而将高速、智能、低成本的增值应用服务推向大众市场,把信息、通信、网络、视频、娱乐等各领域有效地集成为一体。 中国移动王晓初董事长对中国移动企业核心竞争力的理解是“专注,把移动业务做精”,在这一理念下,中国移动一直对Java的技术发展和业务应用给予密切关注。早在2003年2月15日,中国移动在“移动梦网”中就开始了大范围的K-Java应用测试。并于当年4月8日,将K-Java服务命名为“百宝箱”全面开始试用。7月1日,“百宝箱”正式商用,再次巩固了中国移动在移动通信领域的专家品质,Java技术也从此在中国开始了其移动电信运营商用之旅。感谢清华大学出版社及时引入了本书,相信必然对中国的Java普及和进阶起到很好的作用。感谢邓劲生及其同事辛勤的劳动,使得本书以流畅的中文奉献给大家。特在此为序,倍感欣喜。中国移动通信集团公司数据部部长        
2004年7月
前 言 1991年,Sun Microsystems公司的James Gosling、Patrick Naughton、Chris Warth、Ed Frank以及Mike Sheridan一起开始研究一种新的计算机语言,这种语言最后撼动了传统编程的基础。起初,这种语言被命名为Oak,到1995年正式命名为Java。 Java在两个方面改变了编程的过程。第一,Java集成了有利于编制Internet程序的特性。因此,Java是世界上第一个真正为Internet准备的语言。第二,Java发展了计算机语言的精髓。例如,它重新定义了对象、改进了异常处理、完全集成了多线程,并且创造了一种可以运行于多种不同平台之上的可移植对象代码—— 字节码。 因此,Java的重要性体现在两点:对Internet的内嵌支持和对计算机语言发展的推动。这两点中的任何一点都足以使Java成为一种出色的语言;但是只有将这两点成功地结合起来,Java才能成为一种伟大的语言,才能确定它在计算机历史中的地位。 本书揭示了Java之所以成为一种伟大语言的原因。 内容介绍 本书不同于其他介绍Java的书。其他的书多半介绍Java语言的基础知识,但本书揭示的是如何将Java应用于计算领域中最为有趣和实用(有时还是神秘)的编程任务中。书中充分展示了Java语言的强大性、多样性和优美性,从而展现了Java编程设计的艺术性。 也许有些读者希望某些应用程序与Internet直接相关,例如第4章中介绍的下载管理器、或者第5章中介绍的E-mail客户端。然而,许多章节介绍的代码与Internet并无联系。例如,第3章中的语言解释器、或者第10章的基于AI的搜索方法,它们都是所谓“纯代码”的例子。这些程序都不依赖于Internet,也不使用GUI界面。在过去的C++程序中能够找到这种类型的代码。用Java编写这种代码更为简单,因此也显示了Java语言的多样性和便捷性。 各章给出的代码可以直接运行,无需修改。例如,第2章的表达式解析器可以放在许多应用程序中。但是,只有当你把这些程序作为自行开发的起点时,才会真正受益。例如,第7章介绍的Web搜索程序可用于Web站点存档,或者检查站点中的断链。一般而言,可以将这些不同的程序和子系统视为自己的项目的基础。 需要用到的Java知识 本书假定读者已经拥有坚实的Java语言基础。读者应当能够创建、编译和运行Java程序。读者应该能够使用最常用的Java API,能够处理异常,并能够创建多线程程序。因此,本书假定读者应当具有基础的Java技能。 如果希望重温或者增强Java基础知识,笔者在此推荐下面两本书: ● 《Java 2: A Beginner’s Guide》 ● 《Java 2: The Complete Reference》 它们都由McGraw-Hill/Osborne出版社出版。 团队合作 笔者已经从事编程方面的写作多年,因此现在极少与人合著。但是,这本书多少是个例外。由于一个非常令人意外、但是却令人高兴的变故,笔者有幸能够与计算领域最优秀的天才之一James Holmes合作写书。James是一位杰出的程序员,他已获得众多重要荣誉,包括成为Oracle的年度Java开发者和成为Jarkarta Struts项目的合作者。由于James在Web编程领域拥有独特的知识和丰富的经验,如果他能为本书编写几章,那将是非常好的一件事—— 幸运的是,笔者最终说服他这样做了。因此,James编写了囊括大多数Internet应用的章节:第4章、第5章、第6章和第7章。他的付出为这本书的成功做出了极大的贡献。现在James正在编写一本深入介绍struts的书,书名叫《Struts: The Complete Reference》,已经于2003年底完成初稿。 提供源代码下载 请记住,站点免费提供本书中所有例子和项目的源代码。 其他著作 除了本书以外,笔者还编写了3本与Java有关的图书,分别是《Java 2: The Complete Reference》、《Java 2: A Beginner’s Guide》和《Java 2: Programmer’s Reference》,欢迎大家阅读。 Herbert Schildt