學習Java最痛苦的事情莫過於對將來職業方向的選擇。尤爲是選擇開發Java Application仍是Java Web方向,在你先定好大類後還有數不盡的小類教你無從學起。程序員
所以,做爲初學者的你必須看完本文。從中你將瞭解到如何學習Java並選擇適合本身的Java。ajax
我想就我本身讀過的技術書籍中挑選出來一些,按照學習的前後順序,推薦給你們,特別是那些想不斷提升本身技術水平的Java程序員們。spring
1、Java編程入門類編程
若是你是初學者,僅僅學過一點C語言或VB語文,對於沒有Java編程經驗的程序員要入門,隨便讀什麼入門書籍都同樣,只要你認真的學習JAVA,這個階段須要你快速的掌握Java基礎語法和基本用法,宗旨就是「囫圇吞棗不求甚解」,先對Java熟悉起來再說。設計模式
用很短的時間快速過一遍Java語法,連懵帶猜多寫寫代碼,要「知其然」。沒錯,你就要在知其然不知其因此然,前期只要求你掌握JAVA的大致框架,而後咱們再進入深層次的學習JAVA。下面咱們介紹第一本Java書籍。架構
一、《Java編程思想》框架
在你學會了一些基礎的JAVA語法及類後,,你須要「知其因此然」了。這個時候強烈推薦你學習《Java編程思想》是一本讓你知其因此然的好書,它對於基本的面向對象知識有比較清楚的交待,對Java基本語法,基本類庫有比較清楚的講解,能夠幫你打一個良好的Java編程基礎。工具
在看《Java編程思想》這本書,你必定要注意,由於它實在是太厚了,要當心不要砸到本身的腳,也比較羅嗦,不適合現代人快節奏學習,所以看這本書要懂得取捨,不是每章每節都值得一看的,挑重點的深刻看就能夠了。另外,當你看完《Java編程思想》後,也能夠把它看成枕頭用。睡醒後還能拿來看幾眼,簡直是一本居家旅行,學習進步不可多得之物。單元測試
二、《Agile Java》中文版 (這是第二本了呵)學習
《Agile Java》中文版這本書一大特色是以單元測試和TDD來貫穿全書的,在教你Java各類重要的基礎知識的過程當中,潛移默化的影響你的編程思惟走向敏捷,走向TDD。TDD的最大優勢在於它能夠改變你對JAVA的思惟模式。
2、Java編程進階類
打算以程序爲生的程序員們,在學期完基礎的Java入門後,要再接再礪學習Java的重構及框架了。打下一個良好的Java基礎,還須要更多的實踐經驗積累,我想沒有什麼捷徑。有兩本書值得你在編程生涯的這個階段閱讀,培養良好的編程習慣,提升你的代碼質量。
一、《重構 改善既有代碼的設計》
業內很是有名的書,幾乎是全部JAVA進階級高手必看的一本書。其實不論你是JAVA高手仍是JAVA菜鳥,我都推薦你看一下這本有關JAVA重構的書。別等你的程序員朋友問你是否看過《重構 改善既有代碼的設計》 時,你尷尬地告訴其它JAVA程序員說沒看過呵。
二、《測試驅動開發 by Example》
本書最大特色是很薄,看起來沒有什麼負擔。你能夠找一個週末的下午,一邊看,一邊照作,一個下午就把書看完,這本書的全部例子跑完了。這本書的做用是經過實戰讓你培養TDD的思路。Very Tiny的一本書,看起來很帶勁,通俗易懂。是你學習TDD的簡易途徑。
3、Java架構師之路
哇~你已經學到了JAVA架構師的水平了,如今的你應該已經很是嫺熟的運用Java編程,並且有了一個良好的編程思路和習慣了,可是你可能還缺少對應用軟件總體架構的把握,如今就是你邁向架構師的第一步。你準備好了嗎?OK.Let's GO!準備好看你一個經典入門JAVA架構師的書籍吧。
一、《Expert One-on-One J2EE Design and Development》
這本書是Rod Johnson的成名著做,很是經典,從這本書中的代碼誕生了springframework。可是好像這本書沒有中譯本。
二、《Expert One-on-One J2EE Development without EJB》
咱也不說了,這本書估計全世界學JAVA的有一半都會看一看,但看得明白和看得懂的估計能有百分之一就不錯了。
這本書由gigix組織翻譯,多位業界專家參與,雖然署名譯者是JavaEye,其實JavaEye出力很少,實在是忝居譯者之名。
以上兩本書都是Rod Johnson的經典名著,Java架構師的必讀書籍。在我所推薦的這些書籍當中,是我看過的最仔細,最認真的書,我當時讀這本書幾乎是廢寢忘食的一氣讀完的,有小時候挑燈夜讀金庸武俠小說的勁頭,書中所講內容和本身的經驗知識一一印證,又被無比精闢的總結出來,讀完這本書之後,我有種被打通經脈,功力爆增的感受。
三、《企業應用架構模式》
Martin的又一本名著,但這本書我只是泛泛的看了一遍,並無仔細看。這本書彷佛更適合作框架的人去看,例如若是你打算本身寫一個ORM的話,這本書是必定要看的。可是作應用的人,不看貌似也無所謂,可是若是有空,我仍是推薦認真看看,會讓你知道框架爲何要這樣設計,這樣你的層次能夠晉升到框架設計者的角度去思考問題。Martin的書我向來都是推崇,可是歷來都沒有像Rod Johnson的書那樣很是認真去看。
四、《敏捷軟件開發 原則、模式與實踐》
Uncle Bob的名著,敏捷的經典名著,這本書比較特別,與其說是講軟件開發過程的書,不如說講軟件架構的書,本書用了很大篇幅講各類面向對象軟件開發的各類模式,我的覺得看了這本書,就沒必要看GoF的《設計模式》了。
4、軟件開發過程
瞭解軟件開發過程不單純是提升程序員我的的良好編程習慣,也是加強團隊協做的基礎。
一、《UML精粹》
UML其實和軟件開發過程沒有什麼必然聯繫,倒是軟件團隊協做溝通,撰寫軟件文檔須要的工具。可是UML真正實用的圖很少,看看這本書已經足夠了,徹底沒有必要去啃《UML用戶指南》之類的東西。要提醒你們的是,這本書的中譯本翻譯的很是之爛,建議有條件的看英文原版。
二、《解析極限編程 擁抱變化》XP
這是Kent Beck名著的第二版,中英文對照。沒什麼好說的,必讀書籍。
三、《統一軟件開發過程》UP
其實UP和敏捷並不必定衝突,UP也很是強調迭代,測試,可是UP強調的文檔和過程驅動倒是敏捷所不取的。無論怎麼說,UP值得你去讀,畢竟在中國真正接受敏捷的企業不多,你仍是須要用UP來武裝一下本身的,哪怕是披着UP的XP。
四、《敏捷建模》AM
Scott Ambler的名著,這本書很是的progmatic,告訴你怎麼既敏捷又UP,把敏捷和UP統一塊兒來了,又提出了不少progmatic的建議和作法。你能夠把《解析極限編程 擁抱變化》、《統一軟件開發過程》和《敏捷建模》這三本書放在一塊兒讀,看XP和UP的不一樣點,再看AM是怎麼統一XP和UP的,把這三種理論融爲一爐,造成本身的理論體系,那麼你也能夠去寫書了。
5、JAVA軟件項目管理
若是你忽然被領導提拔爲項目經理,而你徹底沒有項目管理經驗,你確定會內心沒底;若是你以爲本身管理項目不善,很想改善你的項目管理能力,那麼去考PMP確定是遠水不解近渴的。
一、《快速軟件開發》
這也是一本名著。能夠這樣說,有本書在手,你就有了一個項目管理的高級參謀給你出謀劃策,不再必擔憂本身不能勝任的問題了。
這本書不是講管理的理論的,在實際的項目管理中,講這些理論是不解決問題的,這本書有點相似於「軟件項目點子大全」之類的東西,列舉了種種軟件項目當中面臨的各類問題,以及應該如何解決問題的點子,你只須要稍加變通,找方抓藥就好了。
6、總結
在這份推薦閱讀書籍的名單中,我沒有列舉流行的軟件框架類學習書籍,例如Struts,Hibernate,Spring之類,也沒有列舉AJAX方面的書籍。是由於這類書籍容易過期,而上述的大半書籍的生命週期都足夠長,值得你去購買和收藏。