━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
译者序
《java编程思想》已经成为了广大java程序员和爱好者们手中必备的宝典,它在广大
读者心目中的地位已经无可替代。其作者uceecນkel也已经成为ฦ了众多java程序员顶礼
膜拜的大师。随着java技术的展以及对jaທvaທ认识的不断深入,uceeckel推出了《javaທ
编程思想》第三版,在这里我们应该向他致敬,他不断精益求精、锐意进取的精神正是我们
应该努力学习的榜样。
随着软件开技术,尤其是9eb应用的开技术的展,jaທva越来越受到人们的青睐,
越来越多的企业都选择使用java及其相关技术,例如j2๐ee技术来构建它们的应用系统。
但是,掌握好java语言并不是一件可以轻松完成的任务,如何真正掌握javaທ语言,从而
编写出健壮的、高效的、灵活的程序是java程序员们面临的重大挑战。
《java编程思想》就是一本能够让javaທ程序员轻松面对这一挑战,并最终取得胜利ำ的
经典书籍。本书深入浅出、循序渐进地把我们领入java的世界ศ,让我们在不知不觉中就学
会了用javaທ的思想去考虑问题、解决问题。本书不仅适合java的初学者,对于有经验的
jaທva程序员来说,每次阅读本书也总是能ม够有新的体会,这正是本书的魅力所在。
本书的第二版由á侯捷先生翻译,他已๐经把翻译原着这项工作做到了极致,我们在翻译过
程中总是诚惶诚恐,一方面害怕曲解了原着的意思,另一方面也害怕破坏了第二版译着已经
做出的让广大中国读者认可本书的种种努力。
我们在翻译本书的过程中力求终于原着。对于本书中ณ出现的大量的专业术语尽量遵循标
准的译法,并在有可能引起歧义之处着上了英文原文,以方便读者的对照理解。
全书的翻译由á陈昊鹏和饶若楠合作完成,薛翔、郭嘉和方小丽也参与了全书的翻译工作。
由于我们水平有限,书中出现错误与不妥之处在所难免,恳请读者批评指正。
前言
我的兄弟托德正准备从硬件工业转移到程序设计领域,我曾向他建议,下一次技术革命的重
点将是基因工ื程。
我们将使用微生物来制造食品、燃料é和塑料;这些微生物不仅能清除污染,还能让我们付出
比现有少得多的代价就能主宰整个物质世界ศ。我曾以为ฦ,相比之下计算机革命将显得微不足
道。
后来我意识到自己้犯了科幻家常犯的错误:迷信技术的力量当然,这在科幻里司
空见惯。有经验的作家都知道,故事的重点不是技术,而在于人。基因工程将对我们的生
活造成深远的影响,但它未必就会使计算机革命或者至少是信息革命黯然失色,因为正
是计算机技术推动了基因工ื程的展。信息指的是人与人之ใ间的沟通。当然,汽车、鞋子、
包括基因疗法,这些都很重要,但它们最终都只是表面现象。人类如何与世界相处才是问题
的本质。这个相处的过程就是沟通。
本书恰好就是一个例子。很多人认为我很大胆、或者有点狂妄,因为我把所有资料都放在网
络上。“还有谁会购买呢?”他们这样问。如果我的性格保守谨慎一些,我就不会这么做。但
是我真的不想再用传统方式来编写一本新า的计算机书籍。我不知道这么做会有什么เ后果,但
结果表明,这是我在写书经历中做过的最明智的一件事。
先,人们开始把改正后的意见反馈给我。这是个ฐ令人惊叹的过程,因为人们仔细检查每个ฐ
角落、每个缝隙,找出技术上和语法上的种种问题,让我得以改正所有错误,而这些错误单
凭我个人是很难觉察到เ的。人们对这种作法还有些顾虑,他们常常说“我并无冒犯之ใ意…”,
然后扔给我一大堆错误。无疑我自己从未察觉过这些错误。我很喜欢这种集体参与的过程,
这也使这本书更加特别。这些反馈很有价值,所以我使用称为ฦ“backtalk”的系统创建了一
些应用,来对这些建议进行收集和分类。
但是,很快我就开始听到เ“嗯,很好。把书做成电子版放到网络上是个好主ว意,可是我希望
购买印刷็出版并装订成册的书籍”。我曾经作出努力,让每个ฐ人都能很容易地打印出美观的
书籍,但这样仍然无法满足人们对印刷书籍的需求。大多数人都不习惯在计算机屏幕上阅读
整本书,也不喜欢总是带着一捆捆的纸,所以即使这些打印出来的书籍再美观,也吸引不了
他们而且激光打印机的碳粉并不便宜。看来即使是计算机革命,也难以抢走出版商的生
意。不过,有个学生提出这也许会在未来成为一种出版模式:先在网络上出版书籍,当它引
起足够的关注以后,才考虑制作纸质版本。目前,绝大多数书籍都不赚钱,这种新方式或许
可以给整个出版业带来更多的利润。
在另一方面,这本书也带给我一些启迪。开始,我认为java“只不过是另一种程序设计语言”。
从许多方面看的确如此。但随着时间流逝,以及对java学习的深入,我才开始明白,这个
编程语言的目的,与我所见过的其它语言根本不同。
程序设计就是对复杂度的管理。它包括:待解问题的复杂度和所依赖的底层机器的复杂度。
正是因为这种复杂度的存在,导致了大多数项目的失败。并且据我所知,还没有哪个程序设
计语言全力将主要设计目标放在“征服程序开与维护过程中的种种复杂度”上
1