您的浏览历史

Java编程思想:第3版

促销活动
  • [本书]参加机械工业出版社华章公司满58元赠书活动
精彩评论

基本信息

编辑推荐

图书获奖:
2002年Software Development杂志Jolt大奖;
2001年JavaWorld编辑选择最佳书籍奖;
2000年JavaWorld读者选择最佳书籍奖;
1998年Software Development杂志Jolt大奖;
1998年Java Developer's Journal编辑选择最佳书籍奖。

推荐阅读

内容简介回到顶部↑

从本书获得的各项大奖以及来自世界各地的读者评论中,不难看出这是一本经典之作。本书作者有多年的教学经验,对C、C++、Java语言都有独到、深入的理解。因此他非常了解如何教授Java语言这门课程,也非常明白语言教学中的难点及人们的困惑。作者以通俗易懂及小而直接的示例解释了一个个晦涩抽象的概念,精心选取“对读者理解Java语言来说最为重要”的部分编写成书。同时又在随书光盘中提供了大量参考材料—这也是本书绝对物超所值的地方。
随书光盘没有包含本书的源代码(可以从支持网站www.MindView.net免费下载),而是提供了大量作者讲授的讨论课内容及本书的前2版内容。
本书内容丰富—从Java的基础语法到最高级特性,适合各层次的Java程序员阅读,同时也是高等院校讲授面向对象程序设计语言及Java语言的绝佳教材。

作译者回到顶部↑

作者: Bruce Eckel
Bruce Eckel从1986年至今,已经发表了超过150篇计算机技术文章,出版了6本书(其中4本是关于C++的),并且在全世界做了数百次演讲。他是《Thinking in Java》、《Thinking in C++》、《C++ Inside & Out》《Using C++》和《Thinking in Patterns》的作者,同时还是《Black Belt C++》文集的编辑。他的《Thinking in C++》一本书在1995年被评为“最佳软件开发图书”,《Thinking in Java》被评为1999年Java World“最爱读者欢迎图书”,并且赢得了编辑首选图书奖。.. << 查看详细

[同作者作品]
C++编程思想 第2卷:实用编程技术(英文版)[按需印刷]
Java编程思想:第3版
C++编程思想 第2卷:实用编程技术

目录回到顶部↑

出版者的话
专家指导委员会
读者评论
关于《Thinking in C++》
译者序
序言
前言
第1章 对象导论 1
1.1 抽象过程 1
1.2 每个对象都有一个接口 2
1.3 每个对象都提供服务 4
1.4 被隐藏的具体实现 5
1.5 复用具体实现 5
1.6 继承:复用接口 6
1.7 伴随多态的可互换对象 9
1.8 对象的创建、使用和生命期 12
1.8.1 集合与迭代器 13
1.8.2 单根继承结构 14
1.8.3 向下转型与模板/泛型 15
1.8.4 确保正确清理 15

译者序回到顶部↑

《Java编程思想》已经成为广大Java程序员和爱好者们手中必备的宝典,它在读者心目中的地位已经无可替代。其作者Bruce Eckel也已经成为了众多Java程序员顶礼膜拜的大师。随着Java技术的发展以及对Java认识的不断深入,Bruce Eckel推出了《Java编程思想》第3版。在这里我们应该向他致敬,他不断精益求精、锐意进取的精神正是我们努力学习的榜样。
随着软件开发技术,尤其是Web应用开发技术的发展,Java越来越受到人们的青睐。越来越多的企业都选择使用Java及其相关技术(例如J2EE技术)来构建它们的应用系统。但是,掌握好Java语言并不是一件可以轻松完成的任务,如何真正掌握Java语言,从而编写出健壮的、高效的、灵活的程序,是Java程序员们面临的重大挑战。
《Java编程思想》就是一本能够让Java程序员轻松面对这一挑战,并最终取得胜利的经典书籍。本书深入浅出、循序渐进地把我们领入Java的世界,让我们在不知不觉中学会了用Java的思想去考虑问题、解决问题。本书不仅适合Java的初学者,对于有经验的Java程序员来说,每次阅读本书也总能有新的体会,这正是本书的魅力所在。
本书的第2版由侯捷先生翻译,他已经把翻译原著这项工作做到了极致。我们在翻译过程中总是诚惶诚恐,一方面害怕曲解了原著的意思,另一方面也害怕破坏了第2版译著已经做出的让广大中国读者认可本书的种种努力。
我们在翻译本书的过程中力求忠于原著,对于书中出现的大量的专业术语尽量遵循标准的译法,并在有可能引起歧义之处著上了英文原文,以方便读者的对照理解。
全书的翻译由陈昊鹏和饶若楠合作完成,薛翔、郭嘉和方小丽也参与了全书的翻译工作。由于我们水平有限,书中出现错误与不妥之处在所难免,恳请读者批评指正。
陈昊鹏
上海交通大学软件学院

前言回到顶部↑

“上帝赋予人类说话的能力,而言语又创造了思想,思想是人类对宇宙的量度。”
—摘自《Prometheus Unbound》,Shelley
人类……极其受那些已经成为社会表达工具的特定语言的支配。想像一下,如果一个人可以不使用语言就能够从本质上适应现实世界,语言仅仅是解决具体的交流和反映问题时偶尔才用到的方式,我们会发现,这只能是一种幻想。事实上,“真实世界”在很大程度上是不知不觉地基于群体的语言习惯形成的。
—摘自《The Status of Linguistics As A Science》,1929, Edward Sapir
如同任何人类语言一样,Java提供了一种表达概念的方式。如果使用得当,随着问题变得更庞大更复杂,这种表达工具将会比别的可供选择的语言更为简单、灵活。
我们不应该将Java仅仅看作是一些特性的集合——有一些特性在孤立状态下没有任何意义。只有在考虑到设计,而不仅仅是编码时,才能完整地运用Java的各部分。而且,要按照这种方式来理解Java,必须理解它所涉及的问题以及在程序设计时所通常伴随的问题。这本书讨论的是编程问题,它们为什么成为问题,以及Java已经采取什么样的方案来解决它们。因此,每章所阐述的特性集,都是基于我所看到的这一语言在解决特定类型问题时的方式。按照这种方式,我希望能够每次引导读者前进一点,直到Java思想意识成为你最自然不过的语言。
自始至终,我一直持这样的观点:你需要在头脑中创建一个模型,以加强对这种语言的深入理解;如果你遇到了疑问,就将它反馈到头脑中的模型并推断出答案。
前提条件
本书假定你对程序设计有一定程度的熟悉:你已经知道程序是一些语句的集合,知道子程序/函数/宏的概念,知道像“if”这样的控制语句和像“while”这样的循环结构,等等。不过,你可能在许多地方已经学到过这些,例如使用宏语言进行程序设计,或者使用像Perl这样的工具工作。只要你已经达到能够自如地运用程序设计基本思想的程度,你就能够顺利阅读本书。当然,本书对C程序员来说更容易,对于C++程序员更是如此,因此,即使你没有实践过这两种语言,也不要否定自己—而应该更加努力学习(并且,本书附带的多媒体光盘能够带领你快速学习所必需的Java基础知识)。不过,我还会介绍面向对象(OOP)的概念和Java的基本控制机制。
尽管本书经常引用、参考C和C++语言的特性,但这并不是打算让它们成为内部注释,而是要帮助所有的程序员正确看待这些语言,毕竟Java是从这些语言衍生而来的。我会努力简化这些引用、参考,并且对那些我认为一个非C/C++程序员可能不太熟悉的地方加以解释。
学习Java
大概在我的第一本书《Using C++》(Osborne/McGraw-Hill,1989)出版发行的同一时候,我就开始教授这种语言了。讲授程序设计语言已经成为我的职业了;自1987年以来,我在世界各地的听众中看到,有的昏昏欲睡,有的面无表情,有的表情迷茫。当我开始给一些小团体进行室内培训时,在这些实践中我发现了一些事情。即使那些面带微笑频频点头的人也对很多问题心存困惑。我发现,多年来在软件开发会议上由我主持的C++分组讨论会(后来变成Java分组讨论会)中,我和其他的演讲者往往是在极短的时间内告诉听众许多话题。因此,最后由于听众的水平不同和讲授教材的方式这两方面的原因,我可能最终会失去一部分听众。可能这样要求得太多了,但因为我是传统演讲的反对者之一(而且对于大多数人来说,我相信这种抵制是因为厌倦),因此我想尽力让每个人都可以跟得上演讲的进度。
我曾经一度在相当短的时间内做了一系列不同的演讲。因此,我结束了“实践和迭代”(一项在Java程序设计中也得到很好运用的技术)的学习。最后,我根据自己在教学实践中学到的东西发展出一门课程。它以离散的、易消化的步骤以及亲身参与的讨论课(seminar)的形式(最理想的学习形式)解决学习问题,并且每一小节课之后都有一些练习。我的公司—MindView有限公司现在提供公开的室内“Thinking in Java”讨论课;这是我们主要的初级讨论课,为以后更高级的讨论课提供基础。读者可以到网站www.MindView.net上了解详细情况。(初级讨论课在“Hands-On Java”光盘上也能找到。上述网站也可以找到相关信息。)
从每个讨论课获得的反馈信息都可以帮助我去修改和重新制定课程教材,直到我认为它能够成为一个良性运转的教学工具为止。不过不能将本书视为一般的讨论课笔记;我努力在本书中放入尽可能多的信息,并且合理地组织本书结构,从而引导读者顺利进入下一主题。最重要的是,本书面向那些孤军奋战一门新的程序设计语言的读者。
目标
就像我前一本书《Thinking in C++》那样,这本书是围绕着程序设计语言的教学过程而构建的。具体地说,我的目的是要建立一套机制,提供一种在自己的讨论课中进行程序语言教学的方式。当我思索书中的一章时,我思索的是如何在讨论课上教好一堂课。我的目标是,精选出可以在合理学时内讲完的篇章,随后是适合在课堂上完成的练习作业。
在这本书中我想达到的目标是:
1) 每一次只演示一个步骤的材料,以便读者在继续后面的学习之前可以很容易地消化吸收每一个概念。
2) 使用的示例尽可能简单、短小。这样做有时会妨碍我们解决“真实世界”的问题,但是,我发现对于初学者,能够理解例子的每一个细节,而不是理解它所能够解决的问题范畴,前者通常更能为他们带来愉悦。同样,适合在教室内学习的代码数量也有严格限制。正因为如此,我将毫无疑问地会遭到批评—批评我使用“玩具般的示例”,但是我乐意接受那些有利于为教育带来益处的种种事物。
3) 谨慎安排、呈现特性的先后顺序,以便读者循序渐进,在学习应用某一主题之前已经先接触过它。当然,不可能总是这样;在这种情况下,将会给出简洁的介绍性描述。

序言回到顶部↑

我的兄弟托德正准备从硬件领域转移到程序设计领域,我曾向他建议,下一场技术革命将是基因工程。
我们将使用微生物来制造食品、燃料和塑料;这些微生物不仅能清除污染,还能让我们以比现在少得多的代价,就能主宰整个物质世界。我曾以为,相比之下计算机革命将显得微不足道。
后来我意识到自己犯了科幻小说家常犯的错误:纠缠在技术细节上(当然,这在科幻小说里司空见惯)。有经验的作家都知道,故事的重点不是技术,而在于人。基因工程的确将对我们的生活造成深远的影响,但它未必就会使计算机革命(或者至少是信息革命)黯然失色,因为正是计算机技术推动了基因工程的发展。信息指的是人与人之间的沟通。当然,汽车、鞋子,包括基因疗法,这些都很重要,但它们最终都只是表面现象。人类如何与世界相处才是问题的本质。这个相处的过程就是沟通。
本书恰好就是一个例子。很多人认为我很大胆,或者有点疯狂,因为我把所有资料都放在网络上。“还有谁会购买呢?”他们这样问。如果我的性格保守谨慎一些,我就不会这么做。但是我真的不想再用传统方式来编写一本新的计算机书籍。我不知道这么做会有什么后果,但结果表明,这是我在写书经历中做过的最明智的一件事。
首先,人们开始把修正意见反馈给我。这是个令人惊叹的过程,因为人们仔细检查每个角落、每个缝隙,找出技术上和文字上的种种问题,让我得以改正所有错误,而这些错误单凭我个人是很难觉察到的。人们对这种做法还有些顾虑,他们常常说“我并无冒犯之意……”,然后扔给我一大堆错误。无疑我自己从未察觉到这些错误。我很喜欢这种集体参与的过程,这也使这本书更加特别。这些反馈很有价值,所以我使用“BackTalk”系统创建了一些应用,来对这些建议进行收集和分类。
但是,很快我就开始听到“嗯,很好。把书做成电子版放到网络上是个好主意,可是我希望购买印刷出版并装订成册的书籍”。我曾经努力过,让每个人都能很容易地打印出美观的书籍,但这样仍然无法满足人们对印刷书籍的需求。大多数人都不习惯在计算机屏幕上阅读整本书,也不喜欢总是带着一捆捆的纸,所以即使这些打印出来的书籍再美观,也吸引不了他们(而且激光打印机的碳粉并不便宜)。看来即使是计算机革命,也难以抢走出版商的生意。不过,有个学生提出这也许会在未来成为一种出版模式:先在网络上出版书籍,当它引起足够的关注以后,才考虑制作纸质版本。目前,绝大多数书籍都不赚钱,这种新方式或许可以给整个出版业带来更多的利润。
这本书也以另一种方式带给我一些启迪。开始,我认为Java“只不过是另一种程序设计语言”—从许多方面看的确如此。但随着时间流逝,以及对Java学习的深入,我才开始明白,这个编程语言的目的,与我所见过的其他语言根本不同。
程序设计就是对复杂度的管理,复杂度包括:待解问题的复杂度和所依赖的底层机器的复杂度。正是因为这种复杂度的存在,导致了大多数项目的失败。并且据我所知,还没有哪个程序设计语言全力将主要设计目标放在“征服程序开发与维护过程中的种种复杂度”上。当然,许多编程语言设计时也确实考虑到了复杂度问题,但它总是与被视为更本质的问题混在一起。当然,那些也都是让程序员感到困扰的问题。比如,C++必须向上兼容于C(为使C程序员容易过渡),并具有执行效率高的优点。这两点都很有用,并且帮助C++取得了成功。不过,两者也引入了额外的复杂度,使得某些项目无法完成。(当然,你可以归咎于开发或管理人员,但如果有某种语言可以帮助我们找到错误,何乐而不为呢?)Visual Basic(VB)是另一个例子,它被局限于Basic语言(它并不把可扩展能力作为设计目标),这就使得所有堆积于VB 之上的扩充功能,都造成了可怕且难以维护的语法。Perl 也向上兼容于Awk、Sed、Grep以及其他Unix工具,这就导致了被诟病为“能写不能读”的程序代码(也就是说,一段时间之后,你就无法看懂这些代码)。另一方面,C++、VB、Perl、Smalltalk 之类的编程语言,在设计上也都为复杂度问题付出了相当大的努力,因而在解决特定类型问题的时候非常成功。
当我开始理解Java 之后,印象最深的莫过于在Java上体现出的Sun公司的设计目标:为程序员降低复杂度。就好像说:“我们关注的是降低编写健壮代码的困难程度和需要的时间。”以前,编写健壮代码将导致性能降低(尽管有许多这样的承诺—Java总有一天能够执行得足够快),不过Java的确大大缩短了开发时间;相比同等功能的C++ 程序,它只需一半甚至更少的开发时间。只凭这一点,就足以省下大量的时间与金钱。不过,Java 并不仅仅如此。它又不断引入了一些日益重要的复杂任务,比如多线程和网络编程。并且通过语言本身的特性和程序库,使得这些工作变得轻而易举。最后,Java还着眼于某些有着极高复杂度的问题:跨平台程序、动态改变程序代码,甚至安全问题,它们都属于复杂度问题的重要议题。所以尽管存在已知的效率问题,Java 带来的许诺仍极其诱人:它能使程序员的生产率大大提高。
根据我的观察,Web是Java影响最深远的地方之一。网络程序设计总是非常困难,但Java使之得以简化(Java的设计者仍在努力使之变得更简单)。网络程序设计所关注的,就是研究如何让我们用比使用电话更有效率、更廉价的方式进行沟通(单是电子邮件就已经使许多业务领域发生了革命性的变化)。当我们能更有效地进行沟通时,奇妙的事情就开始发生,这也许要比基因工程可能创造的前景更让人感到神奇。
编写程序、团队开发、设计用户界面(让程序可以和用户交互)、跨平台执行、轻松编写跨因特网的通信程序等,Java给我们带来的所有这一切扩展了人与人之间的通信带宽。我认为,通信革命的成果也许不应以海量数据的传输来衡量;我们将体会到真正的革命,因为我们能更容易地和他人沟通—可以是一对一的形式,可以是分组形式,也可以是全球通信的形式。有人曾说过,随着足够多的人之间产生了足够多的相互联系,下一次革命将会是一种全球化思维的形成。Java可能是、也可能不是这场革命的导火索,但至少这种可能性是存在的,这使我觉得,教授这门语言是一件非常有意义的事情。
第3版序
这一版的主要目的和大量工作都用在了与Java 1.4版保持同步上。不过,本书的主旨也更加清楚:使大多数读者通过本书牢牢抓住语言的基本概念,以便深入学习更复杂的主题。因为Java还在不断地演化,所以重新定义“基础知识”的涵义就很有必要,再说本书也不应过于面面俱到。这就意味着,比如,完全重写了“并发”这一章(以前称为“多线程”),它能使读者对线程的核心概念有一个基本的了解。没有这一点,读者就很难理解线程中那些更复杂的概念。
我还认识到了代码测试的重要性。如果没有内置的测试框架及相应测试用例,并在每次构造系统的时候都进行测试,那么就无法知道代码是否可靠。在本书中,为了做到这一点,专门编写了单元测试框架,用来演示和验证每个程序的输出。这些内容在第15章中介绍,其中还有对ant(Java构建系统的事实标准,与make类似)、JUnit(Java单元测试框架的事实标准)、日志和断言机制(由JDK 1.4新引入),以及对调试和性能分析的介绍。为了涵盖所有这些概念,我把这一章命名为“发现问题”,里面介绍的内容是我认为所有Java程序员都应该掌握的基本技能。
此外,我复查了书中所有的示例,并同时问自己:“为什么要用这种方法呢?”多数情况下我会做一些修改和润色,这样会使例子更贴切,同时还有助于演示一些我认为比较好的Java编程实践(至少在比较基础的范围内)。此外,我还删除了一些不再有意义的示例,并加入了一些新的示例,许多已有示例也被重新设计和修改过。
全书分为16章,涵盖了对Java语言的基本介绍,它可以用作基础课程的教材。但那些更高级的主题又该如何处理呢?
我原计划为本书新加一部分,专门介绍“Java 2企业版”(J2EE)的基础知识。其中许多章由我的朋友及一同授课或开发项目的同事编写,他们是:Andrea Provaglio, Bill Venners, Chuck Allison, Dave Bartlett和Jeremy Meyer。当我把这些新章的进度和出版日期相对照的时候,我就有些担心。并且我注意到,前16章的篇幅就已经与本书第2版的全部篇幅一样大了。而即使是这个篇幅,读者也会经常抱怨说太大了。
对于本书的前两版,读者给予了极高评价,当然我也十分欣慰。但有时他们也会抱怨。其中常被提及的就是“这本书太厚了”。在我看来,如果这就是你挑出的唯一毛病,那真是令人哭笑不得。(这会让人联想到奥地利国王对莫扎特作品的抱怨:“音符太多了”。我并没有任何与莫扎特相比的意思。)此外,我只能认为发出这种抱怨的人尚未了解Java语言的博大精深,也未见识过其他Java书籍。尽管如此,我还是在这一版中尽量删减掉那些已经过时,或是不那么关键的内容。总之,我仔细检查了所有地方,在第3版中删除了那些不必要的内容,并尽可能做出了修改和润色。这么做我很放心,因为本书的前两个版本还可以从网站(www.BruceEckel.com)免费下载,随书光盘中也有。如果你还需要那些老资料,这些地方都能找到,这样可以使作者减轻很多负担。比如,“设计模式”这一章太大了,我把它改写成了另一本书—《Thinking in Patterns (with Java)》(这也可以从网站上下载)。
在Java的下一个版本(JDK 1.5)中,预计Sun公司会受C++模板启发而引入泛型这个新的重要主题。我本来已经决定,到时候把本书分为两册,以加入新的内容。但有个声音悄悄在问:“为什么要等呢?”于是,我决定在这一版中就这么做,一切问题也迎刃而解。我正试着往一本介绍性的书籍中塞入很多内容。
我没有把本书分为两册,而是写成一本新书,包含了一些高级主题,书名叫《Thinking in Enterprise Java》,它也可以从www.BruceEckel.com免费下载。由于是一本单独的书,因此它的篇幅可以随着内容的需要而扩展。与《Thinking in Java》一样,它的目标是向读者提供一本容易理解、涵盖J2EE技术基础知识的入门书,并为读者学习更深入的内容做准备。读者能在附录C中找到更多说明。
评论交流

共有254人开贴评论  507人参与评论  236人参与打分 查看

131人
 55%
用户平均打分
我要写评论 help如何参与评论和打分
60人
 25%
30人
 12%
6人
 2%
9人
 3%

wbshi_aust
四级评论员
精彩书评
评价等级:  
发表于:2007-3-11 18:26:00
非常经典的JAVA学习教程,系统全面的介绍了JAVA语言。我刚开始学习JAVA的时候就是读了这本书,不过真正的项目开发和书本差别还是很大的,有一定的语言基础后,应该研究一下开发示例对你帮助很大的,在http://rfxia.29dns.cn上的推荐下载链接上提供了一个开发非常成功的项目开发示例,提供源代码下载,你学习研究后会发现比读其他计算机专业教程收获大多了。
回复 ( 2条评论-- 点击查看讨论 )
您觉得呢? 送鲜花 (得3支)  扔鸡蛋 (得2个)

FreeAnt

专家级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2005-5-10 15:21:00
这本书的第二版我看过,感觉不错。不过不太适合初学者,除非你们上课用这本书。否则建议先看看Sun的SCJP方面的教材,对Java有了基本的了解,再来看这本书。书很厚,第二版翻译的不错。这第三版翻译的如何,我没有看过,不敢乱作评价,不过相信同样值得期待。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

assjjwz123

三级评论员
该会员在china-pub购买过此书
  
发表于:2010-2-9 8:41:00
从第一版到第三版,这本《Java编程思想》(原版)也已经长成了1K+的大部头。唯一令人遗憾的是,它的作者似乎并没有考虑到读者的智商与经验会随着书的篇幅一道成长,仍然乐于耗费大量的纸张来重复那些7年来没有任何变化的内容——不过倒未必会耗费多少笔墨,毕竟90%的内容只需要copy&paste即可。虽然第三版标榜着“面向Java 1.4”,但除了介绍NIO、正则表达式、Logging API、LinkedHashMap这些零敲碎打的增强特性之外,Java 1.3增加的最重要的特性——动态代理——在这里压根不见身影。不过,鉴于Bruce Eckel对于整个反射机制都只肯拨出一小节的篇幅,这样的缺失倒也是可以谅解的。在Eckel先生的眼里,需要用到反射机制的那些读者显然已经太过高端,他更愿意用掉整整一章的篇幅来介绍“如何用if...else...控制程序流程”,因为后者的读者更有可能不假思索地冲着他的名头买下这本书。

但无论怎么说,无论是因为什么缘故,《Java编程思想》毕竟是一本成功的好书。而且不得不说,Bruce Eckel也确实是一位职业素养颇高的投机者。譬如说,当敏捷方法大行其道时,他也不失时机地在书中加上了小半章相关的内容:如何使用JUnit写单元测试,如何用Ant进行构建。对于已经购买了这本《Java编程思想》第三版的读者,我想说的是:单冲着第15章的前半段,这95元钱基本上也就算值回票价了。之所以这样讲,第一是因为这段内容多少可以教给你一点有用的东西;第二,如果这段内容还不够让你满意,恐怕整本书剩下的700页也不会给你更多的满足感。

您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

assjjwz123

三级评论员
该会员在china-pub购买过此书
  
发表于:2010-2-9 8:40:00
然而《Java编程思想》的成功是毋庸置疑的。Bruce Eckel把这本书——当然,以及他所有的著作——全文放在网站上公开,而它的纸面版本已然出到了第四版。看看这本第三版上收录的“读者评论”吧,再回想一下它的前两个版本曾经如何风行。如果不考虑第一版拙劣的翻译给它带来的负面影响,我们必须承认,这本《Java编程思想》就是——至少在中国——最出色的“那本”Java教材。

回想《Java编程思想》第一版出版时的环境,我们不难理解它取得的巨大成功:那时Java世界刚刚划分出J2SE、J2EE和J2ME三大平台,JDK 1.2对Java语言进行了相当大的改变。对于这样一种刚刚完成巨变、而又正在开始变得热门的语言,程序员和编程爱好者们需要一本巨细靡遗的语言教材来了解它的方方面面。而如果你恰好也读过James Gosling的《Java程序设计语言》,你必定会同意:那俨然是一本极之枯燥乏味的红头文件。恰好在这个时候,Bruce Eckel把他写书(尤其是写语言入门教材)的本事发挥出来,并从此开创了一个时代。

在我看来,Bruce Eckel只写过一本好书,那就是《C++编程思想》。之所以说那是一本好书,因为C++是这样一种复杂的编程语言,程序员在学习和使用它的时候必须留意种种语言上的细节,《C++编程思想》详尽的内容恰好与这种需求相得益彰。而Java相比之下则是一种简单得多的语言,学会它的语法和惯用法非常容易,对于程序员来说更要紧的是学会如何用Java语言来完成现实的工作。而后者这部分内容,至少在《Java编程思想》的前三个版本中是语焉不详的——如果不是淼无踪影的话。善于写入门教程的Eckel先生只是把《C++编程思想》的套路搬到另一本书里,然后把C++全文替换成“Java”或是“Python”,就完成了他的新作,这也就决定了这些作品只能是画虎类犬。语言之间的差别并不仅仅在于语法,一种语言更代表了一种思维方式,这正是《Thinking in Python》会被Python用户们嗤之以鼻的原因。

您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

assjjwz123

三级评论员
该会员在china-pub购买过此书
  
发表于:2010-2-9 8:39:00
在《Java编程思想》第三版的译者序上,陈昊鹏先生这样写道:“《Java编程思想》已经成为广大Java程序员和爱好者手中必备的宝典,它在读者心目中的地位已经无法替代,其作者Bruce Eckel也已经成为众多Java程序员顶礼膜拜的大师。”不过说实话,经验略微丰富一点的读者如我,很难对Bruce Eckel产生出“顶礼膜拜”这样的情愫。当他在2002年时接连写出《Thinking in Patterns》、《Thinking in Python》等等毫无新意的附庸风雅之作时,作为一个投机者的Bruce Eckel便已经被我牢记于心了。

您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)
我要写评论
查看所有评论交流(共254条)