對(duì)于剛開始學(xué)習(xí)Java或者學(xué)過一段時(shí)間Java的同學(xué)一定會(huì)覺得有些困惑,Java體系結(jié)構(gòu)的非常龐大。以至于自己不知道Java學(xué)習(xí)路線是什么,或者學(xué)習(xí)什么樣的知識(shí)才能找到相關(guān)Java開發(fā)工作,有些同學(xué)也不清楚Java學(xué)習(xí)方法是什么樣的。本文章將讓大家對(duì)Java學(xué)習(xí)路線和Java學(xué)習(xí)方法有個(gè)宏觀的把握。在與市場(chǎng)接軌的前提下,我會(huì)推薦給各位同學(xué)相關(guān)學(xué)習(xí)的方向和技術(shù),以及學(xué)習(xí)到什么樣的程度才能找到相關(guān)的工作。
很多同學(xué)可能會(huì)有如下的疑問:
1.Java學(xué)習(xí)方法是什么?怎么學(xué)習(xí)Java效果更好?
2.Java學(xué)習(xí)路線圖是什么?
3.哪些知識(shí)點(diǎn)重要?
4.學(xué)到什么程度就能去找工作了?
5.Java學(xué)起來很痛苦啊,有木有?
……
下面的內(nèi)容將會(huì)為你解答這些疑問。
1.Java學(xué)習(xí)方法很簡單,就是下面這幾個(gè)字:多看視頻,多思考,多練習(xí),持之以恒。只要做到這幾點(diǎn),基本就都能學(xué)會(huì)Java。視頻的話找一套適合自己的就行,可以看看這個(gè):Java視頻教程
2.Java學(xué)習(xí)路線圖是什么?
對(duì)于剛學(xué)習(xí)Java的同學(xué),應(yīng)該了解下面這張圖,了解Java學(xué)習(xí)的大致結(jié)構(gòu)。當(dāng)然你能在Oracle Java的主頁上看到還有如Java FX、Java DB這樣的技術(shù),不過這些技術(shù)目前來看,還不是很流行,但是既然要和市場(chǎng)接軌,必然要有所取舍。
Java SE是我們Java入門的開始,這塊內(nèi)容也就是大家所熟悉的聊天軟件、五子棋、學(xué)生成績管理系統(tǒng)這些桌面級(jí)項(xiàng)目所組成的。學(xué)完了Java SE部分,接下來就該選擇方向了。
1) 往分布式方向并不是一定要經(jīng)過Java EE階段,但是,學(xué)習(xí)Java EE對(duì)后續(xù)分布式的開發(fā)有莫大的好處。
2) Java ME雖然還在Oracle官網(wǎng)上屹立,但就市場(chǎng)來看,它的地位已經(jīng)明顯不如android高了。所以從目前來看,沒有必要學(xué)習(xí)Java ME。
在這一節(jié)中,將列出Java SE的學(xué)習(xí)中應(yīng)該關(guān)注的方面,以及這些方面里主要涉及哪些核心內(nèi)容。大家可以根據(jù)自己的學(xué)習(xí)情況,對(duì)照這些條目,看看有沒有缺漏的內(nèi)容。在之前提到過如五子棋這樣的項(xiàng)目,這些確實(shí)能很好的涵蓋了大部分Java SE的內(nèi)容,所以必要的項(xiàng)目是很關(guān)鍵的。
Java SE大致可分為以下幾塊內(nèi)容:
1.對(duì)象導(dǎo)論:如何用面向?qū)ο蟮乃悸穪黹_發(fā)
2. 深入JVM:Java運(yùn)行機(jī)制以及JVM原理
3. 面向?qū)ο蟮奶卣鳎悍庋b、繼承、抽象、多態(tài)
4. 數(shù)組和容器:數(shù)組長度不可變性,容器的線程安全問題
5. I/O:IO工作原理和應(yīng)用
6. 并發(fā)編程:concurrent包
7. 網(wǎng)絡(luò)編程:TCP/IP+BIO/NIO UDP/IP+BIO/NIO
8. JDBC框架和反射:JNDI、連接池、annotation等
9. 其他:正則表達(dá)式、字符串等
在這里我還想多提一點(diǎn),關(guān)于Java SE學(xué)到什么深度才合適。其實(shí)對(duì)于后續(xù)學(xué)習(xí)Java EE或者是Android來說,Java SE你只要學(xué)會(huì)皮毛就足夠應(yīng)付了,當(dāng)然這里的皮毛是要求你熟練Java語法結(jié)構(gòu)和基本CRUD操作。
可是這樣真的又夠了么?好多工作了一兩年的程序員肯定又會(huì)慢慢懷疑自己的基礎(chǔ)是否足夠扎實(shí),于是他們又拿出了《Thinking In Java》重新通讀一遍。這里要說的是,這本書并不適合初學(xué)者,根本不應(yīng)該出現(xiàn)在初學(xué)者的Java學(xué)習(xí)路線當(dāng)中,不知道為啥網(wǎng)上很多人把他推薦給初學(xué)者。基礎(chǔ)是非常重要的,越到后面你越會(huì)覺得基礎(chǔ)知識(shí)的重要性。而真正有用的還是對(duì)Java的深入理解。所以如果你正在擔(dān)心你的Java基礎(chǔ)夠不夠,層次到?jīng)]到應(yīng)該有的深度,那你應(yīng)該先慶幸下,至少你還想著如何提高自己的水平。
Java EE很雜,初學(xué)者一學(xué)到這里就會(huì)懵逼了,這塊知識(shí)體系太龐大了,要學(xué)的東西太多,不過不要害怕,其實(shí)Java EE方向說好聽點(diǎn)兒的叫企業(yè)級(jí)應(yīng)用開發(fā),說難聽點(diǎn)兒的其實(shí)就是做網(wǎng)站。當(dāng)然并不局限于做網(wǎng)站。
對(duì)于Java EE方向的學(xué)習(xí),在于能夠熟練的運(yùn)用各種框架,以及掌握各種框架構(gòu)成的核心思想。至于學(xué)什么框架,用什么應(yīng)用服務(wù)器,在學(xué)習(xí)的時(shí)候可以采用容易配置的,所有的同類服務(wù)都是類似的,精通了一個(gè),相似的學(xué)習(xí)就很快了。
下面來具體的看各個(gè)模塊應(yīng)該學(xué)點(diǎn)兒什么:
1.序列化:XML、JSON與Java之間的序列化和反序列化
2.ORM:推薦學(xué)習(xí)Hibernate
3.JSP/Servlet:可以順帶著把JS學(xué)習(xí)了
4. Spring(目前是當(dāng)紅炸子雞):IOC、AOP、Spring MVC
5. MVC:推薦學(xué)習(xí)Struts
6. Web Service:JDK自帶web service、CXF等框架
7. SOA:了解ESB、MQ等企業(yè)級(jí)應(yīng)用架構(gòu)。
8. EJB:主要了解思路。可順帶著學(xué)習(xí)JBOSS
9. 其他:會(huì)使用JMS。了解JTA。
還是一點(diǎn),Java EE方向的學(xué)習(xí)主要是會(huì)熟練運(yùn)用即可。大點(diǎn)兒的企業(yè)都會(huì)有自己的框架,技術(shù)含量大同小異。會(huì)用即可。當(dāng)然到了這個(gè)階段設(shè)計(jì)模式的學(xué)習(xí)也必不可少,設(shè)計(jì)模式可以穿插于各個(gè)框架中進(jìn)行學(xué)習(xí)
對(duì)于大多數(shù)企業(yè)來說,如果你能掌握上面提到的相關(guān)技術(shù),并且熟悉SQL和Linux,那找個(gè)Java相關(guān)工作應(yīng)該是沒有問題的了。如果你想更深入的去應(yīng)用上面所學(xué)的知識(shí),分布式、搜索引擎、大數(shù)據(jù)處理等互聯(lián)網(wǎng)熱門技術(shù)都是你擴(kuò)寬技能的方向。
開源的Lucene是搜索引擎技術(shù)入門,簡單易學(xué),而且很多企業(yè)對(duì)搜索引擎的需求越來越大。
諸如MINA、Kafka這樣的開源框架,是你步入分布式方向很好的基石。
如果你能了解HBase、Mongo這樣的非關(guān)系型數(shù)據(jù)庫,那就更有利于你思考大數(shù)據(jù)的問題。
技術(shù)是學(xué)不完的,而且更新的速度一定比你學(xué)習(xí)的速度還要快,不過技術(shù)基本上都是相通的,掌握其核心思想之后,再去學(xué)習(xí)其他的內(nèi)容會(huì)很輕松,所以不用什么都學(xué),把一些常用的學(xué)通就ok了。
下面這張圖能夠讓你更好的理解哪些知識(shí)點(diǎn)重要。