學習Java的過程中也看了不少書,也看過別人的推薦。相對於部落格教程來說,出版出來的書籍更嚴謹,而有的好書在圈內早已盛名在外,下面推薦我覺得很厲害的幾本書,有很多值得一讀再讀。
Head First Java
Head First系列早就盛名在外,這本書是一本真正的入門書,一週就能叫你怎麼寫Java程式,內容淺顯易懂,很有趣,真的為初學者設計,但是它也是一本真正的入門書,並沒有覆蓋所有Java的點。如果你是從0基礎幾步,這本書是個好的選擇,以免你看了下面的書直接放棄學習Java。
Java程式設計思想
這本大部頭很容易讓人望而卻步,記得大一時候就買了它,卻一直放在書架上睡覺。後來工作了,才慢慢啃了好幾遍。真的後悔看得太晚了。不得不說,這本書無愧經典二字,內容覆蓋了Java SE的方方面面,同時作者Bruce Eckel確實是大牛中的大牛,很多例子不知不覺得用上了各種設計模式,後來再讀設計模式時,還會拿起這本書看例子,又有恍然大悟的感覺。有很多人對這本書有誤解,一是覺得中文版不好,實際上我覺得相比於其它的書翻譯得水平可以了,2是不適合新手,其實只要你有一點基本語句的基礎,那麼通讀是沒問題的。永遠不要為自己的怯懦尋找藉口,這是修煉Java內功必備的一本書。
另外我建議一是按知識點讀,而不是從頭到尾讀,知識點主要以章節區分,Java基礎知識按類別分其實可以分為好幾塊的,物件導向的部分,集合,多執行緒,泛型,列舉,網路,UI等等。最好當成工具書,專案上遇到不熟悉的,常常翻翻書,當你結合專案時,會產生對這個知識點的渴求,所以記憶更牢固。
總覺得還得讀個10遍8遍的。
Java核心程式設計
這本書一般國內版本都分上下兩側,作為與上面的Java程式設計思想齊名的大全式圖書,這本書的內容更加細緻,偏重與講解Java計數,舉例說明了大量API,所以相比於Java程式設計思想,更注重於實用性。而且由於書籍分了上下兩側,文字排版舒服一點,沒有上面那本書的文字那麼密集,閱讀壓力小點。但是兩本書加起來真的貴啊,所以當初沒有買它入門,工作兩年了才入手的,書的內容確實對得起書名Java核心,也是非常建議Java程式設計師看的。Effectice java
這本書屬於進階一點的內容,如果你是初學者,讀這本書可能沒有什麼深刻體會,很多內容可能讀完就忘。但是當你有那麼一兩個專案的經驗,再讀這本書,就會發現書中提到的某個規則就是你在很多次工作經驗後總結出來的最準確的描述方式。書中介紹了在Java程式設計中78條最具有實用價值的經驗。每一條都以一篇文章給出,類似的系列還有C++的Effective C++。同時你也會發現,裡面提到的很多知識點也是面試常客。Java併發程式設計實戰
併發程式設計時Java裡一個很重要的點。如果看完上面基本大部頭裡面的多執行緒部分覺得不過癮,那麼這本書絕對是你的第一選擇,相比於國內的圖書重實踐的風格,這本書可能在一開始閱讀時會很慢。本書分4個部分,但是第一個部分就很難讀,這一部分闡述了執行緒安全性,執行緒物件彼此間的共享,執行緒物件安全釋出,如何設計足夠安全的執行緒。後面的部分說一些執行緒工具使用的時候反而輕鬆點。外國人喜歡理論的東西,所以這本書更多地給你灌輸一種併發的思維。反正是需要一些耐心看的,當然看下來覺得受益匪淺。
Java併發程式設計的藝術
這本書是阿里的大牛方騰飛出品,他的併發程式設計網是我十分喜愛的網站。這本書從JDK原始碼,JVM和CPU多角度介紹了併發程式設計的許多原理性的東西。個人感覺前3章寫的比較好,比較深入,後面的章節就有點流水賬的意思了。適合有一定JVM基礎的人看。深入理解Java虛擬機器
JVM是深入Java不得不過的一個坎,而這本書是國內市場難得的一本關於JVM的好書。這本書從Java虛擬機器的記憶體管理(記憶體區域劃分、垃圾收集的演算法和實現、效能監控和調優實戰)講起,接著介紹虛擬機器如何執行(類檔案的結構、類載入機制、位元組碼執行引擎介紹),最後還介紹了編譯優化和高效併發部分。我看這本書還產生了一些部落格。所以想對虛擬機器進行深入學習,這本書當屬首選。Java效能權威指南
市面上介紹Java的書有很多,但專注於Java效能的並不多,能遊刃有餘地展示Java效能優化難點的更是鳳毛麟角,本書即是其中之一。通過使用JVM和Java平臺,以及Java語言和應用程式介面,本書詳盡講解了Java效能調優的相關知識,幫助讀者深入理解Java平臺效能的各個方面,使程式如虎添翼。另外本書關於G1收集器的部分解釋的比較詳細,彌補了中文圖書這方面的空白。Java程式設計師修煉之道
《Java程式設計師修煉之道》分為四部分,第一部分全面介紹Java7的新特性,第二部分探討Java關鍵程式設計知識和技術,第三部分討論JVM上的新語言和多語言程式設計,第四部分將平臺和多語言程式設計知識付諸實踐。這本書開啟了通向其它基於JVM的語言的大門,書中含有大量程式碼示例,可以翻閱增長見識。上面推薦的圖書基本都是關於Java語言本身的學習資料,當然作為一個Java程式設計師需要研究的方向太多了。各類框架、資料庫、分散式、大資料都能成為延伸方向,路漫漫,好好看書才是王道。