優秀且經驗豐富的Java開發人員的特徵之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編寫新的程式碼。
這對我來說很有意義,因為這些第二方庫都經過了測試。 在本文中,我將分享Java開發人員應該熟悉的一些最有用和最基本的庫和API。 順便說一句,我沒有包括Spring和Hibernate這樣的框架,因為它們是眾所周知的並且具有特定的功能。
我通常會提供用於日常工作的有用庫,例如Log4j等日誌記錄庫,Jackson等JSON解析庫以及JUnit和Mockito等單元測試API。 如果需要在專案中使用它們,則可以在專案的類路徑中包含這些庫的JAR以開始使用它們,也可以使用Maven進行依賴項管理。
當使用Maven進行依賴管理時,它將自動下載這些庫,包括它們依賴的庫,稱為傳遞依賴。
例如,如果您下載Spring Framework,那麼它還將下載Spring依賴的所有其他JAR,例如Log4j等。
您可能沒有意識到,但是擁有正確版本的依賴JAR令人頭疼。 如果您使用的JAR版本錯誤,則將收到ClassNotFoundException或NoClassDefFoundError或UnsupportedClassVersionError 。
這是我收集的一些有用的第三方庫,Java開發人員可以在其應用程式中使用它們來完成許多有用的任務。 為了使用這些庫,Java開發人員也應該熟悉這些,這是本文的重點。 如果您有想法,可以研究該庫並加以使用。
1、記錄庫
日誌記錄庫很常見,因為在每個專案中都需要它們。 對於伺服器端應用程式而言,它們是最重要的事情,因為日誌僅放置在您可以看到應用程式執行狀況的位置。 即使JDK附帶了自己的日誌記錄庫,也有許多更好的選擇,例如Log4j,SLF4j和LogBack。
Java開發人員應該熟悉日誌記錄庫的優缺點,並且知道為什麼使用SLF4j比普通的Log4j更好 。 如果您不知道為什麼我建議您閱讀我以前關於同一主題的文章。
2、JSON解析庫
在當今的Web服務和物聯網(IoT)世界中,JSON已成為將資訊從客戶端傳送到伺服器的首選協議。 他們已經將XML替換為以平臺無關的方式傳輸資訊的最優選方式。 不幸的是,JDK還沒有JSON庫,但是幸運的是,有很多優秀的第三方庫可以讓您解析和建立JSON訊息,例如Jackson和Gson。
3、單元測試庫
單元測試是將普通開發人員與優秀開發人員區分開的最重要的事情。 經常給程式設計師藉口,而不是編寫單元測試,而是最常見的藉口,避免單元測試的藉口是缺乏流行的單元測試庫(例如JUnit,Mockito和PowerMock)的經驗和知識。
推薦一個開源免費的 Spring Boot 實戰專案:
https://github.com/javastacks/spring-boot-best-practice
4、通用庫
Java開發人員可以使用幾個非常好的通用第三方庫,例如Apache Commons和Google Guava。 我總是將這些庫包含在我的專案中,因為它們簡化了許多工。 正如約書亞·布洛赫(Joshua Bloch)在《 有效的Java》 (現在已經有第3版)中正確說的那樣,重新發明輪子沒有意義,我們應該寧願使用經過考驗的庫,也不要時不時編寫自己的例程。
這只是一個優秀的Java開發人員熟悉Google的Guava和Apache commons庫。
5、Http庫
我對JDK不太喜歡的一件事是他們缺乏對HTTP的支援。 儘管可以使用java.net包中的類進行HTTP連線,但它不像使用開放原始碼,第三方庫(如Apache HttpClient和HttpCore)那樣簡單無縫。
儘管JDK 9帶來了HTTP 2.0的支援以及對HTTP的更好支援,但我強烈建議所有Java開發人員熟悉流行的HTTP客戶端庫,例如HttpClient和HttpCore。
您還可以檢視Java 9的新增功能-模組等,以瞭解有關JDK 9的HTTP 2支援的更多資訊。
6、XML解析庫
存在許多XML解析庫,例如Xerces,JAXB,JAXP,Dom4j,Xstream等。Xerces2是Apache Xerces系列中的下一代高效能,完全相容的XML解析器。 Xerces的這個新版本引入了Xerces本機介面(XNI),這是一個用於構建解析器元件和配置的完整框架,該框架非常模組化且易於程式設計。
Apache Xerces2解析器是XNI的參考實現,但其他解析器元件,配置和解析器也可以使用Xerces本機介面編寫。 Dom4j是另一個適用於Java應用程式的靈活XML框架。
7、Excel閱讀庫
信不信由你,但所有實際應用程式都必須以某種形式與Microsoft Office進行互動。 許多應用程式都需要提供在Excel中匯出資料的功能,如果必須從Java應用程式中匯出資料,則需要Apache POI API。
這是一個非常豐富的庫,它使您可以從Java程式讀取和寫入XLS檔案 。 您可以看到該連結,以獲取在Core Java應用程式中讀取Excel檔案的工作示例。
8、位元組碼庫
如果您正在編寫生成程式碼或與位元組碼互動的框架或庫,則需要一個位元組碼庫。 它們使您可以讀取和修改應用程式生成的位元組碼。 Java世界中一些流行的位元組碼庫是javassist和Cglib Nodep。
Javassist(JAVA程式設計ASSISTant)使Java位元組碼操作非常簡單。 它是用於在Java中編輯位元組碼的類庫。 ASM是另一個有用的位元組碼編輯庫。
9、資料庫連線池庫
如果要透過Java應用程式與資料庫進行互動,但不使用資料庫連線池庫,那麼您將丟失某些內容。 由於在執行時建立連線會花費時間,並使請求處理變慢,因此始終建議使用DB連線庫。 最受歡迎的是Commons Pool和DBCP 。
在Web應用程式中,通常是Web伺服器提供這些功能,但是在核心Java應用程式中,您需要將這些連線池庫包括到類路徑中才能使用資料庫連線池。 如果您想了解有關Web應用程式中JDBC和連線池的更多資訊,建議您閱讀Udemy中的JSP,Servlet和JDBC for Beginners課程。
10、訊息庫
與日誌記錄和資料庫連線類似,訊息傳遞也是許多實際Java應用程式的共同功能。 Java提供了JMS,Java Messaging Service,但這不是JDK的一部分,您需要包括單獨的jms.jar。 同樣,如果您使用的是第三方訊息傳遞協議,例如Tibco RV,則需要在應用程式類路徑中使用第三方JAR,例如tibrv.jar。
11、PDF庫
與Microsoft Excel和World相似,PDF是另一種普遍存在的格式。 如果您需要在應用程式中支援PDF功能,例如將資料匯出為PDF檔案,則可以使用iText和Apache FOP庫。 兩者都提供有用的PDF相關功能,但是iText變得越來越豐富和完善,我一直偏愛那種。 請參閱此處以瞭解有關iText的更多資訊。
12、日期和時間庫
在Java 8之前,JDK的資料和時間庫存在許多缺陷,例如它們不是執行緒安全的,不可變的,並且容易出錯,許多Java開發人員都依靠JodaTime來實現其日期和時間要求。 從JDK 8開始,沒有理由使用Joda,因為您可以在JDK 8的新Date and Time API本身中獲得所有功能,但是如果您使用的是較舊的Java版本,則JodaTime是一個值得學習的庫。
關注公眾號:Java技術棧,回覆:Java,可閱讀我寫的系列 Java 8+ 系列教程,也可以前往網站(https://www.javastack.cn)去閱讀。
13、收藏庫
儘管JDK具有豐富的集合庫,但仍有一些第三方庫提供了更多選項,例如Apache Commons集合,Goldman Sachs集合,Google集合和Trove。 Trove庫特別有用,因為它為Java提供了高速的常規和原始集合。
FastUtil是另一個類似的API,它透過提供特定於型別的對映,集合,列表和優先順序佇列來擴充套件Java Collections Framework,而這些佇列,記憶體,佔用空間小並且可以快速訪問和插入。 還為二進位制檔案和文字檔案提供了大型(64位) arrays , sets和lists以及快速,實用的I / O類。
14、電子郵件API
javax.mail和Apache Commons Email –提供用於傳送電子郵件的API。 它建立在旨在簡化的JavaMail API之上。
15、HTML解析庫
與JSON和XML相似,HMTL是我們許多人必須處理的另一種常見格式。 值得慶幸的是,我們擁有jsoup,它大大簡化了在Java應用程式中使用HTML的工作。 您可以使用JSoup不僅解析HTML,還可以建立HTML文件
它提供了使用DOM,CSS和類似jquery的最好方法提取和處理資料的非常方便的API。 jsoup實現WHATWG HTML5規範,並將HTML解析為與現代瀏覽器相同的DOM。
16、密碼庫
Apache Commons Codec軟體包包含用於各種格式(例如Base64和Hexadecimal)的簡單編碼器和解碼器。 除了這些廣泛使用的編碼器和解碼器之外,編解碼器包還維護了語音編碼實用程式的集合。
17、嵌入式SQL資料庫庫
我真的很喜歡H2這樣的記憶體資料庫,您可以將其嵌入Java應用程式中。 它們非常適合測試SQL指令碼和執行需要資料庫的單元測試。 順便說一句,H2不是唯一的資料庫,您也可以選擇Apache Derby和HSQL。
18、JDBC故障排除庫
有一些很好的JDBC擴充套件庫可以使除錯更加容易,例如P6spy。 它是一個庫,可在不更改應用程式程式碼的情況下無縫地攔截和記錄資料庫資料。 您可以使用它們來記錄SQL查詢及其時間。 例如,如果您在程式碼中使用PreparedStatment和CallableStatement ,則這些庫可以記錄帶有引數的確切呼叫以及執行所需的時間。
19、序列化庫
Google協議緩衝區協議緩衝區是一種以有效但可擴充套件的格式對結構化資料進行編碼的方法。 它是Java序列化的更豐富,更好的替代方法,我強烈建議有經驗的Java開發人員學習Google Protobuf。
20、網路庫
一些有用的網路庫是Netty和Apache MINA。 如果您在編寫需要執行低階網路任務的應用程式,請考慮使用這些庫。
這就是每個Java開發人員都應該熟悉的一些有用的庫 。
Java生態系統非常龐大,您會發現大量用於執行不同操作的庫。 您考慮了一下,就會發現存在一個可以執行此操作的庫。 與往常一樣,Google是您找到有用的Java庫的最佳朋友,但是您也可以檢視Maven中央儲存庫,以找到一些適合您手頭任務的有用庫。
文章來源:https://www.javacodegeeks.com/2018/01/top-20-libraries-apis-java-developer-know.html
更多文章推薦:
1.Spring Boot 3.x 教程,太全了!
2.2,000+ 道 Java面試題及答案整理(2024最新版)
3.免費獲取 IDEA 啟用碼的 7 種方式(2024最新版)
覺得不錯,別忘了隨手點贊+轉發哦!