1. 程式人生 > >java後端工程師主流技術以及相關書籍推薦(持續更新)

java後端工程師主流技術以及相關書籍推薦(持續更新)

參考自:

學習路線 :可以參考慕課網

這裡寫圖片描述

偏頭痛楊總結的java後端工程師的主流技術學習路徑:
1.java基礎階段

類、物件、變數、介面、抽象類、資料型別、封裝&繼承&多型、異常、內部類、  
註解、泛型、列舉、多執行緒、IO&NIO、網路程式設計;

2.java web基礎階段

servlet、filter、listener、jsp、session&cookie、tomcat、mysql、  
jdbc、junit、html、javascript、json&xml;

3.單機web系統&前後端分離階段

spring
、springmvc、mybatis&spring jdbc、nginx、druid&c3p0&dbcp、 quartz、gradle&maven、git&svn、jenkins、linux;

4.RPC&分散式&面向服務階段

springboot、dubbo、zookeeper、redis&memcached、rocketmq&rabbitmq  
,docker、mongodb、hadoop、ELK、drools;

5.微服務階段

spring cloud、sevice mesh;

中間穿插著深入理解java多執行緒、NIO、JVM、GC、CLASSLOADER、資料結構與演算法、協議、設計模式等底層原理知識點。
以及JDK1.8之後新增的例如函數語言程式設計等知識點,以及嘗試去閱讀一些java底層和優秀開源框架原始碼。

注意請不要把有限的時間&精力浪費在過時的技術上。
過時技術列表:oracle、sql server、jsp、jstl、struts、hibernate、weblogic&websphere、ant、javaee(jni,jms,ejb)
以及不要去深入研究類似於安卓、前端、大資料、人工智慧等方向,因為這些屬於轉行了,所謂術業有專攻,把好鋼用在刀刃上。

推薦的技術書籍列表:不分先後順序 因為 我好多都沒看過……
《編碼》
《java核心技術卷1》
《圖解HTTP》
《圖解TCP/IP》
《阿里巴巴開發手冊》
《淘寶技術這十年》 子柳
《Java程式設計思想》

(有點老了 但還是推薦看看)
《架構探險》系列,黃勇
《Java程式設計師職場全攻略:從小工到專家》,吳亞峰
《Java併發程式設計實戰》
《Java併發程式設計的藝術》
《計算機網路》 重要
《作業系統》 重要
《大型網站技術架構 核心原理與案例分析》
《Java nio》
《Spring實戰》
《Spring原始碼深度解析》
《Head First 設計模式》
《大話設計模式》
《設計模式之禪》
《演算法》(第四版)
《高效能MySQL》
《敏捷軟體開發:原則、模式與實踐》
《重構——改善既有的程式碼設計》
《程式碼整潔之道》
《程式設計師修煉之道:從小工到專家》
《Effective java》網上有第三版了 是英文版的
網路總有前人給你鋪好路了
翻譯Effective java

2018.5.27更新:

JSP有個致命的弱點,就是JSP是需要servlet容器去解析的,例如tomcat這種,  
而很多頁面請求理論上 是不用tomcat的,這樣就造成了tomcat的壓力過大,  
因此引入nginx,引入前後端分離。

javaee裡的技術大多數被淘汰了,現代的java web都是以spring+mybatis+springmvc框架為主導,把這三個掌握牢固後再引入springboot。java後端不會被淘汰,淘汰的只是一些過時的技術,而java相當於是一整套生命體系。如果你是初學者,JSP可以學,寫幾個小demo就可以了,不用深入。
bootstrap、css、js、jquery,這些都是前端工程師需要掌握的基礎,如果你學了,只需要蜻蜓點水即可。

過時框架:struts2和hibernate 學這兩個過時框架真的是在走彎路

最新的web框架書推薦 : javaEE企業級應用開發教程(黑馬的) 入門用
裡面的知識都是可以看的

建議 先看書 大腦裡存有一個知識體系樹 然後遇到不懂的再去搜文章
初級教學視訊看看就行了 因為拍的人質量都是層次不齊 拍的不好 也會誤導大家,所以以書為主 文章視訊為輔

瞭解:html css javaScript,javaweb概述 ,JSP技術,Servlet,資料庫連線池和DBUtils工具,JSP開發模型
跳過:EL表示式和JSTL,檔案上傳和下載
可以看看:Servlet基礎,請求和響應,會話及其會話技術,JDBC

2018.5.31更新:
過時技術列表,箭頭左側代表過時的技術,右側代表替代的技術:
持久層:jdbc->hibernate->ibatis->mybatis
WEB層:servlet->struts->springmvc
業務層:ejb->spring
遠端通訊:mina->netty
資料庫:oracle&mssql->mysql&postgresql
應用伺服器:tomcat->weblogic&websphere&resin&jboss->tomcat
WEB伺服器:apache->nginx->tengine
連線池:dbcp&c3p0->driud
訊息佇列:activemq->kafka->rocketmq&rabbitmq
頁面:jsp&jstl&el->html+ajax
構建:ant->maven&gradle
版本管理:cvs&vss->svn->git
通訊:xml->json

提一嘴:
tomcat,為什麼tomcat能力有限,還有人大量使用,
因為tomcat免費,開源,容易組成tomcat叢集,用docker可以動態擴容。
在使用springboot之後,把tomcat內嵌到java程序中,使用上更加方便了。