前言
明天纯正就是带你们来读读书的~
最近除了工作,顺便买回了本人很喜爱的作者新发售的一本书《On Java》,作者是我的老朋友布鲁斯·埃克尔,在 Java 畛域很有名,你可能没听过他的名字,但极有可能听过他的另一本书《Thinking In Java》,我想很多 Java 工程师都读过这本书,能够说是 Java 编程思维的良心之作。
尽管布鲁斯是我的老朋友,但我不得不吐槽一下,大略通读了一遍《On Java》之后,我心里大体认为是不如《Thinking In Java》的,可能和写小说一样,读者的要求高了,而作者的年纪大了。
我意识布鲁斯很多年了,他是个比拟风趣有趣的人,常常在书中闪烁其辞某编程语言的垃圾之处,同时又对该语言的将来做一点瞻望,算是一个很中肯且典型的直男程序猿。
最初说一点,我意识他,他不意识我。
注释
我着重看了本人比拟感兴趣的并发编程这一块,想晓得这位大佬对于目前 Java 并发编程是否有新的认识和意见,不出我所料,他没讲什么重要的货色,然而如同又讲了,带着吐槽批评式的口气,排列了他喜爱和厌恶 Java 并发编程的中央。
所以我把一些我感觉有意思的中央画进去,分享给大家,看看一个资深 Java 大佬对并发编程的了解。
1、大佬的并发定律
其实看到作者钻研出的这 4 条定律时,我还是挺意外的,第一句就点题了,不要应用并发。
认真想想如同也对……再推敲一下咦有感觉……最初回顾一下这些年参加的我的项目……哇擦好有情理!
接下来 3 条根本算是总纲了,前面的内容都是对这几条的阐明。
2、你已埋下的隐患
这里就是对 2、3 条的具体阐明了,有些话我感觉略显啰嗦,我把对于程序员来讲比拟重要的一句话画进去了。
你很容易写出一个看起来运行失常但实际上有问题的并发程序。
看到这句话的时候是不是曾经开始默默关上本人的 IDEA 了,而后扫视了一遍本人提交的代码?
别看了,你埋的炸弹还少么,能看出花来吗。
看清楚作者前面那句:你这个问题只有满足最常见的条件时,才会将本人裸露进去。
我能够这么说,在座绝大部分同行去了下一家公司干活,可能上一家公司的新共事才会在你毫不知情的时候默默踩到你埋的地雷而后被炸个粉碎,而你在新公司也正在踩他人的雷,进去混都是要还的。
3、别否定你就是这种人
看到这里的时候,我忍不住亲了布鲁斯一口,他畅快的形容出了我始终以来在工作中说不清道不明的焦躁,因为你总会遇到这样的人,同时很难发现自己到底是不是这样的人。
我在工作前 3 年其实如履薄冰,感觉本人什么都学了,但去了公司发现什么都不会,怀揣着自我否定一点点实现他人安排的工作,直到工作 5 年当前才有一种醍醐灌顶的感觉,了解了本人做的是什么,接下来要学习哪个方向,以前学到那么多货色到底是怎么串联起来的,这是一种打通任督二脉的满足感。
等到工作 8 年之后,才真正开始回头看 Java 语言,对以前烦厌欲呕的 Java 根底提起莫名的趣味,同时喜爱看书,写案例,尝试浏览他人的源码等等,此时我才真正有本人一只腿迈进 Java 畛域的意识。
同时,在工作中会对许多能力个别但沟通较为偏执的共事产生抵触情绪,我有时会认为这是一种小孩儿看小孩耍脾气的感觉,这个只有在工作多年之后才会产生,作者很精确的论述出了我描述不出的这种解释。
同样的,我认为在这个成长的过程中,我肯定也成为过他人心中眼高手低的人。
我在这里能分享给大家的教训就是,在工作中多学习少争执,多和厉害的人走近一点,虚心把对方的货色都学过来,长此以往你会提高神速,这不是你在网上学习能失去的,肯定是在工作中。
4、高级 Javaer 都有过的想法
这里我为什么专门画进去,因为很多高级 javaer 肯定有过相似的想法,就是发现了 Java 并不善于做并发编程,是否能够用其余语言来实现,而 Java 只做他本人善于的事。
至多我以前就想过,可事实层面我认为是胡思乱想的,尤其是工作中,根本都是团队开发,这种想法就曾经简直被 pass 掉了,同时为了某一个畛域的实现专门引入一门编程语言甚至体系,得失相当,毕竟 Java 不善于但却成熟,光是网上卖课郎通知你的就有 N 种诸如《Java 千亿级高并发解决方案》、《Java 万亿级电商实战》等等这样的受用终生的鬼货色。
而你辛辛苦苦跟着学完后,发现玛德用不上,就像你学了《九阴真经》后认为能够当武林盟主最终却进了铁匠铺,而铁匠铺老板还不想听你鬼扯只想让你每天加班多打几把武器。
图片中我还画了个圈,我想不少人应该晓得这门语言,还蛮有名的,就是国内不太火,这有编程历史因素在外面,其实还有一门语言也蛮适宜的,而且这几年也挺火,我想你也猜到了,我感觉 5 年 + 的 Java 工程师都应该关注甚至学习一下。
5、我和大佬不约而同
这是靠近序幕的局部了,也是这位作者相熟的笔法,发泄完本人的情绪后又开始对 Java 的某新版本极尽赞美,典型的被 PUA 了。
但不得不说,Java8 我也认为是革命性的版本,在这个版本公布以前,作为 Java 工程师你甚至不会想到它敢做到这个境地,就像布鲁斯书中讲的,这是史诗般的魔法。
你能够在 Java8 的版本里发现一些其余语言的影子,这没什么,天下语言一大抄,倒退到肯定水平,曾经是防止不了的趋势了。
重要的是,这个版本给 Java 上油了,为后续的版本提供了生机,而 Java17 作为官网短暂反对版本的其中一个十分重要的版本,你能够发现有其余框架给它背书,比方 SpringBoot3 只反对 Java17,而 Jenkins 也发表在新版本放弃 Java8 并且该团队更举荐 Java17,IDEA 后续新版本可能也会放弃 Java8,这显著就是小圈子,有利益的勾连,但对 Java 自身倒退不是好事。
所以,Java8 的核心技术点最应该学习,如果当初还一点不会,连忙学吧,我认为这是后续版本的根底了,lambada 表达式、stream 流不用说了,是 Java8 版本的核心技术,CompletableFuture 作为 Java8 并发编程中最大的改良要花工夫好好学习,这也是本书作者所提到的,而且前面专门花了一个大章来讲 CompletableFuture。
作者尽管始终强调不要应用并发,但却对 Java8 的并发编程工具花了较大篇幅,我集体认为他更多的是一种见猎心喜,可是咱们面试常常会问到这个工具类相干的货色,看一下大佬对该工具的了解还是很有用的。
总结
《On Java》这本书说实话,我感觉没有作者的《Thinking In Java》写得好,可能有多种起因导致。
我说下我感觉不好的次要感触在哪里,一是有些中央翻译的不好,会给你带来困惑,二是作者给出的一些案例有本人的格调,而且例子我没感觉那么通俗易懂。
但总体上还是值得一看,尤其是他交叉了很多和其余如 C /C++、GO 等语言的比拟,还蕴含了本人对 Java 的了解,尤其是一些编程思维很间接,最初给出了林林总总有靠近 70 条的编程指南,我认为对于初学者建立将来工作中的编程思维是很有用的。
这位作者的文字中弥漫着一股浓烈的不举荐应用并发编程的滋味,我感觉是他多年工作的心得,所以大家在往后的工作中无妨能够借鉴下大佬的思维。
好了,我明天也就是带你读了下书,读的还开心吗。
自己原创文章纯手打,感觉有一滴滴帮忙的话就请点个 赞和 珍藏 吧~
自己长期分享工作中的感悟、教训及实用案例,喜爱的话也能够进入个人主页关注一下哦~