頂級 Javaer 都在用的 20 個類庫,真香!

優秀且經驗豐富的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最新版)

覺得不錯,別忘了隨手點贊+轉發哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章