作者:知乎用戶
鏈接:https://www.zhihu.com/question/27648923/answer/37539146
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處起暮。
一、
我在我的群里經(jīng)常跟一些非常牛掰的java界內(nèi)的大牛討論讀書的問題会烙。他們在給新手推薦書籍的時候想也不想就會推薦Think in java负懦。
java書籍說句實話,入門級的書很多柏腻,但更看重實戰(zhàn)和經(jīng)驗纸厉。如其他答案所言,java其實是個很容易入門但很難實際上手的語言五嫂。java發(fā)展到現(xiàn)在已經(jīng)算是個“老”語言了颗品,框架和開源庫滿世界都是而且用到的還非常多肯尺,尤其是JAVA EE,普遍很依賴各種開源框架躯枢。以至于有了
所說的“java的一大天賦就是把中小型項目寫成大型項目”则吟。
具體到我們公司一個做金融CMS開發(fā)的部門,剛招來的一個計算機(jī)系大學(xué)生锄蹂,只有計算機(jī)基礎(chǔ)沒有啥語言基礎(chǔ)的氓仲,通過一個星期的培訓(xùn)也可以投入到實際的開發(fā)工作當(dāng)中。沒錯得糜,只要一個星期而已敬扛。而且很多在公司工作了五六年的人,也未必會用到或考慮到什么多線程朝抖,設(shè)計模式啥箭,算法。對于他們而言治宣,只是框架用的特別熟急侥,能夠快速響應(yīng)需求變更罷了。
很多java入門書炼七,早期的時候尤其是國人編撰的書籍缆巧,有太多的謬誤。李剛剛開始寫瘋狂系列的時候豌拙,錯誤可以記錄一個小本陕悬。但現(xiàn)在已經(jīng)算是不錯了,但當(dāng)時坑了的人委實不少按傅。
而Think in java被譽為“java圣經(jīng)”并沒有夸張捉超。不管你java是什么水平,每次讀TIJ都會感到很有收獲唯绍。新手會從中讀到j(luò)ava的一些基礎(chǔ)知識拼岳,進(jìn)階者可以看到更廣闊的應(yīng)用空間,老手會從中發(fā)現(xiàn)太多的思考方式况芒,并梳理一些知識遺漏惜纸。最關(guān)鍵的是里面太多的內(nèi)容可以給人啟發(fā),而且很多思想可以應(yīng)用到其他的語言比如C++绝骚。另外整本書謬誤相對很少耐版,可以少走很多彎路。
群里面的大牛真的是有只靠這一本書打天下的压汪。我們工作了四五年粪牲,也見到太多被各種”21天XXXX“禍害掉的碼農(nóng),除了框架啥都不會也不打算學(xué)的止剖。有一個大牛是這么說的:能看得進(jìn)去TIJ并且能學(xué)到東西的人腺阳,我才覺得或許有培養(yǎng)的想法落君。看不進(jìn)去的人亭引,我往往不想太費口舌绎速。只會用各種框架和各種工具的程序員,他們的發(fā)展方向不過是一個熟練的代碼工人痛侍。
或許狂妄朝氓,但我覺得言之在理(其實我也是一開始基本看不進(jìn)去TIJ的人……)
二魔市、
我有一份個人的讀書順序指引主届。這僅僅是我個人的經(jīng)驗,每個人的情況不同待德,大牛們輕噴君丁。
1.初級入門書籍(java基礎(chǔ)語法方向):
無視掉各種僅僅想考試或者應(yīng)付大學(xué)課程的人,那么我推薦如下書籍:
a.《head first java》適合基本沒啥基礎(chǔ)将宪,又不喜歡看大段的文字類書籍的人绘闷。但這本書特別貴,也是僅僅入門较坛。
b.《Core java》,中文名叫《java核心技術(shù)》這本書簡淺易懂印蔗,很適合新手入門。知識點也說得比較詳細(xì)丑勤,特別是一些細(xì)節(jié)很到位华嘹。
c.李剛的《瘋狂》系列。我覺得我推薦這本肯定很多人噴我……不過說實話法竞,我?guī)М厴I(yè)生的時候我看過他們買李剛的各種書籍耙厚。整體來說很符合國人的閱讀習(xí)慣和學(xué)習(xí)習(xí)慣,李剛本人現(xiàn)在是全職做培訓(xùn)師了岔霸,書也是一再的重印出版薛躬,當(dāng)初的很多謬誤已經(jīng)修正了很多。而且最重要的也是李剛最討巧的呆细,就是書里有大量的應(yīng)付面試用的冷門知識點型宝。整本書培訓(xùn)風(fēng)格很深,適合入門不適合深挖絮爷。
2.進(jìn)階階段
這個階段一般是已經(jīng)基本熟練掌握jdk基礎(chǔ)語法趴酣,并且做過幾個成熟項目,希望更進(jìn)一步深挖的人略水。一般來說到了這一步的已經(jīng)很熟練各種流行框架了价卤,隱隱的開始有分方向的趨勢,并且也開始接觸其他的語言渊涝。
a.《think in java》其實我很想把這本書放在第一階段的……這本書其實每個階段讀都很合適慎璧。
b.《Effective java》這本書著實驚艷了我床嫌,我在買這本書以前我沒想到j(luò)ava這么老老實實的語言也可以這么玩。
c.《重構(gòu)——改善既有的代碼設(shè)計》不想寫太多的評價胸私,作為一個程序員厌处,不僅僅是java程序員,我都一直覺得這是必讀的書岁疼。
3.再進(jìn)階
這個階段的人一般都工作一兩年以上阔涉,或者兩三年以上(看行業(yè)了,不同行業(yè)不同情況)捷绒,并且已經(jīng)開始考慮轉(zhuǎn)型或者定位瑰排,是深挖技術(shù)還是向項目經(jīng)理轉(zhuǎn)變。一般來說到了這個層次的人暖侨,也都會掌握第二語言或者對其他的語言框架都有所涉及椭住。
a.《代碼大全》千萬不要被書名騙了。如果一定要讓我推薦一本編程書字逗,我只會推薦這本京郑。直接改變了我對項目管理,代碼開發(fā)等等各方面的看法葫掉。
b.《深入jvm虛擬機(jī)》國人寫了一本些举,相對通俗易懂,但沒有涉及太深俭厚。老外寫了一本户魏,講得很深入,推薦先看國人的套腹,如果有興趣绪抛,繼續(xù)看老外的。
c.各類設(shè)計模式書电禀。其實我不太推薦GOF幢码。對我個人而言我也不喜歡新手去讀設(shè)計模式,沒有足夠的開發(fā)經(jīng)驗和主持項目的經(jīng)驗尖飞,很容易陷入為了模式而模式的大坑症副。我覺得到了這個階段再去讀比較好,聯(lián)系實際的項目經(jīng)驗政基,理解起來會非痴晗常快。
補充說明:
1.書單里沒有也不想推薦各類的框架書沮明,也不打算推薦其他語言的包括算法類的書辕坝。這僅僅是我個人的見解和推薦書目,大牛輕噴荐健。
2.鑒于大多數(shù)初學(xué)者的英語并不咋樣(其實就是在說答主自己啦……)酱畅,書單里沒有什么英文資料書琳袄。如果可以吧范圍擴(kuò)展到英文資料,那可以看的就太多了……