java程序員必看的書籍推薦
每個程序員都會有一些由于經(jīng)常被當(dāng)作專業(yè)資料參閱而磨壞的書。下列書籍應(yīng)該是 Java 語言程序員的書架上必備的。下面是學(xué)習(xí)啦小編為大家收集整理的java程序員必看的書籍,歡迎大家閱讀。
java程序員必看的書籍
Thinking in Java (Bruce Eckel)
Thinking in Java, 3rd edition (Bruce Eckel; Prentice Hall PTR,2002 年)
Java 編程思想:第3版 (陳昊鵬 等譯; 機械工業(yè)出版社,2005 年)
Eckel 的書對于學(xué)習(xí)如何在 Java 語言環(huán)境中使用好面向?qū)ο蠹夹g(shù)極其實用。書中大量的代碼樣例解釋了他所介紹的概念。文字出自一個并不認為 Java 技術(shù)總是正確答案的人,所以相當(dāng)?shù)貙嵱?。Eckel 具有多種語言的大量經(jīng)驗,還有用面向?qū)ο蠓绞竭M行思考的扎實技能。本書將這些技能放到實用的 Java 語言環(huán)境中。他還在寫一本新書,名為 Thinking in Enterprise Java。
Effective Java (Joshua Bloch)
Effective Java: Programming Language Guide(Joshua Bloch; Addison-Wesley,2001 年)
Effective Java 中文版 (潘愛民 譯; 機械工業(yè)出版社,2003 年)
本書是理解優(yōu)秀 Java 程序設(shè)計原則的最佳書籍。大多數(shù)材料從其他的 “學(xué)習(xí) Java ” 的書中根本找不到。例如,Bloch 書中關(guān)于覆蓋equals 這一章是我讀過的最好的參考資料之一。他也在書中包括了很實用的建議:用接口替代抽象類和靈活使用異常。Bloch 是 Sun 公司 Java 平臺庫的架構(gòu)師,所以他透徹地了解這門語言。事實上,他編寫了該語言中大量有用的庫。本書必讀!
The Java Programming Language (Ken Arnold, James Gosling, David Holmes)
The Java Programming Language(Ken Arnold,James Gosling,David Holmes; Addison-Wesley,2000 年)
Java 編程語言(第 3 版) (虞萬榮 等譯,中國電力出版社,2003 年)
這也許是能弄到的最好的 Java 入門讀物。它并不是一個標(biāo)準規(guī)范,而是一本介紹每門語言特性的可讀書籍。這本書在嚴謹性和教育性方面權(quán)衡得很好,能夠讓懂編程的人迅速被 Java 語言(和其豐富的類庫)所吸引。
Concurrent Programming in Java: Design Principles and Patterns (Doug Lea)
Concurrent Programming in Java: Design Principles and Patterns, 2nd edition(Doug Lea; Addison-Wesley,1999 年)
Java 并發(fā)編程—設(shè)計原則與模式(第二版) (趙涌 等譯,中國電力出版社,2004 年)
不是每個開發(fā)人員都需要如此細致地了解并發(fā)性,也不是每個工程師都能達到本書的水準,但卻沒有比本書更好的關(guān)于并發(fā)性編程的概述了。如果您對此感興趣,請從這里開始。Lea 是 SUNY 的一名專業(yè)程序員,他的和并發(fā)性有關(guān)的作品和想法都包含在了 JDK 5.0 規(guī)范(引自 JSR166)中,所以您大可放心,他所說的關(guān)于有效使用 Java 語言的建議是值得一聽的。他是一個很善于溝通的人。
Expert One-On-One J2EE Design and Development (Rod Johnson)
Expert One-On-One J2EE Design and Development(Rod Johnson)
WROX: J2EE 設(shè)計開發(fā)編程指南 (魏海萍 譯,電子工業(yè)出版社,2003 年)
對于剛接觸 J2EE 的人來說,這是唯一的一本如實反映這項技術(shù)的書。本書收錄了多年的成功經(jīng)驗和失敗經(jīng)驗,不同于其他許多作者,Johnson 樂于將失敗的經(jīng)驗公諸于眾。J2EE 常常都被過度使用。Johnson 的書能幫您避免這一點。
Refactoring (Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts)
Refactoring: Improving the Design of Existing Code(Martin Fowler,Kent Beck,John Brant,William Opdyke,Don Roberts; Addison-Wesley,1999 年)
重構(gòu):改善既有代碼的設(shè)計(中文版) (侯捷 等譯,中國電力出版社 ,2003 年)
Fowler 寫了幾本現(xiàn)已出版的最流行的編程書,包括 Analysis Patterns。他的關(guān)于重構(gòu) 的書是這一主題的基本書籍。重構(gòu)代碼是被程序員忽略的訓(xùn)練,但卻是程序員最直觀的想法。重構(gòu)是在不改變代碼結(jié)果的前提下改進現(xiàn)有代碼的設(shè)計。這是保持代碼整潔的最佳方式,用這種方法設(shè)計的代碼總是很容易修改。什么時候進行重構(gòu)呢?當(dāng)代碼“散發(fā)出味道”時。Fowler 的書里滿是 Java 語言代碼的例子。許多 Java 語言集成開發(fā)環(huán)境(IDE)(包括了 IBM 的 Eclipse)都將 Fowler 的重構(gòu)包含了進去,每一個都使用他的重構(gòu)名命名,所以熟悉如extract method 等重構(gòu)方法還是很值得的。
Design Patterns (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides)
Design Patterns: Elements of Reusable Object Oriented Software(Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides; Addison-Wesley,1997 年)
設(shè)計模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ) (李英軍 等譯,機械工業(yè)出版社 ,2005 年)
這是一本在專業(yè)程序員圈子里更為有名的書,基于作者共同的綽號,這本書被認為是 “_(GOF)之書”。模式是思考和解決普通編程問題時可以重用的方式。學(xué)習(xí)模式是一門學(xué)科。使用好模式(或知道什么時候不 使用模式)是一項技能。忽略模式則是錯誤的。書中所有的例子都以 C++ 表示,但 Java 語言是從那里誕生的,讓 Java 語言程序員由此聯(lián)系到如何在 Java 語言中實現(xiàn)這些模式相對簡單一些。熟悉模式并了解如何使用好模式使編程更加簡單。這使得和其他程序員交流也更簡單,因為在針對通用問題的通用解決方案中,模式是描述解決方案中彼此協(xié)作的大量相關(guān)編程概念的快捷方式。一些更為通用的方式,如工廠方法 則是普便存在的,甚至存在于 Java 語言本身。關(guān)于明智使用模式的這個主題,也可以閱讀 Joshua Kerievsky 的 Refactoring to Patterns,該書稱可以讓代碼來告訴您何時實現(xiàn)模式。
Patterns of Enterprise Application Architecture (Martin Fowler)
Patterns of Enterprise Application Architecture(Martin Fowler; Addison-Wesley,2002 年)
企業(yè)應(yīng)用架構(gòu)模式 (王懷民 等譯,機械工業(yè)出版社 ,2004 年)
比起小型、一次性項目來說,企業(yè)開發(fā)當(dāng)然代表了更大的挑戰(zhàn)。那并不意味著企業(yè)開發(fā)帶來的所有挑戰(zhàn)都是新挑戰(zhàn)。事實上有些時候,這項開發(fā)已經(jīng) 是以前完成過的了。Fowler 做了很多個這樣的項目。他的書提到了一些通用解決方案,并提供了關(guān)于使用、折中和可選方案的指導(dǎo)。Fowler 在書中包含了一些熟悉的模式,如模型視圖控制器(MVC),他也提供了一些您也許不了解的模式,如處理 Web 站點上特定頁面請求或行為請求的 Page Controller 模式。正如您對待大多數(shù)模式一樣,一旦您讀過許多模式,您就會認為 “我已經(jīng)知道那個模式了” 。也許是這樣,但有一個用來引用模式的通用表達方式還是很有幫助的。在有多個組件(由不同人開發(fā))的大型項目中,該類引用是一項很好的幫助。
UML Distilled (Martin Fowler)
UML Distilled: A Brief Guide to the Standard Object Modeling Language(Martin Fowler; Addison-Wesley 2003 年)
UML精粹:標(biāo)準對象語言簡明指南(第3版) (徐家福 譯,清華大學(xué)出版社 ,2005 年)
對于專業(yè)的程序員來說,UML 是一門很重要的通用可視化溝通語言,但是它被過度使用和草率地濫用了。您無需對使用 UML 溝通了解太多。Martin 對 UML 的提煉為您提供了最核心的東西。事實上,前后的封頁提供了常規(guī)基礎(chǔ)上可能使用到的所有東西。該書中 UML 例子的代碼都是 Java 代碼。
Test-Driven Development: By Example (Kent Beck)
Test-Driven Development: By Example(Kent Beck; Addison-Wesley 2002 年)
測試驅(qū)動開發(fā)(中文版) (崔凱 譯,中國電力出版社 ,2004 年)
測試優(yōu)先編程將使編程發(fā)生革命性變化,能助您成為更好的程序員。在寫代碼之前編寫測試開始很難,但卻是一項威力強大的技能。通過優(yōu)先編寫測試,可使代碼更加簡單,并確保從一開始它就能工作(Beck 實踐著他提倡的測試優(yōu)先,與人合寫了 JUnit,這是 Java 語言最流行的測試框架)。Beck 的書是權(quán)威的參考資料,擴展了的 Money 例子也用 Java 語言寫成。Beck 詳述了如何用測試優(yōu)先進行 思考(這也許是許多程序員首先遇到的障礙)。
The Pragmatic Programmer: From Journeyman to Master (Andy Hunt and Dave Thomas)
The Pragmatic Programmer: From Journeyman to Master(Andrew Hunt 和 David Thomas; Addison-Wesley 1999 年)
程序員修煉之道——從小工到專家 (馬維達 譯,電子工業(yè)出版社 ,2004 年)
做一個純粹的面向?qū)ο箝_發(fā)人員有其優(yōu)勢所在。在當(dāng)今復(fù)雜的社會中,作為 Java 語言開發(fā)人員,為完成任務(wù)常要妥協(xié)。Hunt 和 Thomas 探討了如何不將真正重要的東西妥協(xié)掉而完成任務(wù)。這不是一本關(guān)于 Java 語言的書,而是 Java 語言開發(fā)人員重要的思想讀物。例如,我認為沒從“要解決問題,而不是推卸責(zé)任”這句忠言中受益的程序員,不能像個自豪的藝術(shù)家一樣在他的杰作上簽上大名。
Peopleware: Productive Projects and Teams (Tom DeMarco and Timothy Lister)
Peopleware: Productive Projects and Teams(Tom DeMarco,Timothy Lister; Dorset House,1999 年)
人件(第2版) (UMLChina 翻譯組 譯,清華大學(xué)出版社 ,2003 年)
這份列表中的其他所有書籍都至少和技術(shù)有些相關(guān)。這本書卻不是。在所有技術(shù)行話和首字母縮略詞的海洋中,有時軟件開發(fā)人員和經(jīng)理們會忘記:是人 制造了軟件。DeMarco 和 Lister 向我們提醒了這一事實,也向我們提醒了形成這一區(qū)別的原因。這不是一本關(guān)于一門特定編程語言的書籍,但卻是每個 Java 語言程序員都應(yīng)該讀的書。關(guān)于 “累死程序員如何讓經(jīng)理們適得其反” 還有許多其他的好書,但這是最好的一本。