Java學習路線圖(2020最新版)

你們要的Java學習路線圖來了,七哥結(jié)合目前工作以及各大主流公司面試和使用的技術(shù)整理出了2020最新版Java學習路線圖,適合于初、中、高級別的Java程序員,我自己也是按照這個路線來學習的,建議收藏。
同時也結(jié)合市場上各家公司對應(yīng)職位等級所需要掌握的技術(shù)知識和薪資范圍進行了匹配劃分,僅供大家參考(市場普遍水平,不是絕對)。

學習路線
第一階段:Java基礎(chǔ)
學習Java基礎(chǔ)知識,可供選擇的書很多,但它們大都有著一個缺點,那就是內(nèi)容龐雜,有些內(nèi)容脫離實際,甚至是過時。對此,在這一階段,我精選了Java的基礎(chǔ)知識,核心原則就是“有用”。并調(diào)整了章節(jié)順序,從而有利于讀者循序漸進的學習。關(guān)于學習資料,我建議閱讀《Java核心技術(shù) 卷I》,并輔于上網(wǎng)搜索。
基礎(chǔ)知識包括深入掌握計算機基礎(chǔ)、編程基礎(chǔ)語法,面向?qū)ο?,集合、IO流、線程、并發(fā)、異常及網(wǎng)絡(luò)編程。
當你掌握了這些內(nèi)容之后,你就可以做出諸如:電腦上安裝的迅雷下載軟件、QQ聊天客戶端、人事管理系統(tǒng)等桌面端軟件。
第二階段:數(shù)據(jù)庫
目前各大公司最具價值的就是數(shù)據(jù),而數(shù)據(jù)的保存基本上都是使用數(shù)據(jù)庫技術(shù)。MySQL和Oracle都是廣受企業(yè)歡迎的數(shù)據(jù)庫管理系統(tǒng)。Java程序和數(shù)據(jù)庫通信的最常見技術(shù)是JDBC,Druid 和 C3P0。
學習這些數(shù)據(jù)庫技術(shù)后,可以應(yīng)對日常工作的增刪改查、復雜業(yè)務(wù)表結(jié)構(gòu)設(shè)計規(guī)范、使用Java語言和數(shù)據(jù)庫打交道。
第三階段:前端技術(shù)
你可能會問作為Java程序員還需要學習前端?其實目前各大公司基本上確實已經(jīng)前后端分離了,但是想成為一名優(yōu)秀的程序員前端技術(shù)你還是要了解的,避免和前端對接時埋下一些坑以及設(shè)計更優(yōu)的解決方案等。
前端有三大基礎(chǔ)技術(shù)分別為Html、CSS、JavaScript,這些學完后,為了做出更好、更炫的交互式體驗效果,我們還需要學習jQuery、ElementUI、Vue、Ajax,以及打包工具webpack。
學完這些技術(shù)后,我們可以開發(fā)微信小程序、個人博客網(wǎng)站、移動端網(wǎng)站、開發(fā)類似淘寶天貓這樣的網(wǎng)上商城簡單版。
第四階段:JavaWeb動態(tài)網(wǎng)頁
掌握前端技術(shù)只能做靜態(tài)網(wǎng)站,但它頁面數(shù)據(jù)不會因業(yè)務(wù)而動態(tài)變化,而動態(tài)網(wǎng)站可以根據(jù)后端數(shù)據(jù)庫中存儲的數(shù)據(jù)實現(xiàn)不同的內(nèi)容展示,應(yīng)用更廣泛,因此程序員必須要學會做動態(tài)網(wǎng)站。
使用Java做動態(tài)網(wǎng)站,我們需要學習Servlet、Filter、Session、Cookie、JSP、EL表達式、JSTL等做動態(tài)網(wǎng)站的完整知識體系,學完可研發(fā)出OA系統(tǒng)、內(nèi)容網(wǎng)站、BBS等。
第五階段:Java編程強化
前面學了JavaSE基礎(chǔ),但它在企業(yè)級應(yīng)用中程序處理業(yè)務(wù)的效率并不高、擴展差,我們還要針對性的提高程序處理業(yè)務(wù)的執(zhí)行效率、增強程序擴展性。就要學習設(shè)計模式、Java并發(fā)包原理、線程的內(nèi)存模型、JVM調(diào)優(yōu)等。
學完以后,能增加一個中級程序員的知識儲備,無論在面試過程中還是將來技術(shù)的深入打一個良好的基礎(chǔ)。
第六階段:軟件項目管理
公司開發(fā)都是團隊協(xié)同開發(fā),為更好的掌握實際開發(fā),我們還需要學習常用的項目管理工具、版本控制工具、項目構(gòu)建工具以及自動化部署工具。項目開發(fā)一定是有版本升級的,管理好項目進度和版本需要Git、Maven、Gradle、Jenkins、Sonar這樣的系統(tǒng)平臺。
學習完軟件項目管理后,將掌握整個項目實際開發(fā)過程以及整個項目開發(fā)過程中所使用協(xié)同開發(fā)工具。
第七階段:熱門技術(shù)框架
Javaweb掌握后,已經(jīng)具備企業(yè)中實際項目的開發(fā)能力了,但它開發(fā)效率低,代碼量大,開發(fā)周期長、開發(fā)成本高。企業(yè)中廣泛使用一些優(yōu)秀的框架技術(shù)來解決上述問題,因此我們還需要學習框架技術(shù),項目開發(fā)中主流的Java框架技術(shù)有SpringMVC、Spring、MyBatis、MyBatis Plus、SpringData等。
這些框架技術(shù)都是一個優(yōu)秀程序員所必備的技能。
第八階段:分布式架構(gòu)
企業(yè)發(fā)展過程中,業(yè)務(wù)量和用戶量逐漸增加,為了保證系統(tǒng)的可用性,系統(tǒng)越做越復雜,研發(fā)人員增多,大家很難共同維護一個復雜的系統(tǒng),往往修改部分內(nèi)容,導致牽一發(fā)而動全身,所以我們需要升級系統(tǒng)架構(gòu),需要用到分布式微服務(wù)的技術(shù)。
學習完該階段內(nèi)容,可以具備大型SOA架構(gòu)和微服務(wù)架構(gòu)能力,能掌握大型微服務(wù)項目必備技術(shù)和實際經(jīng)驗。
第九階段:服務(wù)器中間件
在分布式系統(tǒng)架構(gòu)中,服務(wù)與服務(wù)之間的異步通信,是非常常見的需求之一,消息中間件的誕生正是為了解決這類問題。目前市面上的主流消息中間件有RabbitMQ、RocketMQ、Kafka,我們將學習這3個消息中間件,實現(xiàn)分布式項目中的異步通信。
學習完這些后,可以實現(xiàn)分布式項目的異步通信、分布式應(yīng)用日志收集、分布式事務(wù)等。
第十階段:服務(wù)器技術(shù)
程序開發(fā)完成后,我們把它們打包部署到服務(wù)器中運行,所以我們需要學習常見的服務(wù)器技術(shù),常見的服務(wù)器有Linux和Window server,Linux性能高,是當前主流。
我們寫好的項目需要用一個軟件運行起來,這個軟件叫web容器,我們需要在服務(wù)器上安裝web容器來發(fā)布項目,當前主流的web容器有tomcat、jetty、nginx、undertow。
第十一階段:容器技術(shù)
具備了服務(wù)器操作系統(tǒng)及web容器,我們就可以部署單機的站點,在分布式系統(tǒng)中,幾十上百的服務(wù),如果使用單機這種部署方式,會投入很高的人力,同時出錯的幾率也大。所以服務(wù)器虛擬化技術(shù)Docker也稱為如今的必備技術(shù)了,Docker可以幫助運維人員實行快速部署,批量維護.使用Kubernetes實現(xiàn)自動化部署、大規(guī)??缮炜s、應(yīng)用容器管理。
第十二階段:企業(yè)業(yè)務(wù)解決方案
企業(yè)開發(fā)中會遇到一些通用的業(yè)務(wù)場景,諸如:搜索引擎、緩存、定時任務(wù)、工作流、報表導出、日志管理、系統(tǒng)監(jiān)控等,那么這些通用的解決方案也有現(xiàn)成優(yōu)秀的免費開源中間件,可供使用。
諸如:ElasticSearch、Lucene、Solr、redis、MongoDB、slf4J、ECharts、Quartz、POI等。業(yè)務(wù)解決方案課程的業(yè)務(wù)方案和技術(shù)難點,解決了企業(yè)開發(fā)中90%以上的痛點和難點。
Java程序員階段目標
JAVA初級工程師
?9k-15k, 一般是1-3年的經(jīng)驗
?
「要求:」 掌握
JAVA基礎(chǔ),spring、 springmvc、 mybatis、 servlet、 restful,webservice,h5 css3 JavaScript jquery angular vue;常用的服務(wù)器技術(shù):tomcat,apache nginx;git、 maven、 redis、 dubbo、 zookeeper 同時還有 多線程、 設(shè)計模式,JAVA io nio ;網(wǎng)絡(luò)方面:tcp,udp,netty;
JAVA中級工程師
?15k-25k, 一般是3-5年的經(jīng)驗
?
「要求:」 熟練
springcloud、dubbo。還得熟悉一些中間件技術(shù):分布式技術(shù),rpc技術(shù),緩存,消息系統(tǒng)。懂互聯(lián)網(wǎng)業(yè)務(wù),要求有大規(guī)模高并發(fā)訪問web應(yīng)用的經(jīng)驗。熟悉一些虛擬化技術(shù):docker,vmware,openstack。深入理解數(shù)據(jù)結(jié)構(gòu)和算法。精通設(shè)計模式(至少常用的七八種設(shè)計模式必須達到精通的水平),就是能用設(shè)計模式到項目中,讓項目的代碼更規(guī)范。
JAVA高級工程師
?25k-35k, 一般是5年以上
?
「要求」:
得會開發(fā),設(shè)計還得有領(lǐng)導能力,必須能帶領(lǐng)一個團隊,分析產(chǎn)品技術(shù)設(shè)計,負責新功能的技術(shù)開發(fā),參與平臺的需求分析,業(yè)務(wù)規(guī)劃,幫助團隊成員解決技術(shù)問題。決定技術(shù)方向和業(yè)務(wù)選型。有些公司還會要求你了解大數(shù)據(jù)的一些技術(shù);hadoop、 spark、 flink 主流的大數(shù)據(jù)框架,精通jvm內(nèi)存管理,要會jvm調(diào)優(yōu)熟悉分布式常用技術(shù);
好了,看著好像是有點多,不過也沒辦法,目前行業(yè)不斷有人才涌入,不前進就會被后浪拍死在沙灘上,需要保持自身的持續(xù)競爭力。
之前也整理過一套免費的學習視頻,可以結(jié)合今天的學習路線去好好練習,大家可以在公眾號底部菜單直接獲取。
學習方面送給大家一句話:「忘卻感性的煩惱,每日反省,付出不亞于任何人的努力」。
fighting!
更多信息請關(guān)注公眾號:「軟件老王」,關(guān)注不迷路,軟件老王和他的IT朋友們,分享一些他們的技術(shù)見解和生活故事。
