Skip to content

Latest commit

 

History

History
54 lines (29 loc) · 6.05 KB

read-onJava.md

File metadata and controls

54 lines (29 loc) · 6.05 KB

《On Java》这本书值得读吗?

这本书并不是《Thinking in Java》的升级版,而是一本全新的 Java 书籍,你不能以 Java 编程思想的角度来看它。

这本书的封面太有意思了,好似一个刚进工厂的新手把机器搞冒烟了。。。。。。如果你说这能映射到"我是一个 Java 新手我很容易把机器搞冒烟所以我要努力学习这本书,好好钻研获取技能,争取让我的师傅对我刮目相看",但是为什么基础卷还是把机器搞冒烟了?难道是机器出 bug 了?

翻开封面,映入眼帘的是埃大叔的亲笔签名,还有嗯。。。。。。这该怎么解读?埃大叔灵魂附体?但是看起来好像埃大叔头发还蛮不错的。

也有可爱的一面,好像他一直都挺可爱的。

什,什么?埃大叔是谁?你竟然连埃大叔是谁都不知道吗。。。?有必要给各位普及一下了。

埃大叔的原名是 Bruce Eckel,我一般亲切的称为埃大叔。Bruce Eckel 是 MindView 公司的总裁,MindView 是向客户提供软件咨询和培训的公司,他同时是 C++ 标准委员会拥有表决权的成员之一,拥有应用物理学学士和计算机工程硕士学位。埃大叔主要是研究 C++ 这门语言的,C++ 语言他出了四本书,其中也有一本非常盛名的书就是《Thinking in C++》,这本书也可称为 C++ 圣经。Java 应该是埃大叔新拓展的一门学科,不过人家写的《Thinking In Java》同样是 Java 界的圣经,而《On Java》这本书可以认为是 Java 编程思想的升华和补充。所以我觉得可以管埃大叔叫做埃圣了。

所以就可以解答一个问题,为什么我明明读了一本 Java 书,内容中却出现了这么多和 C++ 相关的比较,毕竟人家是 C++ 标准委员会的。

下面回到这本书的内容中来。

我通读了一遍《On Java》这本书,我发现作者的叙述风格要比编程思想更容易让人接受,入门门槛对小白愈加友好。同时这本书也解决了很多编程思想所没有的痛点:比如这本书也很好的解释了值传递引用传递这种没啥意思但却依然有无数程序员为之辩解的无聊问题。

这一版新加入了许多特性,这些特性都是基于 Java 8、11、17 的新特性来编写,比如局部变量类型推断、引入模块化的特性、lambda 表达式和函数式编程、流、引入密封类、引入 record 类型等,还是非常值得一读的。这次书籍新特性的更新速度终于快赶上 JDK 更新的速度了。

在 《On Java》进阶卷中完全是以函数式编程的角度来撰写的,尤其是后面的并发、IO 流、设计模式等内容,可以看出作者深厚的编程功力。这同时也说明了以后慢慢的函数式编程会成为主要的编程方式,千万不要再以什么函数式编程不好维护等等理由来拒绝学习新东西了,那只能说明你选择了躺平。。。。。。

特别要提的一点就是进阶卷中引入了 lambda 设计模式,非常新颖,而且市面上很少有以函数式编程的角度来讲设计模式的,这部分内容对于工作几年的同学来说强烈推荐!

《On Java》还有一个显著的变化就是这一版多了很多图,但是相比我写的文章来说,图还是少很多,这让我一度认为埃大叔是个不爱画图的作者,而且很多代码的示例是直接从《Java 编程思想》拿过来用的,只是换了一种叙述风格,更容易让人接受。

我评书从来都不会只讲好的方面,所以不足之处也要提出来,这本书深度不够,而且让我觉得奇怪的是,《ON Java》 基础卷竟然会讲到 JVM,这其实挺不应该的。如果是老油子当做查漏补缺肯定会给埃大叔提出各种细节没有描述清楚的问题,然而对新手来说这部分内容就直接劝退了,相对来说,《Java 编程思想》这部分内容要好很多,不过《Java 编程思想》确实不太适合大多数刚入门的小白,尤其是对象那一章节的描述,我相信 99% 的小白都会被直接劝退。

搞 Java 的应该都很清楚,国内还有一位周姓大佬写出来的深入理解 JVM 相关书籍至今无人超越,想要深入 JVM,那本书是你必看的经典。

还有一个问题是这本书的很多代码命名不太规范,比如常见的 A(),B(),C(),f() 等方法命名,Parcel 1 - 11 类的命名(虽然我承认这对阅读有非常大的帮助),A B 等类的命名等。

上面说了这么多,其实总结来讲 《On Java》当然是一本非常好的 Java 入门 + 进阶书籍,选择的理由综合有下面这几点 :

  • 这本书覆盖的知识面比较广,系统性很强,比如我们讲类的初始化,那么这本书就给你罗列了很多初始化的条件,比如代码块,实例变量,静态变量,静态代码块,构造方法初始化的先后顺序。
  • 比较有趣,因为埃大叔是个比较有趣的人,所以他写出来的东西不会特别一板一眼,我看《On Java》的时候就发现了很多埃大叔的冷幽默,文字表现出来的冷幽默要细细品尝,和快餐的短视频图个乐呵是完全不一样的,越嚼越有意思。
  • 知识点的讲解比较深入,从这本书中可以看出来作者其实是极力的想要带我们深入一下,但是却受制于这本书的调性和受众群体,他克制住了,我想作者一定很难受,那种想要深入却要照顾大众的心理,还是很迷人的。
  • 加入了非常多的新特性,我们大家现在接触的最多的应该只局限于 Java 8 了,毕竟没有企业和员工有时间天天研究新特性的,因为没有产出和生产力啊!不过这本书很多新特性都给你安排上了!

总结

好书!