1. 程式人生 > 實用技巧 >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走遍天下都不怕。


5. 設計模式


設計模式可以說是大神和小工的分界線,各種設計模式信手拈來才能成為設計專家。
當然這裡不是要你死記硬背,關鍵是合理應用。


6. 計算機原理


知道計算機是怎麼工作的很重要,你的程式碼,程式怎麼轉換成計算機可以懂的語言,CPU的排程原理,記憶體工作原理等等。


java學習之路
有了上面的基礎,終於我們可以開始講java的學習之路了。


1. 工具


1.1 開發工具
工欲善其事,必先利其器。有了好的工具可以有效的提升開發效率。Eclipse和IDEA當然是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提供了一些新的鎖的實現。深入瞭解這些內容可以更好的理解多執行緒環境中資源的使用。

Thread和Thread Pool是多執行緒的基礎,需要深入理解和應用。

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

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


2.4 Java IO
http://http://java.io和java.nio是Java中處理IO的兩個包,IO是非常重要的,處理檔案讀寫,包括網路資料流的讀寫都需要使用到IO。

我們需要掌握http://http://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也是必不可少的。


3.2 Spring Boot
雖然Spring簡化了EJB,但是還是需要諸多的配置檔案,而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,技術革新變化非常快,只有一直學習,才能不掉隊不落後,學到老,活到老。希望各個朋友都能一步一個腳印的找到自己的路。畢竟知識沒有捷徑可走。

推薦JAVA教程已收藏在Java快速教程

自學Java最起碼要學到什麼程度?

自學java,學多久可以自己找到工作?

程式設計師必備 Java 核心知識點整理

1000道Java工程師面試題+答案PDF485頁

在這裡說一下自己整理了一份關於java的系統化資料,從Javase- ssm-springcloud,包括了面試題,PDF電子書,網上商城專案,個人部落格專案,分散式專案等都有睜開想學習Java或者轉行,大學生都非常實用

版權所屬:flydean程式那些事歸原作者所有

java交流學習資源大全檔案下載地址:https://jq.qq.com/?_wv=1027&k=jx7ERZrp學習手冊,面試題,開發工具,PDF文件書籍教程,練習專案+原始碼

Java自學資料學習交流群:926452303

聲援博主:您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得隨手點波推薦不要忘記哦!!!

別忘了點推薦留下您來過的痕跡原文連結:https://blog.csdn.net/superfjj/article/details/105482751