學習 JAVA,有什麼書籍推薦?學習的方法和過程是怎樣的?
①有一點C語言基礎(初級的知道指針、數組鏈表、局部變數、全局變數、動態內存分配,堆棧)
②知道C++主要是面向對象,類,封裝,繼承,多態什麼的,但很初級的了解
③現在想好好學JAVA,從什麼書看起?(比如書1-&>書2),該如何學習?
④需要理解 計算機系統 的知識嗎?有什麼好的書推薦?
⑤希望對這方面了解比較深的人給予我關鍵的指導,看什麼書籍、學習的方法,最好有一定的分析說明,真誠的感謝
主要分三階段來說:入門,進階程序員,攻城獅思維,每個階段推薦相關書籍:
java入門書籍推薦:
入門者最需要靜下心來系統化的學習知識,但同時也有很多可能與Java本身無關但很重要的疑問。
Head First Java(中文版)(第2版)
head first系列的教材,看起來都特別輕鬆,圖文並茂,簡單易懂,適合初學者選擇。缺點則是只介紹一些最基礎最實用的東西 知識點不夠豐富。
Java核心技術 第七版 卷Ⅰ(基礎知識)統全面講解Java語言的核心概念、語法、重要特性和開發方法,包含大量案例,實踐性強,第1章概述了Java語言與其他程序設計語言不同的性能。
Java開發實戰經典書中的代碼和案例較多,知識點也比較全面,在實際開發的過程中來講解一些基礎內容,對於新手而言很實用。
Thinking In Java 4(完美高清中文版)Think in java被譽為「java聖經」。無論你處於什麼階段,每一次閱讀都能有所收穫。也因此,對於新手而言,這本書毀譽參半,自行斟酌吧。
————————————————華麗分割線————————————————-————
程序員進階篇:
這一階段的Java學習者處於高速成長期,需要不斷的獲取項目經驗、掌握更多開發知識。當然,最重要的還是為了成功拿到靠譜的offer。
本書介紹了在java編程中78條極具實用價值的經驗規則,每條規則都以簡短、獨立的小文章形式出現,並通過例子代碼加以進一步說明,這些經驗規則涵蓋了大多數開發人員每天所面臨的問題的解決方案。
Java並發編程實戰(中文版)深入淺出地介紹了Java線程和並發,是一本完美的Java並發參考手冊。其中並非只講述了Java的多線程設施,對一般的並發編程的rationale也有相當透徹的闡述
測試驅動開發 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以上都是本人收集的資料希望對你有所幫助。
更新:我新開通了知乎專欄 Not A Nerd? - 知乎專欄,會不定期在上面發表一些編程方面的文章,歡迎大家關注。
現在互聯網上資源豐富,Java 學習並不難。貼個 Java 服務端入門和進階指南,是給我們組新人入門用的,包括了學習目標、需要掌握的技能和參考資料,並規划了學習階段和時間,希望幫助到題主。
前言
歡迎加入我們。這是一份針對實習生/畢業生的服務端開發入門與進階指南。遇到問題及時問你的 mentor 或者直接問我。 建議:
- 盡量用 google 查找技術資料。
- 有問題在 stackoverflow 找找,大部分都已經有人回答。
- 多看官方的技術文檔。
- ibm developerworkers 的文章質量整體上有保障。
- 平時花一些時間在 github 上閱讀優秀項目源碼。
入門(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 初學者? - 劉欣的回答
拋個磚
Java 相關書籍:
- Thinking in Java 大學時就是看這本書學的 Java,反覆看了幾遍,這本書可以說是 Java 大辭典,大部分 Java 語言上的問題都可以在這裡找到答案
- Effective Java 講一些 Java 編程上的實踐問題,對於提升代碼質量和編碼效率有幫助
學習方法:
個人覺得大多數語言的學習方法差異應該不大,我學習的時候是先看書打基礎,跟著書上敲代碼,然後有代碼閱讀能力後就進入了讀代碼與寫代碼的循環;
另外,多看看別人寫的優秀的代碼很是能夠提高自己對這門語言的理解。
計算機系統的知識其實包含了很多內容,很遺憾我當時沒有認真學習,這方面的知識我都是在工作中慢慢積累的,實用而駁雜。最大的感受就是:
計算機體系結構知識常常能在架構設計、編碼及調優等方面起到很關鍵的作用。
比如:
- 了解機械硬碟的讀寫機制,我們可以設法提升應用的讀寫效率
- 了解 TCP 和 UDP 協議,我們可以做出性能優異的網路通信庫
- 了解寄存器和緩存,我們可以優化代碼,提升命中率
等等……
總結一下:- 既然題主打算學 Java,個人建議題主自上而下,先學好 Java 語言,感興趣的話可以研究研究 JVM
- 了解一下計算機網路,起碼如常用的協議(如 HTTP、TCP等)有大致了解
- 了解一下進程、線程和鎖
其實需要學習的東西很多很多,這裡只簡單列出幾點,大多是個人經驗,有錯誤的地方望輕拍。
以上。
6月2日更新:
阿里雲大學課程:
【Java學習路線圖,看你掌握了多少】附全部知識點免費視頻課程
這個路線圖中包含了Java學習的三部曲:
- Java零基礎入門(點擊標題學習)
- Java面向對象開發(點擊標題學習)
- Java高級開發(點擊標題學習)
在阿里雲大學,你可以跟隨Java名師李興華學到路線圖中所有的知識點(完全免費哦),趕快開始你的Java學習之路吧!
更多技術課程,請關注阿里雲大學專欄:阿里雲大學 - 知乎專欄
-------------------------------
本書架主要針對Java後端開發與架構。更偏愛那些能用簡短流暢的話,把少壯不努力的程序員所需的基礎補回來的薄書,而有些教課書可能很著名,但乾澀枯燥,喋喋不休的把你帶回到大學課堂上昏昏欲睡,不錄。
書架地址: http://click.aliyun.com/m/9367/
《core java》講的比較明確,看視頻,推薦馬士兵的
按題主說法,你應該有一些編程基礎的。
個人建議:
1、去網上下載畢向東或者馬士兵的Java基礎視頻
2、先看一遍,不用太摳細節,每章看懂就行了。基礎語法不用說了,面向對象、集合、反射必須掌握,多線程、網路,IO,正則得懂一些。圖形就放棄吧。期間掌握查Java API能力。如果你覺得太慢可以拖著看。
3、看Thinking in Java彌補一些細節問題。
4、有問題可以去CSDN問,當然英文好去StackOverFlow最好了。
首先要明確目的是什麼,如果是想要從事Java開發相關的職業,那麼或可按下列的學習。
第一階段,入門,初級工程師
- 隨便找一本 「從入門到精通」這類的書,看完後應該了解Java基本概念如數據類型,語法,面向對象的思想;
- 《Java編程思想》,《Effective Java中文版(第2版)》看完後應該對對象持有,泛型,容器,多線程,代碼復用(繼承、介面)都有更深理解了。
- w3school 在線教程,學習SQL,HTML、CSS、JavaScript、jQuery,一周時間應該就可以上手了;
- 《Java Web 高級編程》(原版書名:Professional Java for Web Applications),王肖峰譯,清華大學出版社,這本書看完後對JSP,Servlet等Java Web技術,以及Spring框架,至少使用上應該沒問題了
至此,第一階段的學習完成了,已經入門了,這時你再看看面試題,補充下不足之處,若學歷不太差,形象不太差,口齒清楚的話,簡歷上可以寫「熟悉」這個程度,應該能夠在一線城市找到6~10萬一年的工作了。
第二階段,向高級工程師邁進- Java並發編程
- 深入理解Java虛擬機
- Java核心技術
- Spring 實戰(第4版)(原版書名:Spring in Action 4th edition)
- mybatis – MyBatis 3
- 深入淺出MySQL
- 高性能MySQL第三版
- 精通Oracle SQL
- Maven權威指南
- Pro Git
這些書看完了你應該對Java、關係資料庫、各類常用框架都深入或全面的理解了。然後,下面兩本書大約可以成為你的面試參考資料了。
- 編程珠璣
- 編程之美
至此,你應該已經有1~2年的Java開發經驗,參與過幾個公司的大型項目或者流行的開源項目。在第二階段的工作中應該積累了更多的軟體開發經驗,對IO/NIO、JVM、多線程、高並發、分散式集群、TCP/IP、socket的概念和實際應用都已經有深入的了解,現在你可以在簡歷上寫上「精通」了,應聘帶「高級」二字的開發、測試之類的工程師職位應該是沒什麼問題了,現在你的薪資要求最低應該是11k或13k
第三階段,資深工程師/高級工程師
這個時候你應該已經有具體方向了。應該不需要他人建議方向了。繼續進行技術儲備方向,我粗略建議如下(前提是之前尚未掌握):關注下NoSQL資料庫Redis、MongoDB等。Linux常用命令,shell腳本也應該開始精通了。如果做大數據那麼可以關注hadoop,關注R語言。。。
第三階段的學習完成後,對於項目構建,團隊管理等方面也應該已經有相關概念和實際工作的能力。技術學習能力方面應該已經極強(例如這時需要轉向其他高級語言,那麼應該已經可以在兩個月內自學到更第二階段差不多的程度)。這一階段該做什麼應該不用他人建議了……
--2016.08.16 更新書籍推薦 更替 「Java Web 整合開發 王者歸來」這個學期開始學習JAVA,分享一下自己覺得有用的方法:
1.思考,堅持思考,不要臉地思考。
明白一個早該明白的問題,你看過的書不是你的,你copy過的代碼不是你的,你看過的公開課不是你的,只有你思考過得東西才是你的,堅持思考,學會用大腦debug
2.多看書而不是公開課
首先,公開課確實是有用的,推薦我們學校男神翁愷fm的課,各大公開課網站都有,配合代碼食用風味更加。但是,所有公開課的一個缺陷就是,老師不清楚自己的學生水平如何,他只能就低。所以很多深的概念會講淺,淺的概念會講多,性價比不如自己讀書。《Thinking in java》為首的書,Bruce的幽默和天才真真吸引人,推薦一下
3.動手寫代碼
基本功不用多說了,據說李開復對本科生的要求是代碼量10w行,且碼且珍惜
我就知道有人會說Thinking in Java,但我個人不推薦這本書作為入門書籍,裡面有許多東西苦澀難懂,讓初學者找不到重點,這本書應該定位為進階書籍,在學會基本的java編程後再讀。入門的話,還是去看視頻吧,講的都是重點,上手也快
樓上答答的已經不錯了,感覺小米進度好緊啊~
個人推薦一本書吧《 java 語言程序設計》 中文第八版 梁勇著
這本書個人有代碼和習題,感覺比較適合初學者,尤其比較適合自學的童鞋
《Java入門經典》—&>《Java面向對象編程》—&>《Java7編程高級進階》—&>《Java語言的科學與藝術》—&>《編程之美》—&>《編程之道》—&>《編程之禪》—&>《勁椎病康復指南》
可以看一下~~
Java程序員必讀的10本書(附PDF合集下載鏈接)
你應該看涵蓋Java 8的書(2014年以後),Lambda,Reactive Programming這樣概念的引入不僅僅是語法,更是編程思維與習慣的改變。
- Beginning Java 8 Fundamentals: Language Syntax, Arrays, Data Types, Objects, and Regular Expressions
- Java: A Beginner"s Guide, Sixth Edition
- Core Java for the Impatient
- Java SE8 for the Really Impatient: A Short Course on the Basics
- Java 8 in Action: Lambdas, streams, and functional-style programming
有些書老,但側重不是語言本身,而是更一般的程序設計問題
- Effective Java (2nd Edition) - OOP社區很重要的書,不只是Java程序員
- Java Concurrency in Practice
- Data Structures and Algorithms Made Easy in Java: Data Structure and Algorithmic Puzzles
Java 性能
- Java Performance
- The Java Virtual Machine Specification, Java SE 8 Edition
回想我自己之前的自學經歷,分享幾條經驗參考下:
1. 盡量找一本薄的書,花個三五天的時間了解下基本概念和基本用法,不需要把什麼都搞得非常清楚,有問題的地方先跳過,直到你第三次碰到它,就試著自己去理解和解決;
2. 了解了基本語法之後,儘快找一個小程序寫寫動動手,可以是自己的小工具(比如寫個理財小工具)或者跟著一些教程敲一遍,這時肯定會碰到很多問題,多Google多思考多問問,在解決問題的過程中會學習得特別快;
3. 不斷重複步驟2,不斷地寫一些更複雜的程序,這樣你可以就會涉及到更多的技術比如資料庫、緩存、Web,通過Google、思考和提問解決這些問題;
4. 如果堅持了半年下來,自己能寫出兩三個小程序,並且覺得Java真不錯,再繼續深入地學習語言特性和相關的技術,並不斷地實踐,然後慢慢就學會了。
確實不推薦新人讀《Think in java》。除了《java核心技術》,建議maning的in action 系列,比如《java 8 in action》《spring in action 4th》等。in action系列講解比較詳細,還有Oracle官方的tutorial,入門首選。
= = 咩,我能先說件事么,
這跟一個熟悉路的人給完全陌生的人指路一樣,很容易先入為主帶進去太多東西;
所以我覺得,抽個時間找個圖書館/新華圖書城什麼的,提前網上查好藏書,然後把幾本都搬出來看看.....過一遍,自己找方便的多,一下午的時間對初學者還是很有價值的。
= = 我推薦不了什麼。
我可以列下不推薦的咩.....
《像計算機科學家一樣思考Java》(看完了)這本很多人推薦給初學者,因為開放的關係,還有衍生版本。反正我看完的感受.....有點懵。
翻譯雖然是兩位程序員,但是其中有非常多晦澀難懂用詞不夠精確的地方。並且,半本書,我就找出了近十處錯誤,就相隔不到5行.....條件就搞錯了。
慕課網有課程講得不錯
初學者,就是敲代碼,敲代碼,敲代碼,重要的事情說三遍,不會的敲三遍。。。。當然該理解 的多理解。不會的就要多到網上查資料,查不著多問,看書是好的學習方法,因為書上的比較全面系統,網上的視頻比較側重重點,但貴在入門快。
自己學習是否很無聊,遇到問題是否找不到地方,找不到人討論,歡迎加入群: 107680366,我們一起學習,一起討論java知識,共同進步!我們歡迎積極向上,熱愛java,有上進心的人前來一起學習!
推薦你看看這個書單Java必讀書單,全都是學習Java必看的經典,從入門書籍看起,首先掌握Java中的基礎概念,然後動手編程實踐,入門之後,學起來就比較輕鬆了,再學習進階書籍,掌握Java的高級用法,並根據你的應用需求,著重學習相關內容。
推薦閱讀: