java程序員從小工到專家成神之路(2020版)

java做爲第一大編程語言,可謂源遠流長,一代又一代的java程序員前仆後繼走在java學習的路上。java程序員的學習之路在2020年又有什麼變化呢?本文詳細附上了每個部分所需知識的教程連接地址,並會持續更新,但願可以和你們一塊兒進步!java

先上圖:react

上面的RoadMap圖中列出了做爲一個java程序員須要掌握的技術路線,全部技術都懂那固然很是好,若是還沒掌握也不要緊,just keep learning!git

必須掌握的基礎知識

做爲程序員固然是有門檻的,這個門檻就是所須要掌握的基礎知識,寫好了程序不只要知其然,更要知其因此然。這樣才能在寫程序的過程當中,透過現象看到本質,從本質上提高寫代碼的功力。程序員

1. Git & Github

Github做爲全球最大的同性交友平臺,是個程序員都應該知道。做爲開源風潮的託管平臺,GitHub上面有大量的優秀開源項目,若是有需能夠從GitHub上面借用各類項目,沒有須要也能夠去讀讀上面的代碼,提高下寫做水平。web

Git做爲優秀的版本管理工具,相信絕大多數公司都在使用,那麼掌握Git的命令和使用就是很是重要了。更爲重要的是,Git經過git flow帶給咱們了代碼管理的新思路。算法

2. Linux

不少程序員用慣了windows可能對Linux並不熟悉,可是你們要知道絕大多數的服務器都是部署在Linux上面的,不懂Linux就說本身懂編程,豈不是很搞笑?連本身寫出來的代碼運行的平臺都不瞭解,怎麼能夠。即便不是運維專員,本身部署程序也要會的,部署中須要注意的問題確定要關注,至於Linux的基本命令那更是要100%掌握。chrome

3. 數據結構和算法

若是隻是使用java中的庫,那麼至少array, linked list, hash table, binary tree, queue, stack, graph這些基本的數據結構是須要掌握的。docker

若是你想更深刻一些Trie, B-Tree, AVL tree等等能夠了解一下。數據庫

4. HTTP / HTTPS

如今是Web的天下了,搞懂HTTP,HTTPS走遍天下都不怕。編程

能夠參考以前個人文章:

一篇文章讓你完全弄懂SSL/TLS協議

5. 設計模式

設計模式能夠說是大神和小工的分界線,各類設計模式信手拈來才能成爲設計專家。

固然這裏不是要你死記硬背,關鍵是合理應用。

6. 計算機原理

知道計算機是怎麼工做的很重要,你的代碼,程序怎麼轉換成計算機能夠懂的語言,CPU的調度原理,內存工做原理等等。

java學習之路

有了上面的基礎,終於咱們能夠開始講java的學習之路了。

1. 工具

1.1 開發工具

工欲善其事,必先利其器。有了好的工具能夠有效的提高開發效率。Eclipse和IDEA固然是IDE的首選。

2020年,5個你不能不知道的java IDE神器

1.2 構建工具

maven和Gradle是java構建工具的不三之選,這兩個優選一個。ANT是以前的構建工具,不須要詳細掌握,瞭解便可。

1.3 虛擬化工具

Docker的橫空出世,打造了一個新的虛擬化時代,憑藉其優異的性能和資源佔用率,Docker贏得了不少企業的喜好,Docker必定要學。有了docker接下來使用Kubernetes(K8S)來作管理則是水到渠成。

1.4 CI工具

Jenkins是CI的很好的工具。

2. JDK

JDK的熟練程度直接關係到能不能寫出好的代碼,接下來咱們詳細來看。

2.1 Java Collections

集合類是在任何程序中都要使用到的類型,這幾個是你必需要熟悉的 ArrayList, HashMap, HashSet, LinkedHashSet, TreeSet。熟悉使用熟悉其實現原理。下面是我整理和寫過的關於Java集合的相關文章:

2.2 Java併發和多線程

java中多線程和併發是一個很是重要的話題,concurrency包裏面提供了諸多很是有用的同步類:CyclicBarrier,CountDownLatch,Semaphore等等。

concurrency包下面的Locks和Atomic提供了一些新的鎖的實現。深刻了解這些內容能夠更好的理解多線程環境中資源的使用。

Thread和Thread Pool是多線程的基礎,須要深刻理解和應用。

Java併發和多線程的文章以下:

2.3 Java 8-15的新特性

Java 8引入了太多太多新的有用的東西,像Lambda,Stream API, Date Time API等待。Java 8引入的函數式編程直接改變了以往的編程習慣。

JDK8

固然java 8只是最低的要求,java已經出到了13了,若是有能力的話能夠學習Java 9 到 Java 13的新特性: Modules, var for local variables, static factory methods for collections等等。

JDK9

待續...

JDK10

JDK11

JDK12

JDK13

JDK14

JDK15

2.4 Java IO

java.io和java.nio是Java中處理IO的兩個包,IO是很是重要的,處理文件讀寫,包括網絡數據流的讀寫都須要使用到IO。

咱們須要掌握java.io包中的File, InputStream, OutputStream, Reader, Writer。

還須要掌握java.nio包中的ByteBuffer, FileChannel, Selector等。

2.5 深刻理解JVM

待續...

3. 框架

若是想作大型java項目,框架是少不了的,使用框架能夠節省開發時間,提高開發效率。

3.1 Spring

java框架最最最流行的就是Spring了。能夠說Spring統治了java的大部分江山。提及來Spring仍是以EJB的替代品出現的,它擺脫了EJB的複雜性,經過使用AOP和IOC,提供了輕便的可配置的容器,贏得了大片市場。最新的Spring版本是5.*。

除了Spring Core,Spring MVC目前的市場份額也愈來愈大。作好web開發Spring MVC也是必不可少的。

Spring 5.X系列教程:知足你對Spring5的一切想象-持續更新

3.2 Spring Boot

雖然Spring簡化了EJB,可是仍是須要諸多的配置文件,而Spring Boot的出現大大的減小了配置文件的編寫。

要問什麼框架開發最快最靠譜,Spring Boot確定要佔一席之地。

Spring Boot 2.X系列教程:七天從無到有掌握Spring Boot-持續更新

3.3 Netty & Mina

Netty & Mina是兩個NIO框架,其最本質的就是異步的IO,和普通IO最大的區別就是提高效率節約時間。

Spring 5最新引入的Spring Web Reactive就是基於Netty實現的。

待續...

3.4 ORM

ORM框架的使用方便咱們對數據庫的操做,Hibernate和Mybatis是兩個ORM框架的優秀選手。可是據我瞭解好像國內使用Mybatis的偏多,國外更傾向使用Hibernate。

爲何呢?個人理解Hibernate是JPA的一種實現,更加的標準。

3.5 微服務

這年頭若是你不提微服務好像就低人一等。不用怕,Spring特地爲咱們準備了微服務全家桶Spring Cloud。

並非全部的服務都須要微服務,微服務也不是越多越好,看項目,看狀況,看心情!

待續...

4. 測試框架

不少朋友可能喜歡寫代碼,不喜歡寫測試。也有的朋友以爲測試是測試人員作的,跟開發人員不要緊。

可是測試真的很是重要,從單元測試到end to end測試到集成測試,咱們一直都在路上。

單元測試的幾個框架Junit,Mockito,PowerMock都是很是優秀的框架,值得每一個java程序員掌握。

其餘的能夠學習一下Selenium和Cucumber,做爲end to end測試,Selenium配合headless chrome,真的不要太爽。

5. 實用庫

不少時候JDK並無提供太多的實用庫,這時候咱們須要藉助於第三方的力量。

有不少第三方庫都很是優秀,好比google的Guava,Apache的commons包,處理JSON的Jackson JSON,處理日誌的Log4J,Slf4j等,都是咱們平常所經常使用的。

Keep learning

最後,想告訴你們的是要Keep learning,技術革新變化很是快,只有一直學習,才能不掉隊不落後,學到老,活到老。但願各個朋友都能一步一個腳印的找到本身的路。畢竟知識沒有捷徑可走。

你們有感興趣的技術路線能夠回覆本文留言給我,我會盡可能豐富這個技術路線圖,謝謝你們!

最後,感興趣的朋友能夠我點個關注!

The END!

本文做者:flydean程序那些事

本文連接:www.flydean.com

本文來源:flydean的博客

歡迎關注個人公衆號:程序那些事,更多精彩等着您!

相關文章
相關標籤/搜索