許多Java開發人員都但願經過某種Java成長路線圖,來解答有關:該學習哪些技術,使用哪些工具以及框架之類的問題。java
在此,我將向你們展現一張根據本身多年經驗總結出的路線圖。該路線圖在保持簡單可行的基礎上,介紹了各類具備業界標準、且方便多數人遵循的工具和程序庫。程序員
該路線圖以下所示,但願可以對您起到指導和借鑑的做用。數據庫
如圖不清晰,能夠關注微信公衆號Java技術棧,在後臺回覆關鍵字 "19javamap" 獲取高清版。 編程
Java開發人員的必備技能數組
下面,咱們將根據上述Java路線圖,來一塊兒探討那些開發人員必須學習和掌握的工具、框架、程序庫、以及API。緩存
在路線圖中,工具部分主要分爲兩塊。微信
第一部分是做爲主要工具的IDE。它可以起到編譯、運行、調試、分析、測試、比較文件與代碼、以及重構等做用。數據結構
第二部分是構建工具。您須要使用例如Maven和Gradle之類的工具,來構建和部署項目。固然,您也能夠選擇使用比較傳統甚至有些老舊的ANT。不過,在處理全部新的Java項目時,我我的更偏好使用Maven或Gradle。多線程
JDK API是其次須要學習和掌握的方面。根據它對於大多數Java開發人員的重要程度,我將Java集合框架(Collections Framework)、Java併發性(Concurrency)、Java IO與Java 8 API等核心領域都概括到了此類之中。下面咱們逐一進行討論:併發
2.1 Java集合框架
這是每一個Java開發人員都應該認真學習的Java重要API之一。該API提供了Java中標準數據結構的實現,例如:鏈表、集合、堆棧、隊列、哈希表、以及優先級隊列等。
您至少應該瞭解的常規對象包括:ArrayList、HashMap、HashSet、LinkedHashSet、以及TreeSet等。它們都有各自不一樣的屬性。
例如:ArrayList是一個能夠增加的動態數組;HashMap是一種哈希表的標準實現,能夠被用於存儲各類鍵值對;而HashSet則是一套實現類的集合,它不容許有重複元素的出現。
2.2 Java併發性
在Java集合以後,另外一個關鍵的Java API即是多線程與併發性。我我的認爲:若是您想成爲一名合格的Java開發人員,那麼就必須對Java Concurrency API具備紮實的理解和掌握。
您不只應該對Thread、Runnable、對象鎖定(Object locking)、以及同步等基本概念有深刻的瞭解,並且還應該熟悉死鎖、活動鎖(livelock)、競爭條件、以及如何處理等相關概念。
同時,您也應該瞭解一些高級的Java概念,例如:如何在Java 5及其後續版本中添加各類同步器,包括:CyclicBarrier、CountDownLatch、Phaser、CompleteableFuture等,以及如何經過Futures在Java中執行異步操做等方面。
2.3 Java IO
經過採訪了100多名Java程序員,我注意並發現到:相比Java集合和Java多線程API,他們對於Java IO和NIO API的瞭解真是少之又少。雖然多數人已經將大量時間花費在了學習前面兩個API上,可是咱們絲絕不應該忽略其餘關鍵的API。
有過編寫核心Java應用程序的讀者應該體會到:常常須要使用java.io包中的File、InputStream、OutputStream、Reader和Writer等類。它們都是Java IO API的核心。
同理,若是您想編寫基於套接字的應用程序,那麼就須要經過java.nio API來了解ByteBuffer、FileChannel、Selector和其餘關鍵類。
不過在網上,有關傳授Java IO和Java NIO API的資源並很少,你能夠經過The Complete Java Masterclass課程資源,來全面掌握此類API。固然,該課程也會涉及到Java API的許多其餘基本概念。
2.4 Java 8的各項功能
Java程序員應該學習並掌握的下一個重要API是Java 8的各項功能。能夠絕不誇張地說,這些功能完全改變了現在Java的編程方式。
所以,做爲一名Java開發人員,您不該該錯過了解與使用Lambda表達式、Stream API、Optional類、以及全新Date and Time API的機會。
Java 8已經發布5年多了,現在大多數庫都已中止了支持低於Java 8的版本。所以若是您想順利地實現Java應用程序的編寫與調試的話,請趕快抓緊時間學習Java 8的各項新功能。
關注微信公衆號:Java技術棧,在後臺回覆:Java,能夠獲取我整理的 N 篇最新 Java 8-12 新特性教程,都是乾貨。
Java的魅力在於它擁有一個充滿活力的生態系統,這意味着其許多框架和程序庫可以被用於幾乎全部的領域。
目前,被Java開發人員常用到的框架和程序庫包括:Spring、Spring Boot、Hibernate、Log4j、以及JUnit等。
3.1 Spring框架
Spring Framework是最流行的Java框架之一。實際上過去五年裏,我在幾乎全部工做過的Java應用程序中,都使用了該框架。推薦:Spring 常犯的十大錯誤!
Spring Framework不但可以讓開發人員編寫出簡潔的代碼,並且還可以經過依賴注入(Dependency Injection)和控制反轉(Inversion of Control)等功能,輕鬆地測試與維護代碼。它擁有豐富API,可適用於大多很多天常任務,恐怕這也就是爲何Java開發人員應該學習Spring框架的緣由。
3.2 Hibernate
在個人路線圖中,第二個推薦給Java開發人員學習的框架是Hibernate。它是基於Java持久性的API(JPA,Java Persistence API)。更準確地說,Hibernate早於JPA,可是因爲JPA是在Java中實現了持久層的標準API,所以Hibernate也可以實現它。
因爲大多數Java應用程序都須要與數據庫進行交互,所以開發人員能夠經過Java Hibernate之類的框架,使用JDBC來處理Java中的數據庫相關操做。另外,因爲Hibernate提供了開箱即用的緩存和事務等基本功能,所以開發人員可以擁有更多的時間,去專一於應用程序的邏輯,而不用考慮如何去實現緩存。顯然,Hibernate大幅提升了Java應用程序的性能。
3.3 Spring Boot
我在此推薦的第三個框架是Spring Boot。就像Spring可以使得建立Java應用程序更加容易那樣,延續了Spring簡化化理念的Spring Boot,經過自動配置之類的功能,消除了建立和配置基於Spring的Java應用程序的各類麻煩步驟。
另外,其入門級的POM功能,將經常使用的依賴項分組成爲了多個簡單且可重用的POM。
關注微信公衆號:Java技術棧,在後臺回覆:boot,能夠獲取我整理的 N 篇最新 Spring Boot 教程,都是乾貨。
測試,尤爲是單元測試、集成測試和自動化測試,是任何Java開發人員必修的一項基本技能。其中,JUnit和Mockito是兩種被Java開發人員最爲熟悉、且歡迎的單元測試和模擬庫。
固然,您也能夠去學習一下更高級的程序庫,例如:用於業務驅動測試的Cucumber,用於集成測試的Robot Framework,以及您確定「繞不開」的JUnit。
在常見的PowerMock、Mockito和EasyMock三種模擬庫中,我強烈建議您學習Mockito。因爲目前有許多Java開發人員和公司都在使用它,所以它已逐漸成爲了在Java中建立模擬對象的標準庫。
一直以來,Java都擁有着豐富的開源程序庫,它們能夠幫助開發人員實現從日誌記錄到機器學習,從發送HTTP請求到解析JSON等,幾乎全部的工做。
值得一提的是:Apache Commons和Google Guava這兩個實用程序庫,它們是Java JDK庫的有效補充。
但願該清單可以幫助您編寫出更加優秀,運行效率更高的Java程序代碼。
做者:Javin Paul
原文:The 2019 Java Developer Roadmap
轉自:51CTO官微
你們也能夠關注微信公衆號:Java技術棧,棧長將繼續分享更多 Java 系列乾貨,在公衆號後臺回覆:Java,能夠獲取棧長已經整理好的歷史 Java 系列乾貨文章。