《Effective Java》:Java编程圣经,Bloch大师亲授高效优雅编程之道!

是谁?作品一出版就获得著名的Jolt图书大奖,每一版本豆瓣评分均超9.0!

连Java之父James Gosling都多次表白他的作品“我很希望我10年前就能拥有这本书。有人可能认为我不需要任何Java方面的书籍,但是我需要这本书”,还在 JavaOne 2001 上直呼“去买这本书吧!”。
他就是《Effective Java》的作者、前Google首席Java架构师、Java集合框架创办人、卡内基梅隆大学(CMU)软件研究所的兼职教授——Joshua Bloch!

在这里插入图片描述

Bloch大神在《Effective Java》书中频频抛出硬核金句,至今仍被程序员广泛引用:

“API应该易于使用且不易被滥用。”

“如有疑问,请将其排除在外。”

“程序越干净、越好,运行速度就越快。”

“编程既涉及工艺,也涉及数学,还涉及人际交往能力和散文技巧。”

“如果你不能通过观察来判断一个程序做了什么,它可能不会做你想做的事。”

“同大多数学科一样,学习编程艺术首先要学会基本的规则,然后才能知道什么时候去打破规则。”

如果你还不太了解这位美国著名程序员,让我们一同探索他的编程人生,领悟他的编程智慧……

初探编程:“天啊,真酷,程序真的能学习。”

1961年8月28日,Joshua Bloch出生在美国纽约长岛萨福尔克县。这一年,是程序设计语言COBOL问世之际,也是麻省理工学院设计的第一台分系统计算机完成之际。
Bloch的编程之路最早可以追溯到1971年。当时,Bloch的父亲是美国Brookhaven国家实验室的化学家,他需要参加一个程序设计培训班。那时候,电脑都是放在玻璃窗背后的大型机,想要“编程”只能把写好的程序卡片交给操作员。虽然无法亲自动手,但刚上小学四年级的Bloch还是被计算机可以帮助自己做事这一点震撼了。所以,在他父亲上课的那段时间,Bloch跟父亲学了一点儿Fortran。

在这里插入图片描述

但Bloch真的对程序产生强烈的兴趣却是在几年后。因为让他最兴趣的是分时系统。
1973年,长岛有一台DEC system-10电脑,供萨福尔克县内所有的学校使用,佛罗里达州纳苏县也有一台。很神奇的是,很多著名人物的事业都是从这两台DEC system-10电脑开始的。因为对分时系统特别感兴趣,所以,在此后三年里,Bloch也跟其他人一样,开始写BASIC程序。
Bloch还记得他写的第一个有趣的程序。1977年7月4日,Bloch为经典的二十问游戏写了一个程序,叫“猜动物”。这个程序包含一个二叉树,是非题位于它的内部节点,动物位于它的叶节点上。如果用户所提的动物是叶节点上没有的,它会向用户提出是非题,通过区别新动物和它猜出的错误动物之间的差异来了解新动物。二叉树保存在硬盘上,这样程序可以越来越“聪明”。
Bloch当时就被惊讶到了:“天啊,真酷,程序真的能学习。”这也是他一生难忘的瞬间。
Bloch还保存着当年写的程序,这些程序是印在电信打印纸上的。如今回头再看这些程序,Bloch发现,他写的代码的部分风格从那个时候起就一直没变过。

在这里插入图片描述

编程实在是太有趣了,因此,Bloch考上了哥伦比亚大学工程与应用科学学院,选择主修计算机科学,毕业后还选择继续深造,在卡内基美隆大学获得了计算机科学博士学位。他在1990年发表的博士论文“A Practical Approach to Replication of Abstract Data Objects”还曾被提名为ACM杰出博士论文奖。

哺育Java成长,成为Java幕后英雄

1996年1月,第一个JDK1.0正式版本诞生,Java这门新的编程语言开始崭露头角。
就在这一年,身为Transarc公司高级系统设计师的Bloch放弃之前打下的基业,前往西部,加入了Sun公司的 JavaSoft 部门,开启了他在Java世界的传奇之旅。

在这里插入图片描述

接下来的 5 年,有着相当丰富的编程背景的Bloch担任了Java平台类库的架构师,设计、实现和维护过许多类库,比如DK1.1中的java.math、1.4中的assertions、Java Collections Framework,也为其他许多类库提过意见。其中,Collections Framework以其出色的设计和功能而受到了广泛的认可,并且获得了当年的Jolt大奖。
在Java迭代到了J2SE5.0时,即代号“Tiger”(虎)的版本,Joshua肩负起了推动这一版本向前的重任。Joshua与吉拉德·布拉查(Gilad Bracha)一起领导了团队,为Java 5增加了泛型、枚举类型、注解、自动装箱和 for-each循环等新语言特性,还设计了并发类库——java.util.concurrent。在他的引领下,这个版本成为Java版本史上第二个“里程碑”式的突破。
因为贡献过于杰出,所以Bloch获得了Sun公司“杰出工程师” (Distinguished Engineer)的称号。

在这里插入图片描述

2004年7月,Bloch离开了Sun公司,加入了正蓬勃发展的Google,成为Google的Java首席架构师。同年12月,《Java 开发者杂志》将Bloch列为”全球顶尖的40位软件开发者”之一。
在Google公司,Bloch依旧身兼数职。他主要负责Java基础架构,继续开发并发和集合API,同时也是Google与Java 社区的联络人,是JCP(Java Community Process)的代表,是多个专家小组的成员。他还使用Java平台来开发 Google内部使用的类库,了解用户的感受。
即使在Google工作,Bloch仍然积极参与Java的发展。他和Doug Lea一起参加JSR166专家组,还为Java平台的语言和库做其他工作。此外,他也是JSR201和JSR175的领导者。
Bloch提出了Java编程语言的扩展具有两个特性:简明实例创建表达式(CICE)(与Bob Lee和Doug Lea共同提出)和自动资源管理(ARM)块。CICE和ARM的结合构成了“支持Java闭包”的三个早期提案之一,ARM块被添加到JDK7中。
2012年8月3日,Bloch在X平台上发文“在 Google 工作了8年后,现在是我继续前进的时候了”,表示他从Google 离职了。

在这里插入图片描述

如今,Java如火如荼地发展着,Bloch也继续前进,不仅成为卡内基梅隆大学软件与社会系统系的兼职教授,一边做研究一边教授软件工程课程,同时,他还继续升级自己的经典之作,在Java程序员的求学之路上贡献自己的力量。

在这里插入图片描述

出书《Effective Java》斩获Jolt图书大奖

能把一门语言钻研透的,是高手;写得出备受推崇的教程,是专家;既会研究又会写,还活跃在技术前沿,是大师!Bloch就是二者兼备的世界级大师。
在Sun公司工作的那段时间, Bloch收获颇多。在他看来,能够在 Java 平台不断成熟的过程中主持这些类库的设计工作,这样的机会千载难逢。在这个过程中,关于 Java 语言,他学到了很多很多——哪些行得通,哪些行不通,以及怎样使用 Java 语言及其类库取得最好的效果。
于是,他想和读者分享自己的经验,使读者可以效仿他成功的地方,同时规避他犯过的错误。
而这本《Effective Java》便是他的一次尝试。他看过Scott Meyers的《Effective C++》,该书包含50个条目,每个条目讲解一条可以帮程序员改进程序和设计的特定规则。他觉得这种格式非常好,便借鉴到自己的书中,希望读者也能喜欢。

在这里插入图片描述

自2001年《Effective Java》首版问世以来,这本书便以其卓越的内容和实用的编程建议,迅速在Java程序员中赢得了极高的声誉,成为业界公认的必读经典。
2001年出版第1版,2008年出版第2版,2018年出版第3版,本本都是豆瓣9.0+高分,20余年全球畅销不衰,日文版在日本也十分受欢迎。

在这里插入图片描述

在这里插入图片描述

《Effective Java》不仅受到读者认可,还受到了众多同行专家和作者的称赞:
“这是一本很棒的书,里面塞满了关于使用Java编程语言和面向对象编程的好建议。”

——Gilad Bracha,《Java语言规范,第三版》的合著者

“对于有经验的开发人员来说,这是很好的操作方法资源。”

——John Zukowski,多本Java技术书籍的作者

“10/10——任何有志于写出优秀的Java代码的人都应该拥有这本书。这是一本罕见的书籍,其中的信息不会随着JDK库的后续版本而过时。”

——Peter Tran,JavaRanch.com开发者

“这是一本真正优秀的书,由设计了几个很好的Java平台API(包括 Collections API)的人完成。”

—— James Clark,XML工作组的技术主管

“很棒的内容。类似于Scott Meyers的Effective C++。 如果你了解Java的基础知识,那么这本书一定是你的下一本书。”

——Gary K. Evans,Evanetics公司导师兼顾问

“Josh Bloch对最佳实践提供了深刻的见解,而这些最佳实践只有经过多年的研究和经验才能真正发现。”

——Mark Mascolino,软件工程师

“这是一本极好的书。它清楚地涵盖了成为真正的Java大师所需的许多语言/平台的微妙之处和技巧。”

——Victor Wiewiorowski,ValueCommerce 公司开发和代码质量经理副总裁,日本东京

“我两周前拿起了这本书,可以肯定地说,我在三天的阅读中学到的知识比我在三个月的学习中学到的还要多!这是一本很棒的书,也是我Java库的一个受欢迎的补充。”

——Jane Griscti,I/T 咨询专家

在这里插入图片描述

如果你曾读过这本书的前两版,你就能体会到Bloch在传授编程最佳实践和撰写清晰、可维护代码方面的精湛技艺。现在,全新升级的《Effective Java》第3版中文版已经推出,为Java开发者带来了更深层次的编程智慧。
第3版在前两个版本的基础上做了很大的改进:
· 内容分为 12 章,包含 90 个条目,形式简洁。每个条目都讲述了对 Java 的独到见解,阐明了如何编写高效、优雅的程序,并且提供了清晰、易懂的示例代码;

· 涵盖了从Java 5到Java 9的种种特性;

· 增加了 Lambda 表达式、流、Optional 类、接口默认方法、try-with-resources、 @SafeVarargs 注解、模块等Java 7/8/9中引入的新特性;

· 介绍了如何充分利用泛型、枚举、注解、自动装箱、for-each 循环、可变参数、并发机制等各种特性,帮助读者更加有效地使用 Java 编程语言及其基本类库(java.lang、java.util 和 java.io),以及子包(如 java.util.concurrent 和java.util.function 等)。

在这里插入图片描述

最后,小异想用Bloch的一句话“小即是美,但简单不等于容易”与大家共勉,希望大家继续在编程的道路上追求卓越。

《Effective Java中文版(原书第3版)》重磅上新,限价5折抢购!

在这里插入图片描述

本书配套资源丰富,包含实战项目源码、视频教程、资源文件等,新版赠送了Java学习效率手册(电子版)。读者在阅读过程中结合使用这些资源,可以将知识融汇贯通,在工作中应用起来更加得心应手。

购买链接=》https://item.jd.com/14419018.html

  • 118
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 42
    评论
读者评论 前言 简介 第1章 对象导论 1.1 抽象过程 1.2 每个对象都有一个接口 1.3 每个对象都提供服务 1.4 被隐藏的具体实现 1.5 复用具体实现 1.6 继承 1.6.1 “是一个”(is-a)与“像是一个”(is-like-a)关系 1.7 伴随多态的可互换对象 1.8 单根继承结构 1.9 容器 1.9.1 参数化类型(范型) 1.10 对象的创建和生命期 1.11 异常处理:处理错误 1.12 并发编程 1.13 Java与Internet 1.13.1 Web是什么 1.13.2 客户端编程 1.13.3 服务器端编程 1.22 总结 第2章 一切都是对象 2.1 用引用操纵对象 2.2 必须由你创建所有对象 2.2.1 存储到什么地方 2.2.2 特例:基本类型 2.2.3 Java中的数组 2.3 永远不需要销毁对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 创建新的数据类型:类 2.4.1 域和方法 2.4.2 基本成员默认值 2.5 方法、参数和返回值 2.5.1 参数列表 2.6 构建一个Java程序 2.6.1 名字可见性 2.6.2 运用其他构件 2.6.3 static 关键字 2.7 你的第一个J ava程序 编译和运行 2.8 注释和嵌入式文档 2.8.1 注释文档 2.8.2 语法 2.8.3 嵌入式HTML 2.8.4 一些标签示例 2.8.5 文档示例 2.9 编码风格 2.10 总结 2.11 练习 第3章 操作符 3.1 更简单的打印语句 3.2 使用Java操作符 3.3 优先级 3.4 赋值 3.4.1 方法调用中的别名问题 3.5 算术操作符 3.5.1 一元加、减操作符 3.6 自动递增和递减 3.7 关系操作符 3.7.1 测试对象的等价性 3.8 逻辑操作符 3.8.1 短路 3.9 直接常量 3.9.1 指数记数法 3.10 按位操作符 3.11 移位操作符 3.12 三元操作符 if-else 3.13 字符串操作符 + 和 += 3.14 使用操作符时常犯的错误 3.15 类型转换操作符 3.15.1 截尾和舍入 3.15.2提升 3.16 Java没有“sizeof” 3.17 操作符小结 3.18 总结 第4章 控制执行流程 4.1 true和false 4.2 if-else 4.3 迭代 4.3.1 do-while 4.3.2 for 4.3.3 逗号操作符 4.4 Foreach语法 4.5 return 4.6 break和 continue 4.7 臭名昭著的“goto” 4.8 switch 4.9 总结 第5章 初始化与清理 5.1 用构造器确保初始化 5.2 方法重载 5.2.1 区分重载方法 5.2.2 涉及基本类型的重载 5.2.3 以返回值区分重载方法 5.3 缺省构造器 5.4 this关键字 5.4.1 在构造器中调用构造器 5.4.2 static的含义 5.5 清理:终结处理和垃圾回收 5.5.1 finalize()的用途何在 5.5.2 你必须实施清理 5.5.3 终结条件 5.5.4 垃圾回收器如何工作 5.6 成员初始化 5.6.1 指定初始化 5.7 构造器初始化 5.7.1 初始化顺序 5.7.2. 静态数据的初始化 5.7.3. 显式的静态初始化 5.7.4. 非静态实例初始化 5.8 数组初始化 5.8.1 可变参数列表 5.9 枚举类型 5.10 总结 第6章 访问权限控制 第7章 复用类 第8章 多态 第9章 接口 第10章 内部类 第11章 持有对象 第12章 通过异常处理错误 第13章 字符串 第14章 类型信息 第15章 泛型 第16章 数组 第17章 容器深入研究 第18章 Java I/O系统 第19章 枚举类型 第20章 注解 第21章 并发 第22章 图形化用户界面 附录A 补充材料 可下载的补充材料 Thinking in C:Java的基础 Java编程思想 研讨课 Hands-on Java研讨课CD Thinking in Objects研讨课 Thinking in Enterprise Java Thinking in Patterns(with Java) Thinking in Patterns研讨课 设计咨询与复审 附录B 资源 软件 编辑器与IDE 书籍 分析与设计 Python 我的著作列表 索引
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

几何心凉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值