學Java,Java書籍的最佳閱讀順序

疫情以來,好久沒出差了,今天出差去趟上海,早上 4 點多就起牀了,到機場天都沒亮。到登機口離起飛還一小時,趁着等飛機的時間,抓緊碼字,把這篇文章收個尾。

今天和大家說說學 Java 的讀書路線。路線中的書籍我自己都看過,希望整理的這份讀書路線,能幫大家少走彎路,對大家學 Java 有個參考。

初學乍練

入門 Java,推薦《Java核心技術》第 11 版,這其實是一套書,分爲兩本:

  • 卷1 基礎知識(豆瓣 9.2 分)
  • 卷2 高級特性(豆瓣 8.4 分)

我估計 70% 的 Java 程序員入門看的是這本書,寫的經典、全面,對 Java 各種特性,都會有對應的代碼示例。

不過,這裏的內容,有不少是沒必要學的。我在以前的文章提起過,大家可以參考。

同時,光看這本書作爲入門有個問題,就是隻能知其然,卻不知所以然。而不知所以然,必然會導致咱們的基礎會不夠牢靠。

所以再推薦一本書配合《Java核心技術》一起看,書的名字叫《Java編程的邏輯》(豆瓣 9.1 分),作者馬俊昌。

這本書講解 Java 基礎知識的基礎上還會告訴你底層的原理,比如,Java 的枚舉本質是什麼,還會告訴你 Java 爲什麼這樣設計 API。

總之,《Java核心技術》和《Java編程的邏輯》聯合學習,算是珠聯璧合,對入門 Java 是再合適不過的了。

這裏多說幾句,入門打基礎十分重要,對於編程這種實踐類的學習,想打好基礎,光靠讀書,是遠遠不夠的。一定要經過大量的代碼練習。所以,在這個時期一定要多作代碼練習。這裏,我給出一些可以自己嘗試的練習:

  • 排序算法的小練習
  • 字符串查找的小練習
  • 對系統文件做下增刪查改
  • 遞歸的小練習
  • 使用 Java 集合的小練習
  • 寫個小遊戲、小東西能綜合訓練下學到的所有技能

得窺門徑

做程序員,大部分的時候,咱們都需要通過寫各種各樣的 SQL 操作數據庫。咱們是 CRUD Boy 嘛。

所以,SQL 咱們要學,學 SQL 我推薦《SQL必知必會(第5版)》(豆瓣 9.5 分)。

這本書的組織結構非常好,哪怕是你對 SQL 一竅不通,也能通過這本書的引導,由淺入深的把 SQL 語言學個七七八八。

更重要的是,這本書叫必知必會,也就是說,它的內容都是精挑細選,必須學的內容。裏面半分冗餘的知識點都沒有,內容全是乾貨。一定要好好讀這本書。

略有所成

學會了 Java 基礎,知道了怎麼用 SQL 之後,如果往下走,想繼續提升自己該學什麼?

我的答案是去深入掌握多線程編程。因爲只有懂了多線程編程,咱們才能處理各種稍微困難的需求。比如,快速處理大量用戶對系統的訪問;又比如,想同時訪問多個第三方接口。

多線程編程又叫併發編程,其實是很複雜的事情,看一本書就想掌握它是不太現實的。我這裏會推薦三本書,配合起來,一步步從多線程的原理到多線程的實戰全部貫穿起來。

對於多線程的理解,我推薦的第一本書是《Java併發編程實戰》(豆瓣 9.0 分)。

這本書是一本非常經典的關於多線程編程的書。裏面對Java的多線程方方面面的細節都講的非常到位。只是由於多線程確實太複雜,涉及到的知識也太廣了,導致這本書出現了兩個問題:

  1. 理論過多:《Java併發編程實戰 》裏會花費很大篇幅,去闡述一些多線程涉及到的理念和思想,但是代碼例子卻給的極少,這就導致咱們看的很喫力、很累。
  2. 某些點講的不夠透:多線程涉及到的知識非常廣,《Java併發編程實戰 》是儘量全涉及了。這就造成很多知識點講的很淺,沒有講透。這就會讓人很困惑,導致有些知識點連不起來,影響對整本書的理解。

所以,我這裏推薦第二本書《Java多線程編程實戰指南(核心篇)》(豆瓣 9.0 分)。

這本書代碼例子多,《Java併發編程實戰 》有些講不透的知識點,這本書會有所彌補。所以,當看《Java併發編程實戰 》的時候,不管是需要練習代碼,還是想去搞清楚知識點,《Java多線程編程實戰指南 》這本書都極爲合適。

多線程我再強調一下,這是 Java 很高級的特性,也是很難的部分,很多哪怕是工作了 3、4 年的程序員,對此也掌握的不到位。

上面說的兩本書,有原理,有代碼示例,如果是換成別的知識,那可能足夠了。可是對於多線程這麼複雜的東西,我們還需要把學過的所有零碎知識點去綜合貫穿起來,形成關於多線程的知識體系纔算是真正掌握到位。

所以,這就得推薦第三本書《圖解Java多線程設計模式》(豆瓣 8.6 分)。

跟着這本書的講解,把咱們所有的知識點通過練習書中介紹的所有模式,去串起來,才最終算是多線程的學習告了一個段落。

登堂入室

學會了多線程編程,咱們此時要知道一件事,大部分時候,多線程編程,其實就是網絡編程的最重要的一種手段。而網絡編程,雖然有了 Netty 框架等很優質的網絡框架了,但是理解背後的原理,對咱們定位項目的 bug,優化代碼的性能,幫助非常大。

《Java TCP/IP Socket編程》(豆瓣 8.0 分)

這本書,我們既可以去學到必要的網絡基礎,也能學會怎麼用 Java 去網絡編程,非常推薦。

對於網絡編程,大家都知道,這是易學難精的技能。學懂原理,瞭解網絡編程,看看我上面推薦的書就夠了。但是,要精通網絡編程,寫好網絡相關的程序,那是相當不容易的。

所以,在 Java 圈,一旦遇到網絡編程相關的事情,大家都會採用 Netty 框架去做。Netty 框架讓我們能不需要成爲網絡編程大師,就能寫出非常優秀的網絡應用。

瞭解 Netty 框架對咱們也是非常重要的一件事,學習 Netty 框架,推薦《Netty實戰》(豆瓣 7.5 分)。

這本書,把 Netty 的方方面面講的很全,Netty 的設計思想也覆蓋了大部分,對於熟練使用 Netty 完全夠用了。

融匯貫通

作爲 Java 後端工程師,幾乎都要用到 Spring 框架的。哦不對,Spring 已經不能叫框架了,得叫體系、生態了。學好 Spring,對咱們找工作,做項目,甚至設計架構,都是極其重要的。

但是,學好 Spring 也沒那麼容易。Spring 發展到現在,它已經成爲了一套完整的體系了,而且 Spring 迭代非常快,幾乎每年都會出現大的變化。所以,市面上的書籍,單獨靠那麼一兩本書,是不太可能學好的,建議把一些經典的 Spring 的書聯合起來讀,纔有希望深入掌握Spring。

對於 Spring 這套體系,它現在是又多又繁雜,就算要入門,都不知道從何處下手。這裏,我想談談我的經驗。

雖然 Spring 變化確實很快,但是,它有幾個地方,是這麼多年幾乎沒發生過什麼變化的。

沒有什麼變化的第一部分,就是 Spring 的設計思路。Spring 的設計思路,永遠都是作爲 Bean 的容器,去管理好 Bean ,這是它永恆不變的地方。

沒有什麼變化的第二部分,就是 Spring 的內核。Spring 的 ApplicationContext 等核心 API 是沒有什麼大的變化的。

所以,咱們就應該先從 Spring 這些不變的核心先入手。掌握住 Spring 的思想,Spring 的內核,哪怕 Spring 本身再變化,對咱們來說,也只是一種外在的 API 變化而已。

要達到這個目的,我會推薦大家看一本很老的書《Spring揭祕》(豆瓣 9.1分)。

雖然這本書主要是以 Spring3 的講解爲基礎,但是,這本書對於 Spring 的編程思想講的極爲透徹,是有關 Spring 的書中,難得一見的好書。入門 Spring,這是我推薦的第一本書。

理解了 Spring 的編程思想不夠,我們需要利用這些思想,去實踐演練,加強我們對 Spring 的理解。

這時候,就得有本書,能真正的帶我們實戰下Spring的各個組件——《精通Spring 4.x》(豆瓣 8.5 分)。

我知道現在 Spring 5 在逐漸進入主流,但是,Spring 5 也只是在 Spring 4 的基礎上增加了一些新特性。而 Spring 5 的書,我至今沒看到有《精通Spring 4.x》這本講的這麼全的,所以,寫代碼做練習,還是推薦用《精通Spring 4.x》。

理解了 Spring 的理念,用很多代碼練習練習實踐之後,我們就只需要知道 Spring 5 的一些特性就能跟上 Spring 發展的步伐了。

可以看下《Spring 5 開發大全》(豆瓣 8.3 分),這本書對 Spring 5 的新特性介紹很全。我們只需要翻翻,熟悉新特性、新 API 即可。

另外,Spring 5 有個變化最大的地方:它用了很多響應式編程的東西。這方面,大家相對比較陌生,有閒有錢的話,可以看看《Spring響應式編程》。

關於 SpringBoot,由於它的易用性,它已經邁入主流。不過 SpringBoot 也只是以 Spring 爲內核的一套應用框架而已。找本書,學習它是如何通過添加一些模塊和功能,去降低大家使用 Spring 的門檻的,也就夠了。

同樣,有閒有錢的話,可以讀下《Spring Boot 2實戰之旅》。

返璞歸真

前面大家跟着我推薦的書學習完了,基本就可以是一位非常合格的程序員了。但是,注意,你只是合格,但是還不算優秀。

如果我們想更加優秀,讓自己職業道路能走的更遠,還需要一些非開發的知識學習。只有通過疊加這些 Buff,我們才能在衆多的技術同事中,脫穎而出,錐出於囊。

在實際開發裏,代碼可讀是我們評價同事好不好合作的一個重要標準。一位同事,寫的代碼亂七八糟,你不管是接手維護還是想只是用一些對方的代碼,都非常彆扭難受。

所以,咱們的代碼一定要寫的乾淨整潔可讀,給別人非常好的印象。這樣,對咱們的團隊合作和職場發展,纔會有更大的幫助。

把代碼寫的乾淨可讀,我推薦看《代碼整潔之道》(豆瓣 8.7 分)。

這本書,講解了什麼纔是好的代碼,跟着這本書學,你寫的代碼會更讓人讚賞,也更讓人願意和你合作。

除了代碼可讀,咱們還得讓咱們寫的代碼好維護,易擴展。因爲需求是千變萬化的,如果你寫的代碼可維護性,可擴展性不夠,那後續你會陷入無休止的改代碼海洋裏,你所有的精力都會被這些不停變換的需求喫幹抹淨,直接讓你寸步難行。

而寫易擴展,易維護的代碼,就必須知道設計模式。有了設計模式,你閉眼都能寫出不錯的代碼來。學習設計模式,推薦《Java設計模式》(豆瓣 9.1 分)。

這本書,對設計模式的來歷發展,概念思想,講解的淋漓盡致,推薦閱讀。

Java 這套讀書的學習路線,是我一本一本全部讀過,才推薦給大家的,希望大家最終能堅持讀完,學透。

最後再總結一下這個書單:

  • 《Java核心技術》卷1、2
  • 《Java編程的邏輯》
  • 《SQL必知必會》
  • 《Java併發編程實戰》
  • 《Java多線程編程實戰指南(核心篇)》
  • 《圖解Java多線程設計模式》
  • 《Java TCP/IP Socket編程》
  • 《Netty實戰》
  • 《Spring揭祕》
  • 《精通Spring 4.x》
  • 《Spring 5 開發大全》
  • 《Spring響應式編程》
  • 《Spring Boot 2實戰之旅》
  • 《代碼整潔之道》
  • 《Java設計模式》

以上書單都是我推薦的,其他沒列的書籍,比如《Java編程思想》、《重構》等等,也都是好書,大家自己酌情補充。


你好,我是四猿外。

一家上市公司的技術總監,管理的技術團隊一百餘人。

我從一名非計算機專業的畢業生,轉行到程序員,一路打拼,一路成長。

我會把自己的成長故事寫成文章,把枯燥的技術文章寫成故事。

不知不覺,我原創了不少文章,最近把其中的一些精華文章做了個彙總整理,優中選優,整了一份文檔——《爬坡》。

《爬坡》裏包括了 15 篇技術文章(包括學習編程技巧、架構師、MQ、分佈式)和 13 篇非技術文章(主要是程序員職場),一共十萬多字。

這個文檔的獲取方式戳這裏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章