
本书范例 PraticalJavaCode.zip
译序如下。其他信息请叁考繁体版说明
开放档案如下:
档名 内容 大小 bytes practical-java-gb-chap1-3.pdf 不需密码即可开启。
档案含简略书签(目录连结)
以上所开放,不同於纸本出版品,是指以繁体版为本,转换为大陆术语後的版本,仍以繁体中文表现。扉页、译序、目录、细目、前言、致谢、1-3章 PraticalJavaCode.zip 本书范例源码
(原作者提供)139,288 不需密码即可开启。档案不含书签(目录连结)。
如欲下载,请将滑鼠移至上述 hyperlink,按右键,再选【另存目标...】即可。
译序
by 侯捷 面对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》由刘永丹先生和我合力完成。永丹做前期初译工作,我负责後继的文字修润、技术检阅、大局风貌。永丹技术扎实,文字用心。没有他的协助,本书不可能在这个时间以这样的质量面世。谢谢永丹。本书每一章起始处都有作者匠心独具收集的一些文摘语录。我们虽勉力译出,恐见识不足,贻笑大方,故均留下原文和出处,庶几不误读者。
侯捷
2003/07/08 于台湾.新竹jjhou@jjhou.com(电子邮箱)
http://www.jjhou.com(繁体)(术语对照表http://www.jjhou.com/terms.htm)
http://jjhou.csdn.net(简体) (术语对照表http:// jjhou.csdn.net/terms.htm)p.s. 本书已就英文版截至2003/07/08
之勘误表修正於纸本。■ 本书术语翻译与保留之大致原则:
※
广被大众接受之术语,无需额外说明,不在此列。例如继承(inheritance)、封装(encapsulation)、多态(polymorphism)。※
本书保留与Java关键字相关之术语不译,例如class, interface, private, public, protected, static, final, abstract, synchronized, serializable┅。※
本书保留数据结构名称不译,例如array, vector, list, map, set, stack, heap┅。"collection" 译为「群集」。※
"class" 及其所衍生之各种名词如subclass, superclass, immutable class, mutable class, base class, derived class等皆保留不译(时而英中并陈)。"object" 大多数时候译为「对象」,时而保留。"object reference" 保留不译,"reference" 亦不译。※
"type" 译为「型别」。"parameter" 译为「叁数」,"argument" 译为「引数」。"delegate", "delegation" 译为「委托」,"aggregate", "aggregation" 译为「聚合」。"composition" 译为「复合」。※
动词 "create" 译为「创建」或「建立」,描述物件之初次诞生。动词 "refer" 译为「指涉」或「指向」或「引用」。动词 "dereference" 译为「提领」。动词 "override" 译为「覆写」。动词 "overload" 译为「重载」。※
本书将Java class "methods" 译为函数,因为它等价於其他编程语言之 "function"。若直译为「方法」,行文缺乏术语突出感,恐影响阅读流畅;若不译,过於频繁出现又恐影响版面观感。※
本书将Java class "fields" 译为值域,等价於C++ 语言之 "data member"。※
本书将 "clone" 译为「克隆」,映照 "copy" 之於「拷贝」。非单纯保留 "clone" 是因为它时常做为动词并频繁出现,而我对术语的保留态度是尽量只考虑名词(偶有形容词)。※「
static值域与instance值域」、「reference对象与value对象」、「reference型别与primitive型别」等等术语保留部分英文,并使用特殊字型。※
本书支持网站有一个「术语英中繁简」对照表,欢迎访问,网址见上页。※
术语翻译有许多两难之处,祈愿读者体谅;译者勉力求取各方平衡,并尽可能於突兀处中英并陈。-- 侯捷