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