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


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

java作爲第一大編程語言,可謂源遠流長,一代又一代的java程序員前仆後繼走在java學習的路上。java程序員的學習之路在2020年又有什麼變化呢?

先上圖:

上面的RoadMap圖中列出了作爲一個java程序員需要掌握的技術路線,所有技術都懂那當然非常好,如果還沒掌握也沒關係,just keep learning!

必須掌握的基礎知識

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

1. Git & Github

Github作爲全球最大的同性交友平臺,是個程序員都應該知道。作爲開源風潮的託管平臺,GitHub上面有大量的優秀開源項目,如果有需可以從GitHub上面借用各種項目,沒有需要也可以去讀讀上面的代碼,提升下寫作水平。

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

2. Linux

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

3. 數據結構和算法

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

如果你想更深入一些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。熟悉使用熟悉其實現原理。

2.2 Java併發和多線程

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

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

java.util.concurrent簡介

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

Java併發和多線程的文章可以參考java併發和多線程

2.3 Java 8的新特性

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

Java函數式編程和Lambda表達式

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

2.4 Java IO

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

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

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

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教程

3.2 Spring Boot

雖然Spring簡化了EJB,但是還是需要諸多的配置文件,而Spring Boot的出現大大的減少了配置文件的編寫。

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

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!

更多內容請訪問 www.flydean.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章