作為Java程序員來說,最痛苦的事情莫過于可以選擇的范圍太廣,可以讀的書太多,往往容易無所適從。我想就我自己讀過的技術(shù)書籍中挑選出來一些,按照學(xué)習(xí)的先后順序,推薦給大家,特別是那些想不斷提高自己技術(shù)水平的Java程序員們。 

一、Java編程入門類  

對于沒有Java編程經(jīng)驗的程序員要入門,隨便讀什么入門書籍都一樣,這個階段需要你快速的掌握J(rèn)ava基礎(chǔ)語法和基本用法,宗旨就是“囫圇吞棗不求甚解”,先對Java熟悉起來再說。用很短的時間快速過一遍Java語法,連懵帶猜多寫寫代碼,要“知其然”。 

1、《Java編程思想》  

在有了一定的Java編程經(jīng)驗之后,你需要“知其所以然”了。這個時候《Java編程思想》是一本讓你知其所以然的好書,它對于基本的面向?qū)ο笾R有比較清楚的交待,對Java基本語法,基本類庫有比較清楚的講解,可以幫你打一個良好的Java編程基礎(chǔ)。這本書的缺點(diǎn)是實在太厚,也比較羅嗦,不適合現(xiàn)代人快節(jié)奏學(xué)習(xí),因此看這本書要懂得取舍,不是每章每節(jié)都值得一看的,挑重點(diǎn)的深入看就可以了。 

2、《Agile Java》中文版  

這本書是出版社送給我的,我一拿到就束之高閣,放在書柜一頁都沒有翻過,但是前兩天整理書柜的時候,拿出來一翻,竟然發(fā)現(xiàn)這絕對是一本好書!這本書一大特點(diǎn)是以單元測試和TDD來貫穿全書的,在教你Java各種重要的基礎(chǔ)知識的過程中,潛移默化的影響你的編程思維走向敏捷,走向TDD。另外這本書成書很新,以JDK5.0的語法為基礎(chǔ)講解,要學(xué)習(xí)JDK5.0的新語法也不錯。還有這本書對于內(nèi)容取舍也非常得當(dāng),Java語言畢竟類庫龐大,可以講的內(nèi)容太多,這本書選擇的內(nèi)容以及內(nèi)容的多寡都很得當(dāng),可以讓你以最少的時間掌握J(rèn)ava最重要的知識,順便培養(yǎng)出來優(yōu)秀的編程思路,真是一本不可多得的好書。 

雖然作者自己把這本書定位在入門級別,但我不確定這本書用來入門是不是稍微深了點(diǎn),我自己也準(zhǔn)備有空的時候翻翻這本書,學(xué)習(xí)學(xué)習(xí)。  


3,《你必須知道的261個java語言問題》

這本書在網(wǎng)上可以下載到。講解了很多知識點(diǎn)。全書采用問答的形式。對于初級中級的編程人士來說,值得學(xué)習(xí)參考!


二、Java編程進(jìn)階類  

打下一個良好的Java基礎(chǔ),還需要更多的實踐經(jīng)驗積累,我想沒有什么捷徑。有兩本書值得你在編程生涯的這個階段閱讀,培養(yǎng)良好的編程習(xí)慣,提高你的代碼質(zhì)量。  

1、《重構(gòu) 改善既有代碼的設(shè)計》  

這本書名氣很大,不用多介紹,可以在閑暇的時候多翻翻,多和自己的實踐相互印證。這本書對你產(chǎn)生影響是潛移默化的。  

2、《測試驅(qū)動開發(fā) by Example》  
本書最大特點(diǎn)是很薄,看起來沒有什么負(fù)擔(dān)。你可以找一個周末的下午,一邊看,一邊照做,一個下午就把書看完,這本書的所有例子跑完了。這本書的作用是通過實戰(zhàn)讓你培養(yǎng)TDD的思路。 

三、Java架構(gòu)師之路  

到這個階段,你應(yīng)該已經(jīng)非常嫻熟的運(yùn)用Java編程,而且有了一個良好的編程思路和習(xí)慣了,但是你可能還缺乏對應(yīng)用軟件整體架構(gòu)的把握,現(xiàn)在就是你邁向架構(gòu)師的第一步。  

1、《Expert One-on-One J2EE Design and Development》  

這本書是Rod Johnson的成名著作,非常經(jīng)典,從這本書中的代碼誕生了springframework。但是好像這本書沒有中譯本。  

2、《Expert One-on-One J2EE Development without EJB》  

這本書由gigix組織翻譯,多位業(yè)界專家參與,雖然署名譯者是JavaEye,其實JavaEye出力不多,實在是忝居譯者之名。  

以上兩本書都是Rod Johnson的經(jīng)典名著,Java架構(gòu)師的必讀書籍。在我所推薦的這些書籍當(dāng)中,是我看過的最仔細(xì),最認(rèn)真的書,我當(dāng)時讀這本書幾乎是廢寢忘食的一氣讀完的,有小時候挑燈夜讀金庸武俠小說的勁頭,書中所講內(nèi)容和自己的經(jīng)驗知識一一印證,又被無比精辟的總結(jié)出來,讀完這本書以后,我有種被打通經(jīng)脈,功力爆增的感覺。 

但是后來我看過一些其他人的評價,似乎閱讀體驗并沒有我那么high,也許是因為每個人的知識積累和經(jīng)驗不同導(dǎo)致的。我那個時候剛好是經(jīng)驗知識積累已經(jīng)足夠豐富,但是還沒有系統(tǒng)的整理成型,讓這本書一梳理,立刻形成完整的知識體系了。 

3、《企業(yè)應(yīng)用架構(gòu)模式》  

Martin的又一本名著,但這本書我只是泛泛的看了一遍,并沒有仔細(xì)看。這本書似乎更適合做框架的人去看,例如如果你打算自己寫一個ORM的話,這本書是一定要看的。但是做應(yīng)用的人,不看貌似也無所謂,但是如果有空,我還是推薦認(rèn)真看看,會讓你知道框架為什么要這樣設(shè)計,這樣你的層次可以晉升到框架設(shè)計者的角度去思考問題。Martin的書我向來都是推崇,但是從來都沒有像Rod Johnson的書那樣非常認(rèn)真去看。 

4、《敏捷軟件開發(fā)原則、模式與實踐》  
Uncle Bob的名著,敏捷的經(jīng)典名著,這本書比較特別,與其說是講軟件開發(fā)過程的書,不如說講軟件架構(gòu)的書,本書用了很大篇幅講各種面向?qū)ο筌浖_發(fā)的各種模式,個人以為看了這本書,就不必看GoF的《設(shè)計模式》了。 


四、軟件開發(fā)過程  

了解軟件開發(fā)過程不單純是提高程序員個人的良好編程習(xí)慣,也是增強(qiáng)團(tuán)隊協(xié)作的基礎(chǔ)。  

1、《UML精粹》  

UML其實和軟件開發(fā)過程沒有什么必然聯(lián)系,卻是軟件團(tuán)隊協(xié)作溝通,撰寫軟件文檔需要的工具。但是UML真正實用的圖不多,看看這本書已經(jīng)足夠了,完全沒有必要去啃《UML用戶指南》之類的東西。要提醒大家的是,這本書的中譯本翻譯的非常之爛,建議有條件的看英文原版。 

2、《解析極限編程 擁抱變化》XP  

這是Kent Beck名著的第二版,中英文對照。沒什么好說的,必讀書籍。  

3、《統(tǒng)一軟件開發(fā)過程》UP  

其實UP和敏捷并不一定沖突,UP也非常強(qiáng)調(diào)迭代,測試,但是UP強(qiáng)調(diào)的文檔和過程驅(qū)動卻是敏捷所不取的。不管怎么說,UP值得你去讀,畢竟在中國真正接受敏捷的企業(yè)很少,你還是需要用UP來武裝一下自己的,哪怕是披著UP的XP。 

4、《敏捷建模》AM  

Scott Ambler的名著,這本書非常的progmatic,告訴你怎么既敏捷又UP,把敏捷和UP統(tǒng)一起來了,又提出了很多progmatic的建議和做法。你可以把《解析極限編程擁抱變化》、《統(tǒng)一軟件開發(fā)過程》和《敏捷建模》這三本書放在一起讀,看XP和UP的不同點(diǎn),再看AM是怎么統(tǒng)一XP和UP的,把這三種理論融為一爐,形成自己的理論體系,那么你也可以去寫書了。 


五、軟件項目管理  

如果你突然被領(lǐng)導(dǎo)提拔為項目經(jīng)理,而你完全沒有項目管理經(jīng)驗,你肯定會心里沒底;如果你覺得自己管理項目不善,很想改善你的項目管理能力,那么去考PMP肯定是遠(yuǎn)水不解近渴的。 

1、《快速軟件開發(fā)》  

這也是一本名著。可以這樣說,有本書在手,你就有了一個項目管理的高級參謀給你出謀劃策,再也不必?fù)?dān)心自己不能勝任的問題了。這本書不是講管理的理論的,在實際的項目管理中,講這些理論是不解決問題的,這本書有點(diǎn)類似于“軟件項目點(diǎn)子大全”之類的東西,列舉了種種軟件項目當(dāng)中面臨的各種問題,以及應(yīng)該如何解決問題的點(diǎn)子,你只需要稍加變通,找方抓藥就行了。 


六、其它

1,《我編程我快樂》

教你怎么做一名合格的快樂的程序員。

2,《淡定的人生不寂寞》

讓你懂得人生的不少哲理。


七、總結(jié)  

在這份推薦閱讀書籍的名單中,我沒有列舉流行的軟件框架類學(xué)習(xí)書籍,例如Struts,Hibernate,Spring之類,也沒有列舉AJAX方面的書籍。是因為這類書籍容易過時,而上述的大半書籍的生命周期都足夠長,值得你去購買和收藏。



下面是Java Inside上推薦的十本Java書籍(文章來源)   
 
Java編程規(guī)范(第三版)1)Java Language Specification,Third Edition (by James Gosling
 
     本書由Java技術(shù)的發(fā)明者編寫,是Java TM編程語言的權(quán)威性技術(shù)指南。如果你想知道語言之構(gòu)造的精確含義,本書是最好的資源。      
 
中文版鏈接:《Java編程規(guī)范
英文版鏈接:《
The Java Language Specification (3rd Edition)》      
 
 
 Effective2) Effective Java ,Second Edition (by Joshua Bloch)
 
  本書介紹了在Java編程中78條極具實用價值的經(jīng)驗規(guī)則,這些經(jīng)驗規(guī)則涵蓋了大多數(shù)開發(fā)人員每天所面臨的問題的解決方案。通過對Java平臺設(shè)計專家所使用的技術(shù)的全面描述,揭示了應(yīng)該做什么,不應(yīng)該做什么才能產(chǎn)生清晰、健壯和高效的代碼。.   本書中的每條規(guī)則都以簡短、獨(dú)立的小文章形式出現(xiàn),并通過例子代碼加以進(jìn)一步說明。本書內(nèi)容全面,結(jié)構(gòu)清晰,講解詳細(xì)。可作為技術(shù)人員的參考用書。...   中文版鏈接:《Effective Java 第二版》英文版鏈接:《Effective Java (2nd Edition)》      
 
 
 
  JAVA并發(fā)編程實踐 3) Java Concurrency in Practice (by Brian Goetz)
 
 隨著多核處理器的普及,使用并發(fā)成為構(gòu)建高性能應(yīng)用程序的關(guān)鍵。Java 5以及6在開發(fā)并發(fā)程序取得了顯著的進(jìn)步,提高了Java虛擬機(jī)的性能,提高了并發(fā)類的可伸縮性,并加入了豐富的新并發(fā)構(gòu)建塊。在本書中,這些便利工具的創(chuàng)造者不僅解釋了它們究竟如何工作、如何使用,同時,還闡釋了創(chuàng)造它們的原因,及其背后的設(shè)計模式。 本書既能夠成為讀者的理論支持,又可以作為構(gòu)建可靠的,可伸縮的,可維護(hù)的并發(fā)程序的技術(shù)支持。本書并不僅僅提供并發(fā)API的清單及其機(jī)制,本書還提供了設(shè)計原則,模式和思想模型,使我們能夠更好地構(gòu)建正確的,性能良好的并發(fā)程序。   本書的讀者是那些具有一定Java編程經(jīng)驗的程序員、希望了解Java SE 5,6在線程技術(shù)上的改進(jìn)和新特性的程序員,以及Java和并發(fā)編程的愛好者。   中文版鏈接:《JAVA并發(fā)編程實踐
英文版鏈接:《
Java Concurrency in Practice
 
 
   JAVA解惑 4)Java Puzzles: Traps, Pitfalls and Corner Cases (by Joshua Bloch)
Java教父的又一經(jīng)典名著-Java Puzzlers,Amazon五星圖書。認(rèn)為你到底有多了解Java?你是一個代碼神探嗎?你是否曾經(jīng)花費(fèi)過數(shù)天時間去追蹤一個由Java或其類庫的陷阱和缺陷而導(dǎo)致的bug?你喜歡智力測驗嗎?那么這本書正好適合你!  
 
中文版鏈接:《JAVA解惑
英文版鏈接:《
Java Puzzlers : Traps, Pitfalls, and Corner Cases
 
 
 
 
    Java編程思想(第4版)(經(jīng)典圖書最新版本) 5) Thinking in Java (by Bruce Eckel)
本書贏得了全球程序員的廣泛贊譽(yù),即使是最晦澀的概念,在Bruce Eckel的文字親和力和小而直接的編程示例面前也會化解于無形。從Java的基礎(chǔ)語法到最高級特性(深入的面向?qū)ο蟾拍睢⒍嗑€程、自動項目構(gòu)建、單元測試和調(diào)試等),本書都能逐步指導(dǎo)你輕松掌握。從本書獲得的各項大獎以及來自世界各地的讀者評論中,不難看出這是一本經(jīng)典之作。本書的作者擁有多年教學(xué)經(jīng)驗,對C、C++以及Java語言都有獨(dú)到、深入的見解,以通俗易懂及小而直接的示例解釋了一個個晦澀抽象的概念。本書共22章,包括操作符、控制執(zhí)行流程、訪問權(quán)限控制、復(fù)用類、多態(tài)、接口、通過異常處理錯誤、字符串、泛型、數(shù)組、容器深入研究、Java I/O系統(tǒng)、枚舉類型、并發(fā)以及圖形化用戶界面等內(nèi)容。這些豐富的內(nèi)容,包含了Java語言基礎(chǔ)語法以及高級特性,適合各個層次的Java程序員閱讀,同時也是高等院校講授面向?qū)ο蟪绦蛟O(shè)計語言以及Java語言的絕佳教材和參考書。
中文版鏈接:《JAVA編程思想(第4版)
英文版鏈接:《
Thinking in Java (4th Edition)
 
 
 
    輕快的Java 6) Better, faster, lighter Java (by Justin Gehtland, Bruce A. Tate)
 
Java的開發(fā)者正深陷于復(fù)雜性的泥沼中而無法自拔。我們的經(jīng)驗和能力正接近極限,程序員為了編寫支持所選框架的程序所花的時間比解決真正問題的時間要多得多。我們不禁要問,有必要把Java搞得這么復(fù)雜嗎?.   答案是否定的。本書給你指引了一條出路。無論是維護(hù)應(yīng)用程序,還是從頭開始設(shè)計,你都能夠超越成規(guī),并大幅精簡基本框架、開發(fā)過程和最終代碼。你能重新掌握一度失控的J2EE應(yīng)用程序。..   在本書中,原作者Bruce A.Tate與Justin Gehtland將循序漸進(jìn)、娓娓道來。首先,他們列出了五項基本法則。他們展示了如何構(gòu)建簡單、解耦的代碼,并告訴你如何選擇技術(shù)。他們還對兩種被廣泛運(yùn)用的開源程序如何迎合這些概念進(jìn)行了剖析。最后,作者還將利用這些基本概念構(gòu)建一個簡單但內(nèi)涵豐富的應(yīng)用程序來解決現(xiàn)實世界中所遇到的問題。中文版鏈接:《輕快的JAVA
英文版鏈接:《
Better, Faster, Lighter Java  》
 
 
 
      Java核心技術(shù),卷1(原書第8版)(china-pub 7) Core Java (vol. 1, 2) (by Cay S. Horstmann, Gary Cornell)
 
《Java核心技術(shù)》出版以來一直暢銷不衰,深受讀者青睞,每個新版本都盡可能快地跟上Java開發(fā)工具箱發(fā)展的步伐,而且每一版都重新改寫了部分內(nèi)容,以便適應(yīng)Java的最新特性。本版也不例外,它反映了Java SE 6的新特性。全書共14章,包括Java基本的程序結(jié)構(gòu)、對象與類、繼承、接口與內(nèi)部類、圖形程序設(shè)計、事件處理、Swing用戶界面組件、部署應(yīng)用程序和Applet、異常日志斷言和調(diào)試、泛型程序設(shè)計、集合以及多線程等內(nèi)容。   全書對Java技術(shù)的闡述精確到位,敘述方式深入淺出,并包含大量示例,從而幫助讀者充分理解Java語言以及Java類庫的相關(guān)特性。  
 
中文版鏈接:《JAVA核心技術(shù),卷1卷2
英文版鏈接:《
Core Java, Volume I-Fundamentals (8th Edition)Core Java, Vol. 2: Advanced Features, 8th Edition 》    
 
 
  The 8) The Java Virtual Machine Specification (by Tim Linholm, Frank Yellin)  
如果你需要了解Java虛擬機(jī)的byte code,或者是一些編譯方面的東西,這本書絕對讓你得償所愿。其不但包含了機(jī)器碼的規(guī)范說明,同時它也是Java編譯器和運(yùn)行環(huán)境的規(guī)格說明書。  
 
中文版鏈接:《無》
英文版鏈接:《
The Java Virtual Machine Specification (2nd Edition)
 
 
   9)Robust Java: Exception Handling, Testing, and Debugging(by Stephen Stelting)  
 
Robust處理異常涉及開發(fā)、設(shè)計和體系結(jié)構(gòu)等方面的知識。本書共分3個部分。
  第Ⅰ部分介紹Java異常的產(chǎn)生機(jī)理和用法,介紹一些最佳實踐,講述各類異常處理使用的一般API和技術(shù)。
  第Ⅱ部分闡述可測試性設(shè)計,介紹故障模式分析,討論常見API的異常及起因,分析J2EE體系結(jié)構(gòu)和分布式API的異常模式。
  第Ⅲ部分討論在軟件開發(fā)周期執(zhí)行異常和錯誤處理,分析軟件體系結(jié)構(gòu)、設(shè)計模式、測試和調(diào)試,列舉成熟的設(shè)計模式,介紹處理策略對系統(tǒng)體系結(jié)構(gòu)的影響,講述如何構(gòu)建健壯系統(tǒng)。  
 
 
 
10)Java Code Convention  
 
最后一本當(dāng)然是Java編碼規(guī)范,這是由Sun公司官方出品的。這也是每個程序員為了得供程序的易讀性,可維護(hù)性需要知道的。

程序員最應(yīng)該讀的圖書(中譯版)

來自StackOverflow上的投票 

http://stackoverflow.com/questions/1711/what-is-the-single-most-influential-book-every-programmer-should-read

 
1. 代碼大全(第2版)

作者 : [美] 史蒂夫·邁克康奈爾
出版社 : 電子工業(yè)出版社

作者 : Andrew Hunt/David Thomas
出版社 : 電子工業(yè)出版社

作者 : Harold Abelson/Gerald Jay Sussman/Julie Sussman
出版社 : 機(jī)械工業(yè)出版社

作者 : 克尼漢
出版社 : 機(jī)械工業(yè)出版社

作者 : [美] Thomas H.Cormen/Charles E.Leiserson/Ronald L.Rivest/Clifford Stein
出版社 : 機(jī)械工業(yè)出版社

作者 : Martin Fowler
出版社 : 人民郵電出版社

作者 : 弗雷德里克.布魯克斯
出版社 : 清華大學(xué)出版社

作者 : [美] Erich Gamma/Richard Helm/Ralph Johnson/John Vlissides
出版社 : 機(jī)械工業(yè)出版社

作者 : [美] Donald E. Knuth
出版社 : 清華大學(xué)出版社

作者 : Alfred V. Aho/Monica S.Lam/Ravi Sethi/Jeffrey D. Ullman
出版社 : 機(jī)械工業(yè)出版社


出版社 : 中國電力出版社

作者 : [美] 侯世達(dá)
出版社 : 商務(wù)印書館

作者 : Scott Meyers
出版社 : 電子工業(yè)出版社

作者 : 邁耶斯
出版社 : 中國電力出版社

作者 : Jon Bentley
出版社 : 人民郵電出版社

作者 : (美)羅伯特·M·波西格
出版社 : 重慶出版社

17. 編碼

作者 : [美] 佩措爾德 (Charles Petzold)
出版社 : 電子工業(yè)出版社

作者 : Michael Feathers
出版社 : 人民郵電出版社

19. 人件

作者 : Tom DeMarco/Timothy Lister
出版社 : 清華大學(xué)

作者 : 馬丁
出版社 : 人民郵電出版社

2011-03-01 18:14:03添加 21. 編程人生

作者 : Peter Seibel
出版社 : 人民郵電出版社