1. 程式人生 > >Java學習書籍推薦

Java學習書籍推薦

作者:知乎使用者

連結:https://www.zhihu.com/question/27648923/answer/37539146

來源:知乎

著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

一、

我在我的群裡經常跟一些非常牛掰的java界內的大牛討論讀書的問題。他們在給新手推薦書籍的時候想也不想就會推薦Think in java。

java書籍說句實話,入門級的書很多,但更看重實戰和經驗。如其他答案所言,java其實是個很容易入門但很難實際上手的語言。java發展到現在已經算是個“老”語言了,框架和開源庫滿世界都是而且用到的還非常多,尤其是JAVA EE,普遍很依賴各種開源框架。以至於有了

@姚冬

所說的“java的一大天賦就是把中小型專案寫成大型專案”。

具體到我們公司一個做金融CMS開發的部門,剛招來的一個計算機系大學生,只有計算機基礎沒有啥語言基礎的,通過一個星期的培訓也可以投入到實際的開發工作當中。沒錯,只要一個星期而已。而且很多在公司工作了五六年的人,也未必會用到或考慮到什麼多執行緒,設計模式,演算法。對於他們而言,只是框架用的特別熟,能夠快速響應需求變更罷了。

很多java入門書,早期的時候尤其是國人編撰的書籍,有太多的謬誤。李剛剛開始寫瘋狂系列的時候,錯誤可以記錄一個小本。但現在已經算是不錯了,但當時坑了的人委實不少。

而Think in java被譽為“java聖經”並沒有誇張。不管你java是什麼水平,每次讀TIJ都會感到很有收穫。新手會從中讀到java的一些基礎知識,進階者可以看到更廣闊的應用空間,老手會從中發現太多的思考方式,並梳理一些知識遺漏。最關鍵的是裡面太多的內容可以給人啟發,而且很多思想可以應用到其他的語言比如C++。另外整本書謬誤相對很少,可以少走很多彎路

群裡面的大牛真的是有隻靠這一本書打天下的。我們工作了四五年,也見到太多被各種”21天XXXX“禍害掉的碼農,除了框架啥都不會也不打算學的。有一個大牛是這麼說的:能看得進去TIJ並且能學到東西的人,我才覺得或許有培養的想法。看不進去的人,我往往不想太費口舌。只會用各種框架和各種工具的程式設計師,他們的發展方向不過是一個熟練的程式碼工人。

或許狂妄,但我覺得言之在理(其實我也是一開始基本看不進去TIJ的人……)

二、

我有一份個人的讀書順序指引。這僅僅是我個人的經驗,每個人的情況不同,大牛們輕噴。

1.初級入門書籍(java基礎語法方向):

無視掉各種僅僅想考試或者應付大學課程的人,那麼我推薦如下書籍:

a.《head first java》

適合基本沒啥基礎,又不喜歡看大段的文字類書籍的人。但這本書特別貴,也是僅僅入門。

b.《Core java》,中文名叫《java核心技術》這本書簡淺易懂,很適合新手入門。知識點也說得比較詳細,特別是一些細節很到位。

c.李剛的《瘋狂》系列。我覺得我推薦這本肯定很多人噴我……不過說實話,我帶畢業生的時候我看過他們買李剛的各種書籍。整體來說很符合國人的閱讀習慣和學習習慣,李剛本人現在是全職做培訓師了,書也是一再的重印出版,當初的很多謬誤已經修正了很多。而且最重要的也是李剛最討巧的,就是書裡有大量的應付面試用的冷門知識點。整本書培訓風格很深,適合入門不適合深挖。

2.進階階段

這個階段一般是已經基本熟練掌握jdk基礎語法,並且做過幾個成熟專案,希望更進一步深挖的人。一般來說到了這一步的已經很熟練各種流行框架了,隱隱的開始有分方向的趨勢,並且也開始接觸其他的語言。

a.《think in java》其實我很想把這本書放在第一階段的……這本書其實每個階段讀都很合適。

b.《Effective java》這本書著實驚豔了我,我在買這本書以前我沒想到java這麼老老實實的語言也可以這麼玩。

c.《重構——改善既有的程式碼設計》不想寫太多的評價,作為一個程式設計師,不僅僅是java程式設計師,我都一直覺得這是必讀的書。

3.再進階

這個階段的人一般都工作一兩年以上,或者兩三年以上(看行業了,不同行業不同情況),並且已經開始考慮轉型或者定位,是深挖技術還是向專案經理轉變。一般來說到了這個層次的人,也都會掌握第二語言或者對其他的語言框架都有所涉及。

a.《程式碼大全》千萬不要被書名騙了。如果一定要讓我推薦一本程式設計書,我只會推薦這本。直接改變了我對專案管理,程式碼開發等等各方面的看法。

b.《深入jvm虛擬機器》國人寫了一本,相對通俗易懂,但沒有涉及太深。老外寫了一本,講得很深入,推薦先看國人的,如果有興趣,繼續看老外的。

c.各類設計模式書。其實我不太推薦GOF。對我個人而言我也不喜歡新手去讀設計模式,沒有足夠的開發經驗和主持專案的經驗,很容易陷入為了模式而模式的大坑。我覺得到了這個階段再去讀比較好,聯絡實際的專案經驗,理解起來會非常快。

補充說明:

1.書單裡沒有也不想推薦各類的框架書,也不打算推薦其他語言的包括演算法類的書。這僅僅是我個人的見解和推薦書目,大牛輕噴。

2.鑑於大多數初學者的英語並不咋樣(其實就是在說答主自己啦……),書單裡沒有什麼英文資料書。如果可以吧範圍擴充套件到英文資料,那可以看的就太多了……