0基礎(chǔ)怎么學(xué)java編程?
隨著互聯(lián)網(wǎng)的火熱,java編程的職業(yè)非?;穑絹碓蕉嗟娜碎_始進(jìn)入到j(luò)ava開發(fā)行業(yè),但是對(duì)于0基礎(chǔ)小白來說,學(xué)習(xí)java是一件非常困難的事情,那么0基礎(chǔ)怎么學(xué)java編程呢?今天云和教育的小編就來給你說一下:
先說明一下,雖然問題是“一年內(nèi)如何全職學(xué)習(xí)”,實(shí)際上,如果時(shí)間安排合理的話,大概需要六個(gè)月左右,有些基礎(chǔ)好,自學(xué)能力強(qiáng)的朋友,甚至在四個(gè)月左右就開始找工作了。
和樓主有些相似,大三的時(shí)候,我萌生了放棄本專業(yè)的念頭,斷斷續(xù)續(xù)學(xué) Java Web 累計(jì)一年半左右,總算是學(xué)完了,找工作對(duì)你來說或許還有些距離,而我已經(jīng)有了自己喜歡的工作,從一個(gè)自學(xué)狂人的角度,我只能給你比較實(shí)用但有限的建議:
如果 .Net 你是剛?cè)腴T, 建議轉(zhuǎn)學(xué) JavaWeb 或 Android, 我對(duì)學(xué)習(xí)何種平臺(tái)并無偏見,而是自學(xué)需要大量的參考資料, Java 的學(xué)習(xí)資料,無論是視頻還是電子書都要遠(yuǎn)多于 .Net,這是個(gè)很實(shí)際的問題,你可以去百度一下(當(dāng)年都是在電驢搜,現(xiàn)在已成死驢),對(duì)比便見分曉。
當(dāng)年下載視頻教程只能忍受10KB 的龜速,現(xiàn)在可幸福多了,國內(nèi) Java 培訓(xùn)機(jī)構(gòu)越來越多,各自的官網(wǎng)也都放出了基礎(chǔ)的學(xué)習(xí)視頻(別指望他們給你放最值錢的項(xiàng)目實(shí)戰(zhàn)教程,放出的也未必是完整的),提供的都是百度網(wǎng)盤,下載不再是問題了,希望看到這個(gè)帖子的朋友都知道該去哪里找教程,別去電驢那種 ed2k 網(wǎng)站了,電驢已成往事,資料參差不齊,不完整。
自學(xué)所需的視頻教程一定要成體系,而且每部分最好是完整的,否則,你可能學(xué)到某個(gè)階段發(fā)現(xiàn)剩下的視頻還沒有發(fā)布(萬惡的視頻培訓(xùn)機(jī)構(gòu)都愛玩兒這個(gè)伎倆),也可能某個(gè)階段只學(xué)了一般發(fā)現(xiàn)沒有后續(xù)視頻了,在選擇視頻教程前,你需要 .Net 或 JavaWeb 完整的學(xué)習(xí)流程圖(視頻培訓(xùn)機(jī)構(gòu)官網(wǎng)都會(huì)提供學(xué)習(xí)路線圖,大同小異),根據(jù)每階段尋找對(duì)應(yīng)的視頻教程循序漸進(jìn)。
如果你的英文足夠好,在看視頻教程的時(shí)候一定要搭配英文電子書(文字版的,方便搜索),為什么這么做? 在我看過的多達(dá) 50G 的視頻教程里,講課的老師就算技術(shù)再牛,也有講的模糊的地方,甚至講錯(cuò)的地方,甚至是忽悠你的地方??!這時(shí)候,你需要的可能不只是 Google 和 StackOverflow, 你需要與此配套的英文電子書, 首推 Manning 和 O’Reilly 出版的書。
報(bào)班的人一般有兩個(gè)考慮:
基本上四個(gè)月速成,省心,不用操心軟件、文檔、路線、課程等等(培訓(xùn)班學(xué)生常有不知道 eclipse 去哪里下載的,太依賴?yán)蠋熈耍?/p>
有老師帶著做項(xiàng)目,最后還能推薦工作。
補(bǔ)充-1:鑒于很多人都在問怎么個(gè)學(xué)習(xí)路線,我貼個(gè) Java Web 學(xué)習(xí)路線,僅供參考,但絕對(duì)夠找工作的了, 如下,都是可以免費(fèi)找到的教程(請(qǐng)一定驗(yàn)證是否完整),拼湊起來差不多剛夠?qū)W習(xí) Java Web 了,只是銜接起來會(huì)有些不連貫,畢竟不是一個(gè)機(jī)構(gòu)講的。
1. Java SE
參考視頻:畢向東、馬士兵、張龍的 JavaSE 視頻教程
參考書籍:
《Thinking in Java》 ,只適合參考,但不適合做入門書,作者在官網(wǎng)提供了免費(fèi)電子版,鏈接我就不放了,自己找
《Head First Java》,生動(dòng)有趣,入門階段時(shí)間充足的話,建議翻翻
《Java All-In-One for Dummies》,見名知意,就是給新手看的書,自然特別啰嗦特別厚,建議用作參考,很詳細(xì)
2. 數(shù)據(jù)庫
參考視頻:
劉道成的 MySQL 視頻教程
韓忠康的 MySQL 視頻教程
以上兩個(gè)課程的講師都是講 PHP 的,所以視頻教程中會(huì)提到一些 PHP 內(nèi)容,忽略就是了
參考書籍:
《MySQL Cookbook》,僅適合做參考
《SQL All-In-One for Dummies》,延續(xù)了 Dummies 系列一貫的風(fēng)格,冗余而詳盡,適合查閱
建議:
先學(xué) MySQL,然后對(duì)比學(xué)習(xí) SQL Server 和 Oracle
畢竟主流數(shù)據(jù)庫都實(shí)現(xiàn)了 SQL 標(biāo)準(zhǔn),區(qū)別只體現(xiàn)在各自提供的功能上
2.1 JDBC
參考視頻:
李勇的(其他老師的忽略)JDBC 視頻教程, 這部分講的很全,基本不用看書
參考書籍:
《Core Java》 的 JDBC 章節(jié)還不錯(cuò)
3. HTML、CSS、JS
參考視頻:
網(wǎng)頁設(shè)計(jì)(html+css+js),講的一般,做入門湊合
云和教育的HTML + CSS + JS,國內(nèi)算講的不錯(cuò)的,當(dāng)然內(nèi)容有點(diǎn)多,需要花更多時(shí)間
參考書籍:
DOM 部分可以參考《DOM 編程藝術(shù)》
深入 JS 建議參考《Javascript 權(quán)威指南》,原版更好,即:《Javascript: The Definitive Guide》,經(jīng)典的犀牛書:
3.1 學(xué)習(xí) JQuery
參考視頻
李炎恢講的不錯(cuò),通俗易懂,貼近實(shí)戰(zhàn)
張龍講的也不錯(cuò),更多原理,例如:JS 的繼承和作用域鏈等等,很少有培訓(xùn)班能講到
參考書籍
JQuery 多參考官方 API,google 關(guān)鍵詞 “jquery documentation” 即可
JQuery 的作者 John Resig 寫過一本 javascript 書,質(zhì)量很好,有興趣的可以參考下:
3.2 EasyUI
這部分可以先不看,javascript 和 jquery 學(xué)的好,學(xué)這個(gè)沒難度,一天的事兒
EasyUI 國內(nèi)使用特別廣泛,但國外似乎沒見過用這個(gè)的,可能是因?yàn)?UI 比較丑吧。。
EasyUI 官方文檔和 Demo 基本足夠,但官網(wǎng)經(jīng)常被墻,請(qǐng)自備梯子
3.3 ExtJS
對(duì) javascript 的基礎(chǔ)要求比較高,我不建議初學(xué)就接觸,可以在深入 JS 的機(jī)制后再學(xué)習(xí)
參考書籍:《ExtJS in Action》
3.4 Ajax
參考視頻:王興魁老師的視頻教程
之前提到的 javascript 和 jquery 課程里,也都提到了 ajax 的內(nèi)容
必要的話,請(qǐng)自行搜索 JQuery 對(duì) Ajax 的支持
4. Java Web
參考視頻:方立勛的 JavaWeb 視頻教程
參考書籍:《Head First: Servlet and JSP》
很形象的一本書,圖示很多,理解起來很舒服
雖然 08 年出版的,但并不過時(shí)
5. 輕量級(jí) JavaEE 開發(fā)(所謂的 SSH)
Struts2
參考視頻:黎活明、馬士兵、張龍的 Struts2 視頻教程
參考書籍:
《Struts in Action》
《Apache Struts 2 Web Application Development – Dave Newton》 質(zhì)量略低,做參考挺不錯(cuò)的,按照知識(shí)點(diǎn)劃分的,查閱起來也很方便
中文版好像有《Struts 權(quán)威指南》之類的書
Spring
參考視頻:王勇、黎活明的 Spring 視頻教程
培訓(xùn)班講的都是 Spring 基礎(chǔ),更多內(nèi)容需要參照 Spring 官方的 reference,寫的比書還好
參考書籍:《Spring in Practice》
Hibernate
參考視頻:湯陽光(推薦)、馬士兵(經(jīng)典但太老)的 Hibernate 視頻教程
參考書籍:
《Hibernate in action》
《Java Persistence with Hibernate 1st Edition 2006》,Hibernate 作者主編,雖然是 2006 年出版的,但核心內(nèi)容講的很全面,非常值得參考
《Java Persistence with Hibernate 2nd Edition 2015.10》,最近到 Manning 官網(wǎng)發(fā)現(xiàn)第二版已發(fā)布,粗略看了下,全書以 JPA 為主線,Hibernate 特色做補(bǔ)充,隨書案例也是很不錯(cuò)的,可能是為 hibernate 5 做的更新,畢竟是個(gè)大版本,挺多變化的
此時(shí),基本企業(yè)開發(fā)技術(shù)都學(xué)過了,可以試著找工作,實(shí)習(xí)沒問題的,只是缺點(diǎn)項(xiàng)目經(jīng)驗(yàn)罷了
6. 工作中的加分項(xiàng)(急著找工作的話,可以先找工作,然后工作中補(bǔ)補(bǔ))
WebService,兩種規(guī)范:JAX-WS 和 JAX-RS
建議先學(xué)規(guī)范的標(biāo)準(zhǔn)實(shí)現(xiàn),再反向了解規(guī)范含義
JAX-WS,俗稱 WebService
參考書籍:《Java Web Services: Up and Running》了解 WebService 的歷史、體系及各種實(shí)現(xiàn)的大概介紹,對(duì)應(yīng)中文版本是《Java Web 服務(wù) -構(gòu)建與運(yùn)行》
參考視頻:張曉飛、趙慶軒的 webservice 視頻教程
學(xué)習(xí)使用 CXF(推薦) 或 Axis2 ,參考《Apache CXF Web Service Development》
Apache CXF 的文檔有點(diǎn)亂,所以學(xué)習(xí)起來可能會(huì)困難些,沒辦法,Apache 的文檔總是看著很難受,費(fèi)點(diǎn)兒勁還是能學(xué)到不少東西的
JAX-RS,俗稱 Restul WebService,時(shí)間多的話,建議把兩種主流的框架都熟悉下:
Jersey,SUN 對(duì) JAX-RS 的官方參考實(shí)現(xiàn)
參考書籍:《Developing RESTful Web Services with Jersey 2.0》
Restlet,早于 JAX-RS 規(guī)范出現(xiàn),后來也提供了對(duì) JAX-RS 的支持
參考書籍:《Restlet in Action》
WebService 的測(cè)試,一般使用 SoapUI(為主流 IDE 提供了插件)
參考書籍:《Web Services Testing with SoapUI》
實(shí)際開發(fā)時(shí),為了提高開發(fā)效率,可能需要使用 curl 這樣的工具來快速訪問服務(wù),如果你安裝了 Git, 那么 curl 已經(jīng)自帶了,打開 git bash 即可調(diào)用
JPA,J2EE 中的一個(gè)持久化規(guī)范
標(biāo)準(zhǔn)實(shí)現(xiàn)有:Hibernate / OpenJPA / EclipseLink
之前提到的 hibernate 已經(jīng)實(shí)現(xiàn)了 JPA,學(xué)過 hibernate 后,建議學(xué)習(xí)下 hibernate 和 JPA 注解的混搭使用,其他的 JPA 實(shí)現(xiàn),了解即可
參考書籍:《Java Persistence with JPA – Daoqi Yang》,是位美籍華人寫的英文書,簡潔易懂,對(duì)照這本書里的案例,理解起來不是很難
MyBatis,只是 JDBC 的簡易封裝
很簡單,花三兩天時(shí)間看看其官網(wǎng)文檔就可以搞定
7. 自動(dòng)構(gòu)建,現(xiàn)在大多數(shù)項(xiàng)目都采用構(gòu)建工具,但對(duì)應(yīng)教程很稀少,能講清楚的也不多
常見構(gòu)建工具: Maven / Gradle / Ant + Ivy 等
Gradle 可以參考 《Gradle in Action – Benjamin Muschko 2014》
Maven 可以參考《Maven 實(shí)戰(zhàn)》,沒錯(cuò),是為數(shù)不多寫的也不錯(cuò)的國產(chǎn)書
Ant 常常和 Ivy 搭配使用,但現(xiàn)在一般使用 Maven 就足夠了,所以可以不學(xué)習(xí),想了解的可以參考官方文檔
8. 我的忠告:
在培訓(xùn)班講課的老師們,當(dāng)年也都是自學(xué)過來的(他們那個(gè)年代還沒有軟件培訓(xùn)班呢),從這個(gè)角度說,自學(xué)并非那么不現(xiàn)實(shí),和人有關(guān),和學(xué)習(xí)環(huán)境關(guān)系不大
如果你決心花一年時(shí)間學(xué)習(xí),那就沒必要報(bào)班了, 因?yàn)樽詫W(xué)最大的挑戰(zhàn)不是技術(shù),而是解決問題過程中的煩躁、絕望和質(zhì)疑
不要以為英文的書會(huì)浪費(fèi)你的時(shí)間,事實(shí)上,當(dāng)你習(xí)慣看英文資料后,你會(huì)節(jié)省很多時(shí)間,至少不會(huì)找亂七八糟的中文資料還搞不清楚怎么回事
工作中多參考官方文檔,不要以為學(xué)過了就會(huì)用了,好多細(xì)節(jié)不是老師能夠教給你的
例如 Spring Reference, 里面有很多原理性的東西,能讓你使用起來更有自信
熟悉 Spring 的,可以參考我的另一回答:spring有什么缺點(diǎn)嗎?
多熟悉 J2EE 的規(guī)范,如 CDI,適當(dāng)了解規(guī)范的其他實(shí)現(xiàn)及其規(guī)范之外的特色
Spring
Guice
工作中不要什么都去自己從頭做,有些功能完全可以使用第三方類庫實(shí)現(xiàn),例如
Guava ,支持泛型和函數(shù)式編程,源碼也值得學(xué)習(xí)
Apache Commons,這個(gè)太常見了,有很多功能不同的組件
對(duì)新技術(shù)要敏感一些,但不要一味追新,因?yàn)槟阌肋h(yuǎn)追不上,語言層面的 New Feature 要多少會(huì)用,也能說得上來優(yōu)劣, 此外,JVM 上還有 Scala 和 Groovy 之類的語言,可以適當(dāng)了解下
重要的永遠(yuǎn)都是底層和基礎(chǔ),大牛永遠(yuǎn)都是這么說,站著說話不腰疼,不過確實(shí)如此,工作之余,了解一下常用的算法和理論,你不能指望自己不懂 TCP、HTTP、Socket 就直接使用 Netty 那種高度抽象的框架來實(shí)現(xiàn)很好的并發(fā)。
順帶貼個(gè)某培訓(xùn)機(jī)構(gòu)的學(xué)習(xí)路線圖,侵刪(請(qǐng)私信),非廣告,噴子閉嘴。
補(bǔ)充-2:偶爾我會(huì)看到入門的人問如下幾個(gè)問題,如果你問了,該好好反省。
問題:誰有 CSDN 賬號(hào)啊,幫忙下個(gè)資料?
點(diǎn)評(píng):CSDN 上能有什么好東西呢,竟然有人問我找 Spring 的幫助文檔,說是只有 CSDN 上有中文版本,我都無語了,你既然選擇了 Java 就不要逃避英文,任何時(shí)候都要首選英文文檔,而且,CSDN 上的東西翻譯質(zhì)量亂七八糟,本來國外免費(fèi)提供的東西它卻要積分下載,不必理會(huì),直接去官網(wǎng)即可。
問題:這個(gè)問題怎么回事啊,求大神幫助。。最好遠(yuǎn)程。。
點(diǎn)評(píng):大神沒空搭理你,沒人愿意免費(fèi)為你解答一個(gè)連描述都讓人看不懂的問題,甚至幫你遠(yuǎn)程,再有,大神這個(gè)詞會(huì)讓老手覺得很別扭,讓人感覺你很慫,不適合做軟件。
問題:百度找不到答案,誰能給個(gè) Demo 啊
點(diǎn)評(píng):做技術(shù)用 Google, 不解釋,另外,別以為有 Demo 你就能快速學(xué)會(huì)什么東西,那只能讓你快速黏貼過來應(yīng)付差事,留下的是亂七八糟的體系和原理不清楚,所以,請(qǐng)自己有個(gè)度。
補(bǔ)充-3:關(guān)于筆記
寫程序的如果不會(huì)記筆記,就真的效率很低了,別告訴我你是用 Word 記筆記的,現(xiàn)在一般都使用 Markdown 記筆記(Sublime + MarkdownExtended),不知道的自己去 Google, 具體效果如下圖:
這么寫筆記:
預(yù)覽如下:
補(bǔ)充-4:自學(xué) V.S 報(bào)班
自學(xué)者的疑慮:
如果是上班族一天三、四個(gè)小時(shí)的學(xué)習(xí)時(shí)間要多久才能達(dá)到可以就業(yè)的水平?
就你看來,自學(xué)和報(bào)班這兩種方式的優(yōu)勢(shì)與劣勢(shì)各是什么?
上班族自學(xué)時(shí)間必然很長,從時(shí)間、機(jī)會(huì)成本考慮,值不值?
我的看法:
我當(dāng)初自學(xué),在學(xué)校和家里分別學(xué)了一段時(shí)間,如果連續(xù)起來的話,差不多六個(gè)月學(xué)完了,每天大概五小時(shí)左右敲碼看視頻。這期間,有一部分時(shí)間浪費(fèi)在了尋找教程上,因?yàn)槲覍W(xué)習(xí)那時(shí),網(wǎng)上的教程沒有能夠連續(xù)看下來的,想買都沒有,都需要自己一個(gè)一個(gè)找,每個(gè)階段的老師也不一樣,內(nèi)容也雜,所以花的時(shí)間多了些。從我的體會(huì)來看,如果辭職在家學(xué)習(xí),心里會(huì)覺得很漫長,我很推薦邊工作邊學(xué)習(xí)。至少你不用擔(dān)心自己的生計(jì),如果每天三個(gè)小時(shí),大概得七個(gè)月。
你得知道,培訓(xùn)班都是從早到晚給你灌輸,抓緊在四個(gè)月內(nèi)給你快速講完讓你走人,所以留給學(xué)生的時(shí)間不多,沒有多少自己思考的時(shí)間,這恰巧是自學(xué)最大的優(yōu)勢(shì),因?yàn)樽约核伎汲鰜淼暮蛣e人告訴你的絕對(duì)不一樣,這也是日后區(qū)分你和培訓(xùn)班學(xué)生的一點(diǎn)。培訓(xùn)班的學(xué)生依賴性太強(qiáng),掌握新事物的能力太差,速度也慢,就是因?yàn)樵谂嘤?xùn)班里他們學(xué)不會(huì)自己找資料,自己找答案,自己摸索新技術(shù)的能力。自學(xué)的話, 現(xiàn)在和以前不一樣了,你可以弄套視頻教程連貫地看下來,跟下來,培訓(xùn)班里講什么,你也學(xué)什么,他們不學(xué)的,你也有時(shí)間去學(xué),他們沒有時(shí)間琢磨的,你有時(shí)間,因?yàn)?,自學(xué)的時(shí)間是你自己安排的。另外,自學(xué)最大的缺點(diǎn)不是技術(shù)的難度,而是你自己對(duì)自己的懷疑,因?yàn)橛行﹩栴}時(shí)長要一兩天才能想明白,那會(huì)動(dòng)搖你的信心,這也是我為什么推薦邊工作邊學(xué)習(xí)的原因。至少你每天不只是敲代碼,還有別的事情做。
報(bào)培訓(xùn)班,要想學(xué)好,好的培訓(xùn)班,你得花費(fèi)兩萬左右(食宿還不包括),而且你還得辭掉現(xiàn)有的工作,在異地也同樣孤獨(dú),這半年你花的錢你確定你能再一年內(nèi)掙得出來?我告訴你,除去自己的食宿,剛?cè)胄械?,一年留不下什么錢,這樣的話,自學(xué)為什么不是一種好的出路?就因?yàn)闆]人陪?就因?yàn)闆]人教?可是,現(xiàn)在不都有了嗎,有教程,有學(xué)習(xí)群,有網(wǎng)絡(luò),有你的信心,還缺什么?
補(bǔ)充-5:
很多人私信我,希望得到幫助,我也從未想到自學(xué) Java 的人這么多,因此提供幫助如下
如果你有自學(xué)的困惑,可以和我私聊交流(加Q或知乎私信),如果希望得到我的收費(fèi)指導(dǎo),請(qǐng)先說明如下信息,否則一律拒絕。
學(xué)過什么技術(shù),如 J2SE, MySQL…
學(xué)過什么專業(yè)課,如:操作系統(tǒng)、網(wǎng)絡(luò)、數(shù)據(jù)結(jié)構(gòu)…
學(xué)到什么程度了,如:未開始,剛?cè)腴T,剛學(xué)完 JavaSE…
是否科班,在職還是在校,有無編程經(jīng)歷,有無培訓(xùn)經(jīng)歷
有無學(xué)習(xí)路線,有的話,是什么
有無就業(yè)方向,有的話,是什么
有無自學(xué)困惑,有的話,是什么
如果你不想浪費(fèi)時(shí)間搜集教程,或者不滿足于之前給出的免費(fèi)教程列表,我可以為你提供全套教程(入門到就業(yè)全套,非拼湊,不免費(fèi),價(jià)格上百),不喜勿噴,文章開頭已給出免費(fèi)列表。
作者:知乎的Night Silent
鄭州學(xué)習(xí)Java就來云和教育
通過參加云和教育專業(yè)的 java 實(shí)訓(xùn)機(jī)構(gòu)進(jìn)行系統(tǒng)、專業(yè)的學(xué)習(xí),直接參與軟件項(xiàng)目開發(fā),進(jìn)行實(shí)操訓(xùn)練,往往事倍功半,能更快掌握企業(yè)項(xiàng)目開發(fā)技巧,能輕松勝任工作。
云和教育0基礎(chǔ)學(xué)java培訓(xùn)課程優(yōu)勢(shì):
除了以上基礎(chǔ)課程之外,我們還融入了最新、企業(yè)需求最多的新技術(shù),如:javascript面向?qū)ο?a target="_blank" rel="noopener noreferrer">編程、html5+css3、java8、Linux、git、maven、redis、dubbo等。
鄭州云和Java培訓(xùn)機(jī)構(gòu),比起其他機(jī)構(gòu),擁有諸多優(yōu)勢(shì),成為大學(xué)生學(xué)習(xí)Java的首選機(jī)構(gòu)。所以,還在失業(yè)的同學(xué),對(duì)Java剛興趣的同學(xué),不要錯(cuò)失良機(jī),趕緊來參加培訓(xùn)吧。