入門/基礎篇:
《 Java2核心技術(第6版)卷I:基礎知識 》(CORE JAVA)
初學Java的經典著作!通過它可以快速掌握Java編程,這本書也同樣適合Java程序員用作參考書,因為它涵蓋的范圍非常廣,包括從正則表達式到高性能I/O這樣的主要新特性。
《 Java編程思想(第2版) 》(Thinking in Java)
這本書受到全球程序員的廣泛認同,它的前兩版曾多次榮獲Software Development , JavaWorld等機構頒發的大獎,《 Java編程思想(第2版) 》在2003年《程序員》舉辦的年度評選活動中獲得冠軍。
這本書全面介紹了從Java的基礎語法到最高級特性,并針對Java 1.4版做了更新。在內容上有廣度,也有一定深度,不僅適合入門,也可供深入學習用,同時作者還著重闡釋了面向對象設計的理念。
作者Eckel開放了這本書的電子版,很值得我們尊敬,樹立了一個慈祥的教育家的形象,不過如果要系統學習的話最好買一本紙版,否則太累眼。
《 Java編程語言(第三版) 》(The Java Programming Language)
這本書由“Java之父”James Gosling親自參與編寫,完全覆蓋了Java語言當前版本的特征和類庫,可以作為Java語言的入門向導,也可作為高級Java開發及Java語言教學的參考用書。
《 Java技術手冊(影印版) 》
用這本書也非常好!不過可惜的是目前還沒有第四版的中文版。考慮到第三版中文版已經有不少時間,所以在這我們就不向大家推薦了。
個人建議:
初學編程:《 Java2核心技術(第6版)卷I:基礎知識 》,如果英文好可看《 Java技術手冊(影印版) 》
體會Java的思想:《 Java編程思想(第2版) 》
需要一本全面的參考手冊:《 Java2核心技術(第6版)卷I:基礎知識 》《 Java編程思想(第2版) 》《 Java編程語言(第三版) 》
提高篇:
《 Effective Java中文版 》
這本薄薄的小書不僅獲得了2002年度Jolt大獎,還受到Java之父的推薦。它繼承了《Effective C++》的名字和風格,Bloch為我們帶來了57條極具實用價值的Java經驗規則,書中每條規則都以簡短、獨立的小文章形式出現,這些小文章包含了詳細而精確的建議,以及對語言中許多細微之處的深入分析,并通過例子代碼加以進一步說明。這本書實踐性很強,作者把開發中的經驗和模式進行講解,并舉實例進行說明。中文版由潘愛民翻譯,保證了譯本的質量。
如果想對這本書了解更多可看下一本書Practical Java的評價
《 Practical Java中文版 》
這是本書譯者之一劉永丹的推薦:
大家好!我是劉永丹,是本書的譯者之一。
目前我的手上沒有Practical Java的簡體版,只有繁體版。大家比較關注的一個問題,是此書與Effective Java的關系,這也是我在翻譯此書經常想到的問題。我想以這兩本書的讀者身份就這一點談一些自己的體會。不是為了推銷此書:),只是希望在大家選書的時候提供一些參考。
從原版出版的時間來看,Practical Java早于Effective Java,可以說是Java領域中Effective風格書籍的開山之作。此書之所以沒有取名Effective Java,我猜測有兩個原因:一個是Peter Haggar謙虛的性格,二是盡管編排體例模仿了Effective C++,但寫作的角度與Effective C++稍有不同。可以說取名Practical Java是很貼切的,這個問題我后面會再說到。后來Joshua Bloch的Effective Java也采用了Effective的編排體例,可謂英雄所見略同,并獲得了Jolt大獎,名頭大大蓋過了Practical Java。不過買書不應完全憑借名氣和獎項,還是要考慮讀者本身的實際需要。下面我就簡單比較一下這兩本書。
預期的讀者。這兩本書都不是面向初學者的,而是面向中級讀者。但我的體會,二者還有些許差別。Effective Java秉承了Effective C++的一貫特色,專門挖掘有深度的專題,讀者最好具有較好的編程基礎和經驗,例如對設計模式的了解。Practical Java則側重對程序員的實踐的指導,一旦有了Java的基礎,幾乎就可以閱讀此書了,并從中直接借鑒經驗。如果說剛入門的讀者經驗值為1,編程專家經驗值為10,那么Effective Java比較適合4、5以上經驗值的讀者,而3、4經驗值的讀者就已經可以從Practical Java享受到閱讀的快樂了。
覆蓋的范圍。這兩本書的取材確有重復,大約有一半的比例!但是(我一定會說“但是”的,對吧?:)),二者闡述的角度不同。Effective Java重在內容的深度剖析,Practical Java則在說理的淺白上下足功夫,一個“深入”,一個“潛出”,實在是難分伯仲。我有一個體會,無論我怎樣在一本書上用功,在第二遍閱讀時還是會發現原來遺漏的思維死角,一個有效的方法是同時閱讀同一專題、不同風格的兩本書,互相印證。當然,我不想引誘每個讀者同時買這兩本書,個人視自己的情況和喜好來定。
寫作的風格。這個問題主要憑借每個人的感覺了。我認為Effective Java比較嚴謹,舉例子也中規中矩,可以放在案頭,仔細研讀。Practical Java則輕松自然,書中的例子非常容易理解,即可放在床頭隨意閱讀,也可放在計算機旁,需要時參考。Practical Java還有一個令我喜愛的特點,將代碼生成的bytecode展示出來,使許多問題一目了然。
那么,說了這么多,到底該買不買Practical Java呢?我有如下建議:
1 如果你閱讀過了Effective Java,并且感到輕松自如,那么不必破費了(當然買來收藏也不錯:)),倘若在閱讀時有一知半解之處,Practical Java或許是不錯的選擇。
2 如果你是剛入門的Java程序員,有過一段時間的編程經歷,先考慮Practical Java,再考慮Effective Java,這樣的閱讀經歷會順暢一些。
3 如果你還沒有Java經驗,但是有較好的C++背景,首選Practical Java,因為Effective Java對你的幫助不會那么直接。(怎么說來說去都是Practical Java,顯然是“托”:))
4 如果你有豐富的計算機編程經驗,比較寬闊的專業知識面,Effective Java更適合你。
盡管我是本書的譯者,但更多時候我只是個讀者,上面的內容只是建議,僅供參考。
《 深入Java虛擬機(原書第2版) 》(Inside the Java Virtual Machine)
看名字就知道了,這本書告訴你Java虛擬機為你做了什么,如果要成為高手,這是一條必經之路。不過,如果你的時間很寶貴,就沒有必要看它了。
《 Java與模式 》
這本書是閻宏博士寫的,這書像一塊巨大的磚頭,即可學習知識又可以用來當武器。這本書最大的特點就是它將中國傳統文化與最流行的設計概念??“模式”相結合,熊節經理曾經說過:由于缺乏一種文化沉淀,中國人對“模式”的理解通常會有些困難。看了這本書就沒有這個問題了,中國人寫中國事,講解模式的例子是中國人耳熟能詳的孫悟空之類的,憑只要搞過幾個月面向對象,看懂這些東西都不成問題!但要能融為自己的知識,實際應用到開發中去還需要自己的理解、經驗。