全文共3627字,預計學習時長7分鐘java
Java開發者須要學習哪些技術?哪些工具可使你成爲更好的開發者?哪些框架又是開發者必須掌握的?本文將爲Java開發者繪出一條成長爲專家的路徑圖,並回答一些亟待解決的問題。數據庫
Java開發者的必備技能express
如今,讓咱們細看這份Java開發者成長路徑,看看咱們究竟要學習哪些工具(tools),框架(frameworks),庫(libraries)和應用程序接口(APIs)。編程
1. 工具數組
工具章節主要分爲兩個部分。第一部分介紹集成開發環境(IDE),這是最基礎的工具,你幾乎能夠用它作任何事,如編譯(compile),運行(run),調試(debug),性能分析(profile),測試(test),比對文本(compare file),和編碼(code),重構(refactoring)等。微信
第二部分介紹開發工具,你須要用它進行項目開發與設計,如Maven(一種項目對象模型)和Gradle(一種構建工具),這些都很好用。我以前有提過ANT(一種跨平臺構建工具),但這是爲舊程序設計的。若是要開發新程序,我更推薦Maven和Gradle。數據結構
2. Java開發工具包應用程序接口(JDK APIs)多線程
JDK APIs對多數Java開發者都十分重要。這部份內容有點多,因此我將其分爲Java集合框架,Java併發機制,Java IO和Java 8 APIs這幾大核心來說解。往下看。併發
2.1 Java集合框架框架
這是最爲重要的Java應用程序接口之一,每一個Java開發者都應學會。它定義了Java標準數據結構的執行方式,如鏈表(linked list),集合(set),棧(stack),隊列(queue),哈希表(hash table),優先隊列(priority queue)等。
開發者還至少須要瞭解一些最經常使用的數據結構,好比ArrayList,HashSet,LinkedHashSet,TreeSet等。不一樣數據結構屬性各不相同,如ArrayList是能夠增加的動態數組;HashMap是哈希表的標準數據結構,用於儲存鍵值對;而HashSet則是隻能儲存不重複對象的集合數據結構。
2.2 Java併發機制
重要性僅次於集合的API是多線程技術(multithreading)和併發機制(concurrency)。一位稱職的Java開發者必須熟練掌握Java併發機制。
你不只須要深刻理解線程(Thread),對象鎖(Object locking)和同步器(synchronization)這類基本概念,還須要熟悉 死鎖(deadlock),活鎖(livelock),競爭條件(race conditions)等,而且知道如何操做。
同時,你須要瞭解一些進階概念,如Java 5及以後的版本中加入的循環柵欄(Cyclicbarrier),多線程條件通行工具(CountDownLatch),相位器(Phaser),異步編程(completeable future)等同步裝置(synchronizers),Feature(一種異步處理接口)以及如何在Java 中實現異步操做。
2.3 Java IO
採訪了上百位Java開發者後,咱們發現:跟集合或者多線程相比,他們廣泛缺少Java IO和NIO的知識。我理解大多數人會花更多時間在學習前二者上,可是IO和NIO也不能忽視。
當編寫一個實踐性的核心程序時,你會須要java.io包中的類(classes),如文件流(file),字符流(InputStream & OutputStream),字節流(Reader & Writer),這也是Java IO接口的核心。一樣,若是要編寫套接字應用,你也須要了解Java NIO接口中的字節緩衝區(ByteBuffer),文件通道(FileChannel),選擇器(Selector)等重要的類。惋惜如今並無不少針對Java IO和NIO的公共學習資源,我找到一個不錯的學習資源——The Complete Java Masterclass,從這裏你能學習到這兩種接口的一些重要概念。
2.4 Java 8 Features
接下來介紹的這個接口全部Java開發者都會用到——Java 8 features,這奠基了現今Java 編寫和編程的方向。在2019年,想要成爲一個Java開發者,必須瞭解Lambda表達式(Lambda expression),流接口(the Stream API),可選類(Optional classes)和新的時間日期接口(Date and Time API)的用法,否則開發Java程序會變的十分艱難。如今不少的庫都不能支持Java 8如下的版本,也就是說最好如今就開始學習Java 8 features。Java 8已經發布5年了,你沒什麼理由不學習它。
3. 框架
Java最大的優勢就是它的生態系統十分全面,也就是說它的框架和庫幾乎能支撐開發者來完成全部事。一般我會建議開發者在須要時再學習一個新的框架,可是還有一些框架和庫是每個開發者都必須知道的,像Spring,Spring Boots,Hibernate,Log4j和JUnit等。
3.1 Spring
若是你想成爲一個經驗豐富的Java開發者,我強烈建議你從學習Spring框架開始,由於這是最流行的Java框架之一,過去5年我在作Java開發時幾乎都會用到這個框架。
Spring使開發者寫出的代碼整齊明瞭,而且依賴注入(Dependency Injection)和控制反轉(Inversion of Control)使測試和維護更爲簡單。這個框架同時擁有一個大型API用於日復一日的工做,這也是開發者須要學習這一框架的一個理由。
3.2 Hibernate
我推薦學習的第二個框架是Hibernate,這是基於Java持久化API(Java Persistence API,JPA)的對象關係映射框架。確切說來,Hibernate誕生於JPA以前,但因爲JPA是應用在Java持久化層面的標準API,因此對象關係映射框架也會用到它。
那爲何須要學習這一框架呢?這是由於絕大部分Java應用都會用到數據庫,而若是不借助任何對象關係映射框架,只用Java數據庫鏈接(JDBC)來處理數據庫,是很是痛苦的。
並且如今對象關係映射框架還能提供一些重要功能,如高速緩衝儲存(caching and transactions),這也就意味着開發者能夠有更多的時間專一在應用程序的邏輯上,而不是緩衝上了。這確實顯著改善了Java應用程序的表現,也是我使用Hibernate的最主要緣由。
3.3 Spring Boots
我推薦學習的另外一框架是Spring Boots,2019年之後Java開發者都應該學習這個框架。它借鑑了Spring的簡化哲學,使和Spring的交互變得簡單。就像Spring簡化了開發Java程序,Spring Boots也簡化了基於Spring的Java程序開發程序。
自動配置這類的features使配置Spring應用程序變得簡單。一樣地,POM(項目對象模型)啓動器的features將經常使用的依賴(類之間的調用關係)分紅簡單可重複利用的不一樣組別。
4. 測試
每一個Java開發者都必須會測試,尤爲是單元測試,綜合測試和自動化測試。所以每一個Java開發者至少要熟悉JUnit和Mockito這兩個最流行的單元測試和模塊庫。
若是你認識這兩個庫,也知道如何藉助它們來有效實現單元測試,那麼你將成爲一個更好的Java開發者。還有不少進階的庫,像商業導向測試的Cucumber,綜合測試的Robot Framework,但仍是沒有庫能夠替代JUnit,因此仍是須要學習。
對於模塊庫來講,選擇會更多一點,像PowerMock,Mockito,和EasyMock。我最推薦的是Mockito,由於這是一個很大的庫,也有不少開發者和公司在使用,它也正在逐漸變成Java中創建模塊的標準庫。
若是你想學習JUnit和Mockito,能夠參考我曾經分享的書籍和課程,你會學到更多。
5. 實用工具庫
Java最強大的地方就在於它強大的開源庫。庫在Java中幾乎能夠應用到任何領域,從日誌工具到機器學習,從發送HTTP請求到解析JSON等。除此以外,Java還擁有像Apache Commons 和Google Guava這樣的實用工具庫來補足JDK庫。20個Java API和庫的列表我已經分享給廣大開發者了。建議你們能夠先去瀏覽那份列表,大家已經抓住了一半的機會,就差潛心學習了。這些API和庫很是實用,可使開發者寫出更好的程序及提升編碼速度。
留言 點贊 關注
咱們一塊兒分享AI學習與發展的乾貨
歡迎關注全平臺AI垂類自媒體 「讀芯術」
(添加小編微信:dxsxbb,加入讀者圈,一塊兒討論最新鮮的人工智能科技哦~)