JAVA學習路徑

做者:謝龍前端

連接:https://www.zhihu.com/question/29581524/answer/44872235
來源:知乎
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。

如今互聯網上資源豐富,Java 學習並不難。貼個 Java 服務端入門和進階指南,是給咱們組新人入門用的,包括了學習目標、須要掌握的技能和參考資料,並規劃了學習階段和時間,但願幫助到題主。
前言

歡迎加入咱們。這是一份針對實習生/畢業生的服務端開發入門與進階指南。遇到問題及時問你的 mentor 或者直接問我。 建議:java

  • 儘可能用 google 查找技術資料。
  • 有問題在 stackoverflow 找找,大部分都已經有人回答。
  • 多看官方的技術文檔。
  • ibm developerworkers 的文章質量總體上有保障。
  • 平時花一些時間在 github 上閱讀優秀項目源碼。
入門(1-2 個月)
  1. 目標:參與簡單的項目開發。
  2. 技能:
    • 掌握 Java。經典的《Java 核心技術:卷1 基礎知識》(或者《Java 編程思想》)必看,跳過其中的圖形和 applet 章節。習慣查閱 Java API Doc。爲了保證代碼的質量,《Effective Java》、《Clean Code》和《重構》也須要至少通讀一遍。
    • 熟悉 Linux 開發環境和 bash shell。Linux 是咱們的開發和部署環境,你最好儘快熟練它。Linux 的基本使用能夠經過《鳥哥的Linux私房菜:基礎學習篇(第三版)》學習,開發 bash shell 腳本能夠參考《Linux Shell腳本攻略》。
    • 掌握開發工具
      • 熟練使用一種 IDE。Intellij IDEA或者 Eclipse 均可以,推薦使用前者。至少熟悉經常使用的快捷鍵,會 debug(包括遠程 debug)項目。
      • 熟悉一種編輯器。好比 Vim/Emacs/Sublime Text,至少學會搜索/替換/代碼補全。
    • 掌握 JDK 之外的經常使用類庫和工具包。JDK 原生 API 在不少場景下使用並不方便。你須要掌握社區貢獻的優秀類庫和工具包,好比 apache commons、google guava 等,具體能夠翻閱 服務端技術選型 的Utility 篇。
    • 掌握 Web 開發框架。咱們使用 Spring(或Rose) + Ibatis(或Jade) 開發 web 服務,你須要熟練掌握它們。
    • 學習代碼規範。咱們大體上遵循 oracle 的 Java 語言編碼規範,你能夠先閱讀並熟悉它。Code Formatting 文件在 git@xxx/coding-standard.git,在編寫代碼以前,請把它導入到 IDE 中。另外,確認 IDE 已經安裝 Findbugs 和 CheckStyle 插件。
    • 熟悉開發流程。咱們的開發流程大體以下:功能開發->單元測試->功能測試->Code Review->集成測試->發佈。確保你熟悉其中的每一個環節。
    • 其餘。須要熟練使用版本控制工具 Git(閱讀:《Git 權威指南》),以及項目構建工具 Maven(閱讀:《Maven 實戰》)。另外,在這個階段能夠嘗試 TDD 開發。
進階(2-6 個月)
  • 目標:獨立負責某個服務端項目。
  • 技能:
    • 掌握 web 開發最佳實踐,掌握 Restful API 設計,理解 Spring 原理。推薦閱讀《Spring揭祕》。掌握項目分層、子模塊劃分。推薦閱讀:《J2EE 核心模式》。
    • 掌握 web 架構設計。包括 Http 反向代理,數據緩存,負載均衡,水平擴展和垂直擴展。推薦閱讀:《分佈式 Java 應用:基礎與實踐》。
    • 掌握關係型數據庫。包括設計 MySQL 表結構,根據業務特色分表分庫,基於執行計劃的 SQL 分析優化,以及數據庫容量規劃。推薦閱讀:《MySQL 必知必會》、《高性能 MySQL》。
    • 瞭解 NoSQL。咱們大規模使用 Hadoop、HBase、Hive,同時部分項目使用 Redis、Storm。你須要學會這些工具最基本的使用。
    • 學習 web 安全知識。瞭解 web 前端安全問題。設計安全 web 服務,包括加解密、防僞造、防重放攻擊等。
    • 掌握 Http (推薦閱讀:《圖解Http》、《http權威指南》)、Thrift 等協議。
    • 掌握服務容量規劃,性能調優,可靠性保證,以及故障處理。學習容量規劃和性能調優知識,梳理業務監控點,熟練使用咱們的監控報警系統。推薦閱讀:《深刻理解 Java 虛擬機》。
    • 其餘。設計模式:從項目中學習,有時間能夠看看《深刻淺出設計模式》、《JDK 裏的設計模式》。學習Java Socket 編程與多線程知識,能夠看看《Java 併發編程實戰》,並翻翻併發編程網的文章。
深刻(6 個月-)
  • 目標:分佈式系統和中間件開發。
  • 構建知識體系:《大型網站系統與 Java 中間件實踐》、《大型網站技術架構:核心原理與案例分析》。
  • 原理與設計:《大規模存儲式系統》、《UNIX 網絡編程 卷1:套接字聯網 API》、《How Tomcat Works》。
  • 學習開源項目:Apache Thrift、Zipkin、Netty、Rose、Jade、淘寶 RPC 系統 Dubbo 等。分析項目中的設計思路。好比,一樣是RPC框架,Finagle 和 Dubbo 有什麼異同。
  • 其餘。根據參與的項目加深學習吧。好比,若是須要寫 DSL,能夠讀一下《領域特定語言》,對 Redis 感興趣推薦讀一下:《Redis 設計與實現》。有兩本書,不管作什麼項目,都推薦讀:《Unix 編程藝術》、《UNIX 環境高級編程(第3版)》。
主要分三階段來講:入門,進階程序員,攻城獅思惟,每一個階段推薦相關書籍:
java入門書籍推薦:

入門者最須要靜下心來系統化的學習知識,但同時也有不少可能與Java自己無關但很重要的疑問。
Head First Java(中文版)(第2版)

head first系列的教材,看起來都特別輕鬆,圖文並茂,簡單易懂,適合初學者選擇。缺點則是隻介紹一些最基礎最實用的東西 知識點不夠豐富。react

Java核心技術 第七版 卷Ⅰ(基礎知識)

統全面講解Java語言的核心概念、語法、重要特性和開發方法,包含大量案例,實踐性強,第1章概述了Java語言與其餘程序設計語言不一樣的性能。git

Java開發實戰經典

書中的代碼和案例較多,知識點也比較全面,在實際開發的過程當中來說解一些基礎內容,對於新手而言很實用。程序員

Thinking In Java 4(完美高清中文版)

Think in java被譽爲「java聖經」。不管你處於什麼階段,每一次閱讀都能有所收穫。也所以,對於新手而言,這本書譭譽參半,自行斟酌吧。github

————————————————華麗分割線————————————————-————web

程序員進階篇:
這一階段的Java學習者處於高速成長期,須要不斷的獲取項目經驗、掌握更多開發知識。固然,最重要的仍是爲了成功拿到靠譜的offer。shell

《Effective Java中文版 第2版》

本書介紹了在java編程中78條極具實用價值的經驗規則,每條規則都以簡短、獨立的小文章形式出現,並經過例子代碼加以進一步說明,這些經驗規則涵蓋了大多數開發人員天天所面臨的問題的解決方案。數據庫

Java併發編程實戰(中文版)

深刻淺出地介紹了Java線程和併發,是一本完美的Java併發參考手冊。其中並不是只講述了Java的多線程設施,對通常的併發編程的rationale也有至關透徹的闡述apache

測試驅動開發 by Example

書中不只以案例的形式呈現了測試驅動開發的原則和方法,並且詳盡地闡述了測試驅動開發(TDD)的模式和最佳實踐。本書從始至終貫穿了兩個TDD項目,展現瞭如何垂手可得且卓有成效地編寫優質代碼的技術。

重構_改善既有代碼的設計[高清版]

書中給出了70多個可行的重構,每一個重構都介紹了一種通過驗證的代碼變換手法的動機和技術。本書提出的重構準則將幫助你一次一小步地修改你的代碼,從而減小了開發過程當中的風險。

————————————————進階攻城獅————————————————-————

java攻城獅推薦學習書籍:

這一階段的Java學習者已經漸入佳境,沉下心來研究技術點的同時,更多的是關於Java的思考。

企業應用架構模式(中文版)

做者將40多種常常出現的解決方案轉化成模式,最終寫成這本可以應用於任何一種企業應用平臺的、關於解決方案的、不可或缺的手冊。

敏捷開發-敏捷軟件開發:原則、模式與實踐(全)

好的技術書籍的標準是通俗易懂;文字精煉;耐讀,有吸引力;有思想性。做者的書寫功力有目共睹,並且他的技術修爲也絕對無人質疑。所以他寫的這本書秉承了他一向的優點。符合全部好處所具有的條件。

《Java性能優化權威指南》

Java性能優化聖經!主要爲Java SE 和Java EE 應用的性能調優提供建議。主要包括如下幾方面:性能監控、性能分析、Java HotSpot VM 調優、高效的基準測試以及Java EE 應用的性能調優。

學習過程當中精品開發工具推薦:

JDK(Java開發工具包)、SparkJava、jClarity、Eclipse、NetBeans、JUnit.org、IntelliJ IDEA 13.1
相關文章
相關標籤/搜索