《On Java》值得讀嗎?
這本書(shū)并不是《Thinking in Java》的升級(jí)版,而是一本全新的 Java 書(shū)籍,你不能以 Java 編程思想的角度來(lái)看它。
這本書(shū)的封面太有意思了,好似一個(gè)剛進(jìn)工廠的新手把機(jī)器搞冒煙了。。。。。。如果你說(shuō)這能映射到"我是一個(gè) Java 新手我很容易把機(jī)器搞冒煙所以我要努力學(xué)習(xí)這本書(shū),好好鉆研獲取技能,爭(zhēng)取讓我的師傅對(duì)我刮目相看",但是為什么基礎(chǔ)卷還是把機(jī)器搞冒煙了?難道是機(jī)器出 bug 了?

翻開(kāi)封面,映入眼簾的是埃大叔的親筆簽名,還有嗯。。。。。。這該怎么解讀?埃大叔靈魂附體?但是看起來(lái)好像埃大叔頭發(fā)還蠻不錯(cuò)的。

也有可愛(ài)的一面,好像他一直都挺可愛(ài)的。

什,什么?埃大叔是誰(shuí)?你竟然連埃大叔是誰(shuí)都不知道嗎。。。?有必要給各位普及一下了。
埃大叔的原名是 Bruce Eckel,我一般親切的稱(chēng)為埃大叔。埃大叔主要是研究 C++ 這門(mén)語(yǔ)言的,C++ 語(yǔ)言他出了四本書(shū),其中也有一本非常盛名的書(shū)就是《Thinking in C++》,這本書(shū)也可稱(chēng)為 C++ 圣經(jīng)。Java 應(yīng)該是埃大叔新拓展的一門(mén)學(xué)科,不過(guò)人家寫(xiě)的《Thinking In Java》同樣是 Java 界的圣經(jīng),而《On Java》這本書(shū)可以認(rèn)為是 Java 編程思想的升華和補(bǔ)充。所以我覺(jué)得可以管埃大叔叫做埃圣了。
所以就可以解答一個(gè)問(wèn)題,為什么我明明讀了一本 Java 書(shū),內(nèi)容中卻出現(xiàn)了這么多和 C++ 相關(guān)的比較,畢竟人家是 C++ 標(biāo)準(zhǔn)委員會(huì)的。
下面回到這本書(shū)的內(nèi)容中來(lái)。
我通讀了一遍《On Java》這本書(shū),我發(fā)現(xiàn)作者的敘述風(fēng)格要比編程思想更容易讓人接受,入門(mén)門(mén)檻對(duì)小白愈加友好。同時(shí)這本書(shū)也解決了很多編程思想所沒(méi)有的痛點(diǎn):比如這本書(shū)也很好的解釋了值傳遞和引用傳遞這種沒(méi)啥意思但卻依然有無(wú)數(shù)程序員為之辯解的無(wú)聊問(wèn)題。

這一版新加入了許多特性,這些特性都是基于 Java 8、11、17 的新特性來(lái)編寫(xiě),比如局部變量類(lèi)型推斷、引入模塊化的特性、lambda 表達(dá)式和函數(shù)式編程、流、引入密封類(lèi)、引入 record 類(lèi)型等,還是非常值得一讀的。這次書(shū)籍新特性的更新速度終于快趕上 JDK 更新的速度了。
在 《On Java》進(jìn)階卷中完全是以函數(shù)式編程的角度來(lái)撰寫(xiě)的,尤其是后面的并發(fā)、IO 流、設(shè)計(jì)模式等內(nèi)容,可以看出作者深厚的編程功力。這同時(shí)也說(shuō)明了以后慢慢的函數(shù)式編程會(huì)成為主要的編程方式,千萬(wàn)不要再以什么函數(shù)式編程不好維護(hù)等等理由來(lái)拒絕學(xué)習(xí)新東西了,那只能說(shuō)明你選擇了躺平。。。。。。
特別要提的一點(diǎn)就是進(jìn)階卷中引入了 lambda 設(shè)計(jì)模式,非常新穎,而且市面上很少有以函數(shù)式編程的角度來(lái)講設(shè)計(jì)模式的,這部分內(nèi)容對(duì)于工作幾年的同學(xué)來(lái)說(shuō)強(qiáng)烈推薦!
《On Java》還有一個(gè)顯著的變化就是這一版多了很多圖,但是相比我寫(xiě)的文章來(lái)說(shuō),圖還是少很多,這讓我一度認(rèn)為埃大叔是個(gè)不愛(ài)畫(huà)圖的作者。
我評(píng)書(shū)從來(lái)都不會(huì)只講好的方面,所以不足之處也要提出來(lái),這本書(shū)深度不夠,而且讓我覺(jué)得奇怪的是,《On Java》 基礎(chǔ)卷竟然會(huì)講到 JVM,這其實(shí)挺不應(yīng)該的。如果是老油子當(dāng)做查漏補(bǔ)缺肯定會(huì)給埃大叔提出各種細(xì)節(jié)沒(méi)有描述清楚的問(wèn)題,然而對(duì)新手來(lái)說(shuō)這部分內(nèi)容就直接勸退了,相對(duì)來(lái)說(shuō),《Java 編程思想》這部分內(nèi)容要好很多,不過(guò)《Java 編程思想》確實(shí)不太適合大多數(shù)剛?cè)腴T(mén)的小白,尤其是對(duì)象那一章節(jié)的描述,我相信 99% 的小白都會(huì)被直接勸退。
搞 Java 的應(yīng)該都很清楚,國(guó)內(nèi)還有一位周姓大佬寫(xiě)出來(lái)的深入理解 JVM 相關(guān)書(shū)籍至今無(wú)人超越,想要深入 JVM,那本書(shū)是你必看的經(jīng)典。

還有一個(gè)問(wèn)題是這本書(shū)的很多代碼命名不太規(guī)范,比如常見(jiàn)的 A(),B(),C(),f() 等方法命名,Parcel 1 - 11 類(lèi)的命名(雖然我承認(rèn)這對(duì)閱讀有非常大的幫助),A B 等類(lèi)的命名等。
上面說(shuō)了這么多,其實(shí)總結(jié)來(lái)講 《On Java》當(dāng)然是一本非常好的 Java 入門(mén) + 進(jìn)階書(shū)籍,選擇的理由綜合有下面這幾點(diǎn) :
這本書(shū)覆蓋的知識(shí)面比較廣,系統(tǒng)性很強(qiáng),比如我們講類(lèi)的初始化,那么這本書(shū)就給你羅列了很多初始化的條件,比如代碼塊,實(shí)例變量,靜態(tài)變量,靜態(tài)代碼塊,構(gòu)造方法初始化的先后順序。 比較有趣,因?yàn)榘4笫迨莻€(gè)比較有趣的人,所以他寫(xiě)出來(lái)的東西不會(huì)特別一板一眼,我看《On Java》的時(shí)候就發(fā)現(xiàn)了很多埃大叔的冷幽默,文字表現(xiàn)出來(lái)的冷幽默要細(xì)細(xì)品嘗,和快餐的短視頻圖個(gè)樂(lè)呵是完全不一樣的,越嚼越有意思。 知識(shí)點(diǎn)的講解比較深入,從這本書(shū)中可以看出來(lái)作者其實(shí)是極力的想要帶我們深入一下,但是卻受制于這本書(shū)的調(diào)性和受眾群體,他克制住了,我想作者一定很難受,那種想要深入?yún)s要照顧大眾的心理,還是很迷人的。 加入了非常多的新特性,我們大家現(xiàn)在接觸的最多的應(yīng)該只局限于 Java 8 了,畢竟沒(méi)有企業(yè)和員工有時(shí)間天天研究新特性的,因?yàn)闆](méi)有產(chǎn)出和生產(chǎn)力啊!不過(guò)這本書(shū)很多新特性都給你安排上了!
成套購(gòu)買(mǎi)的話,只需要160 元,套裝共兩冊(cè),要知道套裝書(shū)的價(jià)格有優(yōu)勢(shì),現(xiàn)在市面上價(jià)格最低的就是 179.8 元。
這是 cxuan 特意找出版社申請(qǐng)的價(jià)格,只限今天一天,過(guò)期就沒(méi)有了。
