畅销书《Java in a Nutshell》的作者精心打造了这样一本实战型Java图书,全书都围绕着真实世界Java编程实例展开,你将从中获益多多。如果你更倾向于“通过例子”来学习,那么这本书正是你的首选。\r\n 全新的第三版涵盖了Java 1.4,并收入了193个完整的实战示例,其中包括超过21900行认真编写并作了详尽注释的Java代码,在此涉及20个不同的客户端和服务器端API。有关XML和servlet的章节已经重写,以涵盖相应规范的最新版本,并展示对于Java 1.4的最佳实践。书中还增加和更新了一些实例,以展示其他一些新的Java特性和API。\r\n 本书是《Java in a Nutshell》、《Java Foundation Classes in a Nutshell》和《Java Enterprise in a Nutshell》的姊妹篇,它与这几本速查手册相得益彰,填补了它们的不足,为Java编程新手和专家们提供了大量实例。本书并不局限于文字介绍,而是通过提供得到充分注释的实用示例并辅以简洁的解释,来让你放手实践以学习和探索Java及其API。\r\n 本书包括展示以下内容的实例:\r\n ·核心API,包括I/O、New I/O、线程、网络、安全、串行化和反射\r\n ·桌面API,强调了Swing GUI、Java 2D图形、首选项、打印、拖放、JavaBeans、applet和声音\r\n ·企业API,包括JDBC(数据库访问)、JAXP(XML解析和转换)、Servlets 2.4、JSP 2.0 (JavaServerPages)和RMI。\r\n 本书先从展示结构化和面向对象编程技术的实例人手,可以作为Java编程新手的敲门砖。书中最后还提供了一个特殊的索引,利用这个索引可以很容易地查到使用一个特定Java类或完成某项特定任务的实例。每章都配有相关练习,可以让读者进一步探索并尽享学习的快乐。 \r\n\r\n\r\n\r\n作者简介\r\n David Flanagan是一个醉心于Java写作的计算机程序员,他的大部分时间都致力于编写Java相关图书。他的O''Reilly出版的其他畅销书还包括《Java in a Nutshell》、《Java Foundation Classes in a Nutshell》、《Java Enterprise in a Nuthsell》等。David在麻省理工学院获得了计算机科学与工程学位。他生活在地处西雅衅和温哥华之间的美国太平洋西北海岸。
前言\r\n第一部分 Java入门\r\n 第一章 Java基础知识\r\n Hello World\r\n FizzBuzz\r\n 斐波那契序列\r\n 使用命令行参数\r\n 反向回应\r\n FizzBuzz分支切换\r\n 计算阶乘\r\n 递归阶乘\r\n 缓存阶乘\r\n 计算大阶乘\r\n 处理异常\r\n 交互式输入\r\n 使用StringBuffer\r\n 数字排序\r\n 计算质数\r\n 练习\r\n 第二章 对象、类和接口\r\n Rectangle类\r\n 测试 Rect类\r\n Rect的一个子类\r\n 另一个子类\r\n 复数\r\n 计算统计数\r\n 一个整数列表\r\n 文本词法分析\r\n 练习\r\n第二部分 核心Java API\r\n 第三章 输入/输出\r\n 文件和流\r\n 处理文件\r\n 复制文件内容\r\n 读取和显示文本文件\r\n 列出目录和文件信息\r\n 压缩文件和目录\r\n 过滤字符流\r\n 字符流词法分析\r\n 文件随机存取\r\n 练习\r\n 第四章 线程\r\n 线程基础知识\r\n 线程安全类\r\n 线程和线程组\r\n 死锁\r\n 定时器\r\n 练习\r\n 第五章 网络\r\n 下载URL的内容\r\n 使用URLConnection\r\n 通过URLConnection发送Email\r\n 一个简单的网络客户\r\n 一个通用客户\r\n 一个HTTP客户\r\n 一个POP客户\r\n 一个简单的Web服务器\r\n 一个代理服务器\r\n 一个通用多线程服务器\r\n 发送数据报\r\n 接收数据报\r\n 练习\r\n 第六章 New I/O\r\n 锁定文件\r\n 复制文件\r\n 正则表达式和字符解码\r\n 用缓冲区完成文件复制\r\n 字节到字符高级转换\r\n 字节缓冲区词法分析\r\n 一个简单的HTTP客户\r\n Daytime服务\r\n 一个多路复用服务器\r\n 一个多路复用网络客户\r\n 练习\r\n 第七章 安全和密码系统\r\n 第八章 国际化\r\n 第九章 反射\r\n 第十章 对象串行化\r\n第三部分 桌面Java API\r\n 第十一章 图形用户界面\r\n 第十二章 图形\r\n 第十三章 打印\r\n 第十四章 数据传输\r\n 第十五章 JavaBeans\r\n 第十六章 Applet\r\n 第十七章 声音\r\n第四部分 企业Java API\r\n 第十八章 利用SQL完成数据库访问\r\n 第十九章 XML\r\n 第二十章 servlet与JSP\r\n 第二十一章 远程方法调用\r\n 第二十二章 示例索引\r\n索引
本书可以作为我以前几部作品《Java in a Nutshell》. 《Java Foundation Classes in a Nutshell》和《Java Enterprise in a Nutshell》的姊妹篇. 这几本书本身都是速查手册, 尽管其中涉及各个JavaTM编程主题时也包括了一些精益求精的介绍和示例代码, 但这些代码通常是以程序片段的形式给出的. 之所以要写本书就是为了弥补这些书的不足, 而提供一整套实用示例, 这些示例拿来就可以编译和运行, 因此无论是初学Java的程序员还是专家都会发现它非常适用.
本书的第一版于Java 1.1问世时诞生, Java 1.1是Java 1.0的两倍还多. 当时我正忙于为Java in a Nutshell的第二版补充编写另外的一些示例, Sun的技术人员则致力于完成Java的转型, 以至于用一本技术手册无法将其完全阐述清楚. 由于Java in a Nutshell中速查参考部分有如此大的扩展, 其中再无法容纳太多的示例了. 但是Java in a Nutshell中的示例又是它的突出特点之一, 实在令人难以割舍.
本书正是此忍痛割爱的产物, 我很庆幸当初做了这个决定. 能够自由地用整本书来介绍示例, 这样就能够编写我真正想写的示例了. 我能比从前涉入更深, 而且就我本身来讲, 深入开发示例时的探索和试验也着实让我很享受. 对于本书的第二版, 我又有了新的乐趣, 那就是对Java API的新部分进行探索和试验, 这包括:SwingTM. Java 2DTM. servlet和XML. 在第三版中, New I/O. Java Sound和一些新的较小API(如日志和首选项)将先后登场. 希望你能够以这些示例作为起点开始你自己的探索旅程, 你一定能感受到我在写这些例子时的兴奋和快乐.
顾名思义, 本书是要用示例“说话”, 来教你如何使用Java, 而这也是最受大家欢迎的学习方法. 这里的文字并不多, 而且你也找不到有关Java语句具体语法和行为的繁杂文档. 本书设计为与《Java技术手册》. 《Java基类技术手册》和《Java企业技术手册》结合使用. 在研究这里的示例时, 你可能会发现前几本书大有用处. 你可能还会对O'Reilly Java系列的其他一些书感兴趣, 详情请访问http://java.oreilly.com.
本书分为四部分. 第一章和第二章是对Java语言本身的介绍, 很适合初学Java的程序员. 第三章~第十章则涵盖了核心Java API. 这几章中介绍的API的详细文档见《Java技术手册》. 第十一章到第十七章构成了本书的第三部分. 这几章展示了Java的图形API和图形用户界面API, 有关文档见《Java基类技术手册》. 最后, 第十八章~第二十一章包含了服务器端(或企业)API的示例, 相应的文档请见《Java企业技术手册》中的介绍.
你可以根据兴趣自由选择阅读书中各章的顺序. 不过, 有一些章节之间是相互依赖的, 而且有些章节必须按在此给出的顺序来阅读. 例如, 阅读第五章之前一定要先阅读第三章, 这一点很重要. 第一章和第二章所面向的是初涉Java的程序员, 因此熟练的Java程序员可以跳过这两章.
就其本质来说, 如果编程示例不算简单(即非平凡), 就往往会涉及多个主题, 而且这里有许多示例完全可以放在多个章中. 本书最后一章是一个特殊的“示例索引”, 在此你可以快速地查找到一个类. 方法或编程主题, 并能找到涉及该主题的示例. 这个示例索引与书中最后的常规索引有所不同, 并单独提供.
第三版新增内容
本书第二版的读者会发现这一版有了很大改进. 在此新增了涉及New I/O API和Java Sound API的章节. 另外, 有关servlet和XML的章节也做了全面审查, 书中还增加了许多新例子和改进的示例. 原先所有示例的包前缀均为“com.davidflanagan.examples”, 尽管这是正确的, 但过于冗长, 为了减少键入量, 在此均改为简洁的“je3”.
在线Java示例
本书中的示例均可在线获得, 所以你不必辛辛苦苦地全部自行键入!可以从作者的网站下载这些示例代码, 网址为http://www.davidflanagan.com/javaexamples3, 也可以从出版商的网站下载, 网址为http://www.oreilly.com/catalog/jenut3. 根据读者报告的印刷错误和代码bug, 我们会在出版商网站上维护一个勘误表. 这些示例可以免费地用于非商业用途. 不过, 如果你想将其用在商业产品中, 则请你象征性地支付一点的商业许可费用, 有关许可的详细情况请访问http://www.davidflanagan.com/javaexamples3.
O'Reilly的相关图书
O'Reilly出版了Java的一整套系列图书. 其中包括《Java技术手册》. 《Java基类技术手册》和《Java企业技术手册》, 前面已经提到, 这三本书是作为本书姊妹篇的速查手册.
还有一个相关的参考工作, 即Jude, 这是由作者编写和发布的一个开创性软件包, 其中采用了《Java技术手册》中所用的流行的速查手册格式, 并结合了Sun的权威javadoc文档, 还提供了在线帮助应用的即时搜索和导航命令. 详细情况请访问http://www.davidflanagan.com/Jude.
可以从O'Reilly获得完整的Java图书列表(http://java.oreilly.com). 本书各章还可能会引用一些特定图书, 这些图书将有助于你更详细地理解有关内容.
本书约定
本书采用以下排版约定:
斜体
用于强调和指示一个词的第一次使用. 命令. email地址. Web网址. FTP地址. 文件和目录名以及新闻组也采用斜体.
粗体
有时用于表示计算机键盘上的特定按键, 或者用户界面的特定部分, 如回退(Back)按钮或选项(Options)菜单.
等宽字体
所有Java代码均使用等宽字体, 另外等宽字体通常还用于编程中键入的任何内容, 包括关键字. 数据类型. 常量. 方法名. 变量. 类名和接口名. 除此以外, 还用于要在屏幕上逐字键入的命令行和选项, 以及可能出现在HTML文档中的标记.
等宽斜体
用于方法参数名, 而且通常用作一个占位符, 以指示在你的程序中某项要用一个具体值所代替. 等宽斜体还用于命令行选项中的变量表达式.
意见和问题
请将关于本书的意见和问题通过以下地址提供给出版商:
O'Reilly & Associates, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
(800) 998-9938 (美国或加拿大境内)
(707) 829-0515 (国际或当地地区)
(707) 829-0104 (传真)
本书中的示例都经过仔细编写并通过测试, 但是这并不表示一定能保证其中不会出现bug, 也不敢确保这些示例在你所用的版本和Java实现平台上一定能正常工作. 如果你有任何问题. 查出了bug, 或者对将来的版本有任何建议, 请将电子邮件发至:
bookquestions@oreilly.com
针对这本书, 我们还维护有一个网页, 列出了有关勘误. 示例和其他信息. 可以通过以下地址访问此页面:
http://www.oreilly.com/catalog/jenut3
要想了解O'Reilly 图书. 会议. 资源中心以及O'Reilly Network的更多信息, 请访问O'Reilly网站:
http://www.oreilly.com
致谢
Brett McLaughlin参与了本书三个版本的编辑. 他尽其所能使我能按时“完工”, 而且最后与我齐心协力, 终于使这本书得以问世. 还要感谢Paula Ferguson, 他编辑了本书的第二版和第一版. 还需要特别感谢Frank Willison和Tim O'Reilly, 感谢他们对这种全示例型的书感兴趣, 并乐于尝试.
在完成这本书时, 我得到了O'Reilly的其他众多Java作者的支持和帮助. Jonathan Knudsen(多本O'Reilly的Java图书作者)审阅了有关图形和打印的章节. Bob Eckstein(《Java Swing》的作者之一)审阅了Swing一章. Jason Hunter(《Java Servlet Programming》的作者, 而且是servlets.com的站主)审阅了第二版中有关servlet的几章, 而且在我写第三版时又再次仔细地审阅了这一部分. Brett McLaughlin(《Java and XML》的作者)审阅了第二版和第三版中XML一章. George Reese(《Database Programming with JDBC and Java》的作者)很热心地检查了数据库一章. Jim Farley(《Java Distributed Computing》的作者, 也是《Java企业技术手册》的作者之一)审阅了RMI示例. 这些审阅人的经验使本书示例的质量得到显著提高. 非常感谢大家, 作为回报, 在此强力推荐他们的著作!
还有一些审阅人并非O'Reilly作者, 但是从他们的审阅质量来看, 作O'Reilly作者也完全绰绰有余. Westbridge Technology 的Alvin Wen审阅了New I/O一章, 指出了我所遗漏的地方, 甚至还帮我调试了其中一个示例. Java Sound API一章由Florian Bomers和Matthias Pfisterer审阅, 他们是一个绝好Java Sound资源网站(jsresources.org)的维护者, 经过他们的仔细审查, 使这一章增色不少.
O'Reilly & Associates的出版团队为了将我提交的手稿变成一本确实不错的书, 再次做出了艰苦卓绝的努力. 对于他们, 我既表示感谢, 又充满敬意.
最后, 要向Christie致以我的谢意和诚挚的爱.
David Flanagan
http://www.davidflanagan.com
2003年10月