大家好,我相信大家在新的一年都有一個良好的開端,並準備好制定一個提升自我技術的目標。作為 Java 開發人員,我還制定了一些目標,希望在今年成為一名更好的 Java 開發人員。

如果你尚未制定目標,這將幫助你制定 2020 年的目標。作為一名程式設計師,我們面臨的最大挑戰是使自己保持不斷學習的狀態。技術變化非常快,每兩年你就會看到新版本的程式語言和框架。

今年也有很多的變化,每 6 個月更新一次 Java 新版本、Spring 5、Spring Security 5 和 Spring Boot 2,對於 Java 開發人員而言,這可能是最繁忙的一年。

2019 年的時候,我以為 Java 11 是新的,在我無法完全學習 Java 11 之前,Java 12 和 Java 13 已經為我們準備好了。自 JDK 9 以來,所有這些 Java 版本都具有許多令人興奮的功能,例如文字塊(多行字串),switch 表示式,區域性變數的 var,API 增強,GC 改進,執行緒本地握手(機制優化)等,我真的很高興能在 2020 年學到這些內容。

Spring framework 和 Spring Security 也是如此的,我還不知道 Spring 4.0 和 Spring Security 4.0 上的所有更改,我的專案仍在使用 Spring Security 3.1,然而現在已經有了 Spring 和 Spring Security 的 5.0 版本。

在過去的幾年中,我的學習速度有所下降,還沒有掌握最新的技術,比如容器-Docker 和 Kubernetes,AWS、GCP 和 Azure 等雲平臺,單元和整合測試空間的最新變化以及簡化結構的新版本,如 Spring、Spring Security 和 Spring Boot。

因此,2020 年將是讓我自己瞭解技術方面最重要的事情,探索 DevOps 和雲端計算領域,特別是 Docker、Kubernetes 和 AWS 的 Jenkins。

分享一張後端路線圖(國外的一位大佬總結的),可以去圖中的網站下載,或者在【武培軒】微信公眾號回覆【路線圖】獲取。

2020 年 Java 開發人員可以學習什麼?

這是我認為 Java 開發人員應該在 2020 年學習的東西,很可能你已經瞭解了其中的大多數,但是更好地學習它們並進行深入研究不會對你有害處的。

1.容器(Docker 和 Kubernetes)

你可能已經聽說過 Docker 和 Kubernetes 等容器技術,以及它對 DevOps 團隊的影響。Kubernetes 是你可以學習的最重要的工具之一,並且將陪伴你的整個職業生涯。

如今,無論是大型企業還是小型創業公司,幾乎每個開發團隊都使用 Docker 和 Kubernetes。可以肯定地說,如果你現在開始學習,很有可能在工作中的某個時候用到 Docker 或 Kubernetes。

簡而言之,無論你是初級 Java 開發人員還是經驗豐富的資深人士,擁有 Docker 和 Kubernetes 知識對於你的職業發展和工作變動都是至關重要的。

2.雲平臺(AWS 、GCP 或 Azure)

除了容器,雲是我認為每一位軟體開發人員都應該在 2020 年學習的另一件事。各種規模和領域的公司現在都在將其環境遷移到雲中,以節省成本和更好的可擴充套件性,這意味著你遲早要需要使用雲原生應用程式。

它們對於資料科學,機器學習和人工智慧領域中的迅猛發展是緊密相連的,因為只有雲才能提供那些資源匱乏的模型所需的計算能力。

像 Amazon Web Service(AWS),Google Cloud Platform(GCP)或 Microsoft Azure 這樣的學習型雲平臺不僅在你當前的工作上。你不需要學習所有這些知識,實際上,學習一種知識意味著你將對其他事物有一個公平的想法。

如果你要學習雲平臺相關的知識,那麼我首先建議你學習 AWS,因為它是最流行和最成熟的雲平臺。

3. Git

Git 和 Github 已經使用有一段時間了,雖然我過去在 IDEA 中使用過 Git,但是在命令列上我對 Git 還不是很熟悉。

為什麼到目前為止我還沒有掌握 Git?只是因為我還不需要它,我偶爾會從 Github 下載專案並從 IDEA 執行,但是我仍然是 Git 新手。

從現在開始,大多數公司都將其專案從 SVN,CVS 遷移到 Git,這也是學習和掌握 Git 的重要時機。

4.單元測試(JUnit 和 Mockito)

我想在來年改進的另一個領域,Java 程式設計師可以使用許多新的框架和工具進行單元測試,並對其應用程式進行整合測試,例如用於模擬物件的 Mockito 和 PowerMock,用於自動整合測試的 Robot Framework 和Cucumber,當然還包括新的 JUnit 5 庫。

在這方面有很多東西要學習,如果你可以花一些時間來提高單元測試技能,那麼不僅可以提高你的編碼專業知識,而且可以使你成為更專業的開發人員,每家公司都將以此為形式。

5.從 JDK 9 到 13 的新 Java 功能

正如我過去所說的那樣,我像許多 Java 開發人員一樣仍在努力追趕六個月釋出一次的 Java 版本。我今年花了一些時間學習 Java 9、10、11 和 12 的新功能,但是對我來說,直到我使用 LTS 發行版 Java 13 之前,Java 11 仍然是優先事項。

JDK 9 在模組,拼圖,反應流,Process API,HTTP2 客戶端,JShell 和 API 改進(如集合工廠方法)方面帶來了很多好處,我非常希望能儘早學習它們。

同樣,JDK 10 帶來了var,使你可以進行動態型別化和 GC 改進。然後,在JDK 12 和 JDK 13 的 Switch 表示式、文字塊。

6. Spring Framework 5+

自從我們看到 Spring 和 Java Ecosystem 進行了許多重大升級以來已經有兩年了,Spring Framework 5.0 就是其中之一。我一直在聽說一些新功能,例如 Spring 5 的反應式程式設計模型,Java 8 和 9 的採用,某些單元測試的改進等,但是我還沒有嘗試過。

無論如何,我已經開始學習 Spring 5.0.0,並將保持這種勢頭在 2020 年持續下去。如果你使用 Spring,可能是學習 Spring 5.0 的最佳時機。

7. DevOps(Jenkins)

去年,隨著越來越多的公司進入DevOps並採用持續的整合和部署,這是另一個吸引我的領域。

DevOps 非常龐大,你需要學習很多工具和原理,這就是讓很多開發人員不知所措的原因,但你不必擔心。下面分享了一個大佬總結的 DevOps 路線圖(公眾號【武培軒】回覆【路線圖】獲取),你可以按照自己的速度學習和掌握 DevOps,尤其是 Jenkins。

這意味著,如果你是一位經驗豐富的 Java 程式設計師,並且熱衷於管理環境,自動化和改善整體結構,那麼你可以成為DevOps 工程師。

8. RESTful Web 服務

我想在 2020 年繼續改進的另一件事是我對編寫 REST API 以及使用 Spring 使用 Java 實現安全且可擴充套件的RESTful Web Service 的瞭解。

這是 Java 世界中非常需要的一項技能,並且很少有人同時瞭解 Java 和 REST。如果你也一樣,並且想學習如何使用Spring 開發 RESTful Web Service,那麼讓我們一起在 2020 學習。

9. Spring Security 5.0(OAuth)

Spring Security 是一個能夠為基於 Spring 的企業應用系統提供宣告式的安全訪問控制解決方案的安全框架。它提供了一組可以在 Spring 應用上下文中配置的 Bean,充分利用了 Spring IoC(控制反轉),DI(依賴注入)和 AOP(面向切面程式設計)功能,為應用系統提供宣告式的安全訪問控制功能,減少了為企業系統安全控制編寫大量重複程式碼的工作。

這是 Spring 生態系統的第三次重大升級,Spring Security 5.0.0 的主要亮點在於它只需要最小化的 JDK 8、反應式安全特性、OAuth 2.0(OIDC)和現代密碼儲存,你絕對不能錯過。

與 Spring 5.0 框架一樣,這是 2020 年我的另一個優先事項。

10. Spring Boot 2 和微服務

Spring Boot 2.0 中引入了眾多令人激動的新特性,包括支援 Java 9、HTTP/2、基於 Spring 5 構建、強力整合 GSON 等等。

那麼在時間允許的情況下,你還應該花一些時間學習 Spring Boot 2 和微服務,我相信它會給你帶來不一樣的體驗。

11. Apache Spark 和 Kafka

我想在 2020 年繼續深入探索的另一件事是大資料,主要是 Apache Spark 和 Apache Kafka 框架。我不確定是否有時間去看其他大資料技術,但是它的好東西和大資料可能是目前最熱門的技術。

總結

這就是 Java 程式設計師在 2020 年可以學到的一切嗎?就像我說的那樣,技術日新月異,程式設計師面臨的最大挑戰是使自己保持不斷學習的狀態。除了以上這些技術外,肯定還有很多其他的東西,你可以查詢在新的一年就像學習一門新的程式語言如 Kotlin,但對我來說,如果我能在 2020 年實現這些目標,我會更高興。