new konwledge
- from time to time 有时
- convey 传达,运输
- generally 通常
- capture 捕获,俘获
- hold 握住 (held的过去分词)
- held to be 被认为是
- beneficial 有益的
- group into 集合成
- from cover to cover 从头至尾
- stand on 坚持 ,依靠
- heavy 沉重的,大量的
- cross 交叉
- plot n.情节,v.划分,密谋
- through prep 通过 凭借,adj 直达的,完结的 adv 彻底,从头至尾
- in some way 在某种程度上,在某些方面
- where to go 去哪里
- coverage 关键功能
- idioms 习惯语,惯用语,方言
- appropriate adj适当的 v 占用
- where appropriate 在适当的地方
- know as 称为
- accessible 可进入的,可理解的
- even for 即使对于
- even adj 偶数的,平坦的,相等的,adv 甚至,即使,实际上 v 使平坦,使相等
- most of 大部分,大多数的
- derive 源于,起源
- paramount 至高无上的,最重要的
- ideally 理想地
- characterize v 描绘…的特性,具有…的特征
- majority 多数,成年
- major 主要的 n 成年人
- slavishly 奴隶般地
- discipline n 学科 v 训练
- for the most part 在极大程度上,多半
- robust 健壮的,强健的
- usually 通常,经常
- performance 性能,执行,表现
- approximate 近似,接近于
- nicknames 昵称,绰号
- readability 可读性,易读
- boilerplate 引用,样板文件
- deserve 应得,应受
- mention 提到,说起
- export 输出
- by which 由
- be short for 是…的简称
- preferable 更好的
- prefer 更喜欢,喜欢
- coincidence 巧合,同时发生
- union 联合,联盟
翻译_Introduction(简介)
这本书的设计是帮助你,让你高效的使用java编程语言和它的基础库,如:java.lang , java.util 和 java.io ,包括它的子包比如 java.util.concurrent 和 java.util.function 。有时别的库也会被讨论。
这本书由90项组成,每一项都传达一种规则。这种规则包含的实践通常被最棒的和最有经验的工程师认为是有益的。这些零散地项被集合成11个章节,每一个章节都涵盖了一种广泛的软件设计方向。这本书没有从头至尾阅读的意图,每一项都仅仅只依赖于它自己,或多或少,这些项大量地交叉,因此你可以很容易地划分出你自己的课程通过本书。
许多新的功能被添加到这个自从这本书上个版本被发布以来。在这本书大多数的项用这些新功能在某些方面。下面这个表格向你展示了去哪里关于主要的关键功能的覆盖:
功能 | 项目 | java版本 |
---|---|---|
Lamdbas | Items 42-44 | java 8 |
Streams | Items 45-48 | java 8 |
Optionals | Item 55 | java 8 |
Default methods in interfaces | Items 21 | java 8 |
try-with-resources | Items 9 | java 7 |
@SafeVarargs | Items 32 | java 7 |
Modules | Item 15 | java 9 |
大多数的项用用编程列子来解释。这本书的一个关键功能是,它包含代码例子来解释许多设计模式和习惯语法。在适当地地方,它们相互引用给标准引用工作在这片区域【Gramma95】
许多项包含一个或者多个编程例子解释了一些实践应该避免。列如这些例子,称为 “antipatterns” ,被清晰地用一句注释 ”//Never do this” 来标注。在每一个列子中,这个项解释了为什么这个列子是坏的并且建议一个可供选择的方法。
这本书不适合初学者:它假定你已经很适应java了。如果你还不是,考虑许多好的介绍的入门书之一,列如Peter Sestoft‘s Java Precisely。当Effecive Java被设计成可以理解的对于任何有这门语言的工作知识的人,它提供了丰富的思考即使对于高级工程师
在这本书大部分规则源于一些基础原则。清晰和简洁是最重要的。一个组件的使用者应该从未被它的行为感到惊讶。组件应该尽可能的小直到没有更小的。(作为本书的使用者,术语组件参考许多可重用软件部分,从一个独立的方法到一个由多个包组成的复杂框架)。代码应该被重用而不是复制。依赖在组件之间应该保持到最小。错误应该尽可能的在它们被制造出来时被检测到,理想在编译期。
当规则在本书中不能被100%的应用,它们将塑造最好的编程实践在大多数情况下。你不应该奴隶般地跟随这些原则,但违反这些原则仅仅偶然的情况并且有好的原因。学习编程的艺术,像大多数别的训练,由第一次学习规则然后学习什么时候打破它们。
在极大程度上,这本书没有关于怎么执行。它是关于写程序,清晰的、正确的、可用的、健壮的,灵活的,并且是可维护的。如果你这样做了,它通常是一个相对简单关系为了得到你需要的性能(Item 67)。一些项讨论了性能的关系,并缺这些项的一部分提供了性能的数据。这些数据,被介绍用词汇“on my machine”应该被认为是接近于最好的。
关于作者机器配置这大致为,i7-4770k 3.5Ghz ,16g内存,windows7,OpenJDK。
当讨论Java编程语言和它的库的功能时,参考指定的版本有时是必要的。为了方便,这本书偏好用绰号给官方的发行版名字,这张表展示了映射关系在官方名字和绰号之间。(表已省略)
这个列子被合理的完成,但是偏好易读性超过了完整。他们自由地用来自包java.util 和 java.io的类。为了编译例子,你应该添加一个或多个导入声明,或者别的引用。本书的网站
,包含了每个列子的扩展版本,你可以编译和运行它们。
对于大部分,这本书使用技术术语作为他们定义在javaSE8【JLS】,一些术语应特别的提到。这门语言支持4种类型:interface接口(包含注解annotation),class(包含枚举enum),数组和原始数据类型。一至三被称为引用数据类型。类实例和数组是对象,原始类型的值并不是。一个类的成员由它的字段,方法,成员类,和成员接口组成。一个方法的签名由它的名字和它的形式参数类型组成;这个签名不包括方法的返回类型。
这本书使用的一些术语不同于“The Java Language Specification”。不同于【JLS】,这本书使用inheritance作为subclassing子类的同义词。用术语inheritance替代interface接口,这本书简单的陈述了一个类实现一个接口或者一个接口继承了别的。为了描述这种访问等级,当没有什么指定的时候引用这种访问等级,这本书用传统的package-private包私有代替技术正确的包访问。
这本书用一些技术术语,这些技术术语没有定义在【JSL】。这术语输出API,或者简单API,参考类和接口,构造,成员,和序列化形式由一个程序员访问一个类,接口,或者一个包。(术语API,这个是应用程序接口的简称,是偏好的使用为了更合适的使用术语接口以避免这门语言名字的构造)。一名程序员用api是参考api的用法。一个实现的类用一个api是一个客户端的API。
类,接口,构造,成员,和序列化形式是集合称为api成员。一个输出的API由API成员,这些包外部可访问的成员定义了api。API成员有许多客户端可以使用并且api的作者提供了支持。并非巧合,他们仅是Javadoc工具生成的文档元素在它的默认操作模式下。宽泛的说,一个包的api有public公开的和protected受保护的成员还有每个公开的类和接口的构造方法在这个包中。
在java9中,一个模块系统被添加进了平台。如果一个库使用模块化系统,它输出的api是所有包的输出的api的一个联合输出通过一个包模块的声明。