Practical Java(中文版)
基本信息
内容简介回到顶部↑
本书出自第一线Java编程专家之手,为读者展现正确、高效、强国之JAVA代码实践方案。
这本取材广泛的指南,以不同层级的专家经验,帮助程序员更透彻地理解JAVA,使他们的编码效能(coding effectiveness)发挥到极致。此书以准则/条款形式(rules-based)进行编排,探究改善代码的68个重要主题,提供清晰明快、精心撰写之示例和方案。所有示例和方案都带有详尽的解说,你可以将它们融入自身工作之中。这些编程和设计上的实践方案,描述了经验丰富的程序员实际运用之最佳实践手法。为方便中高阶JAVA程序员阅读,本书内容被精心安排成为各自独立的课程,因此你既可以从头通读至尾,也可以挑选独特专题加以精读。
这本取材广泛的指南,以不同层级的专家经验,帮助程序员更透彻地理解JAVA,使他们的编码效能(coding effectiveness)发挥到极致。此书以准则/条款形式(rules-based)进行编排,探究改善代码的68个重要主题,提供清晰明快、精心撰写之示例和方案。所有示例和方案都带有详尽的解说,你可以将它们融入自身工作之中。这些编程和设计上的实践方案,描述了经验丰富的程序员实际运用之最佳实践手法。为方便中高阶JAVA程序员阅读,本书内容被精心安排成为各自独立的课程,因此你既可以从头通读至尾,也可以挑选独特专题加以精读。
作译者回到顶部↑
本书提供作译者介绍
Peter Haggar是一位公认的Java编程专家,也是IBM资深软件工程师。他拥有广博的编程经验,曾投身于开发工具、类库(class libraries)和操作系统的方面工作。他在IMB致力于emerging Java技术研究,目前专门从事embedded Java和real-time Java的研究。Peter屡屡以Java技术演讲人的身份出现在众多企业界会议上。他在Clarkson大学得计算机学士学位。
.. << 查看详细
.. << 查看详细
目录回到顶部↑
实践:实际履行,尤指艺术、科学或技术领域:与理论遥相对应。
praxis: practice,especially of an art,science,or technical occupation;opposite to theory.
-webster's new collegiate dictionary(1958)
译序by侯捷
译序by刘永丹
细目(detailcontents)
前言preface
致谢(acknowledgement)
1 一般技术(general techniques)
实践1:参数以byvalue方式而非by reference方式传递
实践2:对不变的data和object reference使用final
实践3:缺省情况下所有non-static函数都可被覆写
实践4:在arrays和vectors之间慎重选择
实践5:多态(po1ymorphism)优于instanceof
实践6:必要时才使用instanceof
实践7:一旦不再需要objectreferences,就将它设为nu11
2 对象与相等性(objects and equality)
实践8:区分reference型别和primitive型别
实践9:区分==和equals()
实践10:不要依赖equals()的缺省实现
praxis: practice,especially of an art,science,or technical occupation;opposite to theory.
-webster's new collegiate dictionary(1958)
译序by侯捷
译序by刘永丹
细目(detailcontents)
前言preface
致谢(acknowledgement)
1 一般技术(general techniques)
实践1:参数以byvalue方式而非by reference方式传递
实践2:对不变的data和object reference使用final
实践3:缺省情况下所有non-static函数都可被覆写
实践4:在arrays和vectors之间慎重选择
实践5:多态(po1ymorphism)优于instanceof
实践6:必要时才使用instanceof
实践7:一旦不再需要objectreferences,就将它设为nu11
2 对象与相等性(objects and equality)
实践8:区分reference型别和primitive型别
实践9:区分==和equals()
实践10:不要依赖equals()的缺省实现
译者序回到顶部↑
面对Java,可从两方面看待,一是语言,一是平台。本书谈的是Java语言,以下我所言种种,也是指Java语言。
Java是一门优秀的面向对象编程语言(Object Oriented Programming Language, OOPL)。什麽是「面向对象」?如何才称得上「优秀」?前者可定量定性,客观;後者往往流於个人感受,主观!所以虽然面向对象语言有着几近一致的条件和门槛(注1)(封装、继承、多态┅),孰优孰劣却是各人心中一把尺。尽管如此,无人可以否认Java语言在OOP(面向对象编程)上拥有良好的特性和优越的表现。
注1:我常忆起网络论坛上时可与闻的一种怪诞态度。有一派人士主张,OO是一种思想,一种思考模式,任何语言都能够实现它,因而侈言「C或assembly语言也能OO」。任何语言各有用途,这是完全正确的;OO是一种思维,这话也是对的。任何语言都能够实现OO,这话对某些人也许是对的,对99.9999%的人是错的。以non-OO语言实现OO思维,非但达成度极低,也非人人能为。Edmund Hillary(艾德蒙 希拉瑞)能达到的高度,你未必达得到 ─ 事实上你通常达不到。(注:Edmund Hillary是第一位登上圣母锋的地球人,1953年英格兰远征队员。)
我所谓良好的OOP特性,指的是Java提供了许多让程序员得以轻松表达面向对象技术与思维的语言关键字(keywords)如class, abstract, interface, extends, implements, public, protected, private, final, static, finalize┅,又提供条理清晰结构分明的文件组织方式如package, import,又拥有严谨而灵活的动态型别系统(dynamic type system)使得以提供RTTI和Reflection机制,并拥有一个优秀、涵盖面广、扩充性强的标准程序库(Java Libraries)。
这些优秀的语言构件(constructs)虽然好用易用,但不论就技术面或应用面或性能考量,还是有许多隐微细节散布其中,例如object creation, object initialization, Cloneable, Serializable, Equality, Immutability, Multithreading (Synchronization), Exception Handling┅,在在需要Java程序员深入认识与理解。
市面上Java书籍极多,专注於「编程主题式探讨」并「以独立条款呈现」的书籍比较少。这类书籍面向中高阶读者,不仅选题必须饶富价值、探讨必须极为深刻,各主题最好还独立以利选择阅读,却又最好彼此前後呼应环环相扣,并附良好交叉索引,予读者柳暗花明的强烈冲击。此种「专题条款」式的表现风格,在Scott Meyers的《Effective C++》和《More Effective C++》二书面世之後获得许多赞扬,也引来许多追随。
《Practical Java》和《Effective Java》二书,对前述重要而基础的技术细微处有着详尽、深刻、实用的介绍和剖析和范例,又以独立条款之姿展现,在内容的扎实度、可读性、易读性上表现均十分良好。为此,秉持并承继我为C++ 社区翻译《Effective C++》、《More Effective C++》的态度和机缘,我很开心再次由我负责,将《Practical Java》和《Effective Java》二书中译本呈献给Java 社区。
考虑本书读者应已具备Java编程基础,对於各种英文术语已有良好的接受度,我在书中保留了许多英文术语,时而中英并陈,包括class, object, interface, reference, instance, array, vector, stack, heap┅,也包括涉及Java关键字的一些用语如private, public, protected, static, abstract┅,不胜枚举(下页另有一个扼要说明)。本书努力在字型变化上突显不同类形的术语,以利读者阅读。本书支持网站有一个「术语 英中繁简」对照表,欢迎访问,网址如下。
《Practical Java》由刘永丹先生和我合力完成。永丹做前期初译工作,我负责後继的文字修润、技术检阅、大局风貌。永丹技术扎实,文字用心。没有他的协助,本书不可能在这个时间以这样的质量面世。谢谢永丹。
本书每一章起始处都有作者匠心独具收集的一些文摘语录。我们虽勉力译出,恐见识不足,贻笑大方,故均留下原文和出处,庶几不误读者。
Java是一门优秀的面向对象编程语言(Object Oriented Programming Language, OOPL)。什麽是「面向对象」?如何才称得上「优秀」?前者可定量定性,客观;後者往往流於个人感受,主观!所以虽然面向对象语言有着几近一致的条件和门槛(注1)(封装、继承、多态┅),孰优孰劣却是各人心中一把尺。尽管如此,无人可以否认Java语言在OOP(面向对象编程)上拥有良好的特性和优越的表现。
注1:我常忆起网络论坛上时可与闻的一种怪诞态度。有一派人士主张,OO是一种思想,一种思考模式,任何语言都能够实现它,因而侈言「C或assembly语言也能OO」。任何语言各有用途,这是完全正确的;OO是一种思维,这话也是对的。任何语言都能够实现OO,这话对某些人也许是对的,对99.9999%的人是错的。以non-OO语言实现OO思维,非但达成度极低,也非人人能为。Edmund Hillary(艾德蒙 希拉瑞)能达到的高度,你未必达得到 ─ 事实上你通常达不到。(注:Edmund Hillary是第一位登上圣母锋的地球人,1953年英格兰远征队员。)
我所谓良好的OOP特性,指的是Java提供了许多让程序员得以轻松表达面向对象技术与思维的语言关键字(keywords)如class, abstract, interface, extends, implements, public, protected, private, final, static, finalize┅,又提供条理清晰结构分明的文件组织方式如package, import,又拥有严谨而灵活的动态型别系统(dynamic type system)使得以提供RTTI和Reflection机制,并拥有一个优秀、涵盖面广、扩充性强的标准程序库(Java Libraries)。
这些优秀的语言构件(constructs)虽然好用易用,但不论就技术面或应用面或性能考量,还是有许多隐微细节散布其中,例如object creation, object initialization, Cloneable, Serializable, Equality, Immutability, Multithreading (Synchronization), Exception Handling┅,在在需要Java程序员深入认识与理解。
市面上Java书籍极多,专注於「编程主题式探讨」并「以独立条款呈现」的书籍比较少。这类书籍面向中高阶读者,不仅选题必须饶富价值、探讨必须极为深刻,各主题最好还独立以利选择阅读,却又最好彼此前後呼应环环相扣,并附良好交叉索引,予读者柳暗花明的强烈冲击。此种「专题条款」式的表现风格,在Scott Meyers的《Effective C++》和《More Effective C++》二书面世之後获得许多赞扬,也引来许多追随。
《Practical Java》和《Effective Java》二书,对前述重要而基础的技术细微处有着详尽、深刻、实用的介绍和剖析和范例,又以独立条款之姿展现,在内容的扎实度、可读性、易读性上表现均十分良好。为此,秉持并承继我为C++ 社区翻译《Effective C++》、《More Effective C++》的态度和机缘,我很开心再次由我负责,将《Practical Java》和《Effective Java》二书中译本呈献给Java 社区。
考虑本书读者应已具备Java编程基础,对於各种英文术语已有良好的接受度,我在书中保留了许多英文术语,时而中英并陈,包括class, object, interface, reference, instance, array, vector, stack, heap┅,也包括涉及Java关键字的一些用语如private, public, protected, static, abstract┅,不胜枚举(下页另有一个扼要说明)。本书努力在字型变化上突显不同类形的术语,以利读者阅读。本书支持网站有一个「术语 英中繁简」对照表,欢迎访问,网址如下。
《Practical Java》由刘永丹先生和我合力完成。永丹做前期初译工作,我负责後继的文字修润、技术检阅、大局风貌。永丹技术扎实,文字用心。没有他的协助,本书不可能在这个时间以这样的质量面世。谢谢永丹。
本书每一章起始处都有作者匠心独具收集的一些文摘语录。我们虽勉力译出,恐见识不足,贻笑大方,故均留下原文和出处,庶几不误读者。
前言回到顶部↑
让无知尽管信口开河吧,学习自有其价值
Let ignorance talk as it will, learning has its value.
J. de La Fontaine, The Use of Knowledge, Book viii, Fable 19
本书汇集了Java编程实践方面的建议、忠告、范例和讨论。本书的组织是一个个独立课程,每个课程谓之实践(PRAXIS,发音prak-sis),用以讨论特定主题。每个实践按各自独立的方式撰写。你可以从头阅读到尾,也可以挑选某些专题阅读。这种编排风格使你可以在短暂的闲暇中阅读此书。许多实践都少於5页,因此你可以在简短的时间内学习它们。
我在这本书中详细分析了某些设计(design)和编程(programming)方面的问题。我挑选主题的依据是编程实践上的有效(effective)和高效(efficient)性质。Java最被人抱怨的一点是效能(效率,performance),因此我以最大的篇幅讨论这一主题,探索使Java程式码执行得更有效率的技术。
我撰写本书,希望它能够作为指南,帮助你设计和撰码。它可以帮助你更全面地理解Java,让你撰写出更高效、更健壮和(或许最重要的是)更正确的程式码。
本书所有资讯都适用於各种Java编程,并不囿於伺服端(server)、客户端(client)或GUI(图形用户介面)编程。此外,你可以将这些资讯运用於Java的任一发行版本。
本书风格受了Scott Meyers所着的《Effective C++》和《More Effective C++》的影响。我发现他的风格对书籍组织非常有益,因此我决定采用类似的格式。
预期读者
本书是为已经掌握Java语言基础知识的程式员准备的。我假设读者已经具备Java语言和并行编程(concurrent programming)的工作经验,并理解物件导向(object-oreinted)的概念和术语。本书适用於「想获得如何高效使用Java之实用建议、讨论和范例」的程式员。
无论对Java编程老手或新手,本书都为他们提供了Java关键领域的资讯和讨论。本书提供充足的新资讯,即使经验丰富的程式员也能从考查他们业已熟悉的领域中获得极大收益。例如在某些场合,我以独特的方式讨论问题,帮助程式员以不同的方法思考,或使用与以往不同的角度看待事物。
Let ignorance talk as it will, learning has its value.
J. de La Fontaine, The Use of Knowledge, Book viii, Fable 19
本书汇集了Java编程实践方面的建议、忠告、范例和讨论。本书的组织是一个个独立课程,每个课程谓之实践(PRAXIS,发音prak-sis),用以讨论特定主题。每个实践按各自独立的方式撰写。你可以从头阅读到尾,也可以挑选某些专题阅读。这种编排风格使你可以在短暂的闲暇中阅读此书。许多实践都少於5页,因此你可以在简短的时间内学习它们。
我在这本书中详细分析了某些设计(design)和编程(programming)方面的问题。我挑选主题的依据是编程实践上的有效(effective)和高效(efficient)性质。Java最被人抱怨的一点是效能(效率,performance),因此我以最大的篇幅讨论这一主题,探索使Java程式码执行得更有效率的技术。
我撰写本书,希望它能够作为指南,帮助你设计和撰码。它可以帮助你更全面地理解Java,让你撰写出更高效、更健壮和(或许最重要的是)更正确的程式码。
本书所有资讯都适用於各种Java编程,并不囿於伺服端(server)、客户端(client)或GUI(图形用户介面)编程。此外,你可以将这些资讯运用於Java的任一发行版本。
本书风格受了Scott Meyers所着的《Effective C++》和《More Effective C++》的影响。我发现他的风格对书籍组织非常有益,因此我决定采用类似的格式。
预期读者
本书是为已经掌握Java语言基础知识的程式员准备的。我假设读者已经具备Java语言和并行编程(concurrent programming)的工作经验,并理解物件导向(object-oreinted)的概念和术语。本书适用於「想获得如何高效使用Java之实用建议、讨论和范例」的程式员。
无论对Java编程老手或新手,本书都为他们提供了Java关键领域的资讯和讨论。本书提供充足的新资讯,即使经验丰富的程式员也能从考查他们业已熟悉的领域中获得极大收益。例如在某些场合,我以独特的方式讨论问题,帮助程式员以不同的方法思考,或使用与以往不同的角度看待事物。
评论交流
共有49人开贴评论 180人参与评论 44人参与打分 查看
评价等级:







发表于:2009-5-1 10:57:00
正如译者侯捷所说,这本书和《Effective Java》都是Java领域不可多得的好书。和《Effective Java》一样,这本《Practical Java》200多页的厚度在Java书中算是薄的了,但其内容却价值极高。
当然,这并不是一本入门书,你最好在有了一些Java基础之后(比如读过了一本Java入门书之后),再读本书。这样你的水平会明显地、并且是扎实地得到提高。
不过,美中不足的是这本书(的英文原版)是1999年出版的,因此,它肯定无法涉及JDK 5.0之后加入的一些新特性。
然而,软件业中好书的一大特点就是:生命周期长。本书作为Java书中的经典,也有这个特性,你会发现其中的大多数内容并没有过时,相反,这些涉及Java本质的精细解说,在未来几年应该依旧会对我们的Java编程具有指导意义。
当然,这并不是一本入门书,你最好在有了一些Java基础之后(比如读过了一本Java入门书之后),再读本书。这样你的水平会明显地、并且是扎实地得到提高。
不过,美中不足的是这本书(的英文原版)是1999年出版的,因此,它肯定无法涉及JDK 5.0之后加入的一些新特性。
然而,软件业中好书的一大特点就是:生命周期长。本书作为Java书中的经典,也有这个特性,你会发现其中的大多数内容并没有过时,相反,这些涉及Java本质的精细解说,在未来几年应该依旧会对我们的Java编程具有指导意义。
评价等级:





发表于:2007-12-7 18:53:00
目前看完了除多线程以外的其他部分,个人感觉这本书属于必读书目,当然语言问题不是没有,因为我平时用繁体系统,所以可能感觉不是很明显吧。
目前在我看来,一个必须的Java阅读书目及顺序只有4本:Core Java-〉Practical Java-〉Thinking in Java-〉Effective Java。这样的难易/厚薄搭配才比较合理。最关键的是Practical Java内容不深不浅,正好起到承上启下的作用,而且它很薄,比Thinking in Java那本薄多了,虽然内容少,但是比较精要,很快就可以看完进入更高阶段。
十分可惜的是这两位译者没处理好繁简体问题,本来应该是一本绝对精品的。
目前在我看来,一个必须的Java阅读书目及顺序只有4本:Core Java-〉Practical Java-〉Thinking in Java-〉Effective Java。这样的难易/厚薄搭配才比较合理。最关键的是Practical Java内容不深不浅,正好起到承上启下的作用,而且它很薄,比Thinking in Java那本薄多了,虽然内容少,但是比较精要,很快就可以看完进入更高阶段。
十分可惜的是这两位译者没处理好繁简体问题,本来应该是一本绝对精品的。
| 我要写评论 |
| 查看所有评论交流(共49条) |








点击看大图





加载中...


