優秀且經驗豐富的 Java 開發人員的特點之一是對 API 的廣泛了解,包括 JDK 和第三方庫。如何使用現有的 API 進行開發,而不是爲常見的東西編寫新的代碼。是提升開發效率必選之路。
一般來說,我會爲日常項目提供有用的庫,包括 Log4j 等日志庫、Jackson 等 JSON 解析庫以及 JUnit 和 Mockito 等單元測試 API。如果您需要在項目中使用它們,則可以在項目的類路徑中包含這些庫的 JAR 以開始使用它們,也可以使用Maven進行依賴管理。
對 Java 程序員有用的開源庫
下面是收集的一些有用的第三方庫,Java 開發人員可以在他們的應用程序中使用它們來完成很多有用的任務。爲了使用這些庫,Java 開發人員應該熟悉這一點,這就是本文的重點。如果您有一個想法,那麽您可以研究該庫並使用它。
1. 日志庫
日志庫非常常見,因爲您在每個項目中都需要它們。它們對于服務器端應用程序來說是最重要的,因爲日志只放置在您可以看到應用程序正在發生什麽的地方。盡管 JDK 附帶了自己的日志庫,但仍有更好的替代方案可用,例如 Log4j、SLF4j 和 LogBack。
Java 開發人員應該熟悉日志庫的優缺點,並知道爲什麽使用 SLF4j 比普通的 Log4j 更好。
2. JSON解析庫
在當今的 Web 服務和物聯網世界中,JSON 已成爲將信息從客戶端傳輸到服務器的首選協議。它們已取代 XML,成爲以獨立于平台的方式傳輸信息的首選方式。
不幸的是,JDK 沒有JSON 庫。但是,有許多優秀的第三方庫可以讓您解析和創建 JSON 消息,例如 Jackson 和 Gson。
Java Web 開發人員應該至少熟悉這些庫中的一個。
3. 單元測試庫
單元測試是將普通開發人員與優秀開發人員區分開來的最重要的事情。程序員經常得到不編寫單元測試的借口,但避免單元測試的最常見借口是缺乏流行單元測試庫的經驗和知識,包括 JUnit、Mockito 和 PowerMock。
![](http://image.uc.cn/s/wemedia/s/upload/2024/127fbca15d2e356d91daafe402aa39ed.jpg)
圖片
4. 通用庫
Java 開發人員可以使用一些優秀的通用第三方庫,例如 Apache Commons 和 Google Guava。我總是在我的項目中包含這些庫,因爲它們簡化了很多任務。
重新發明輪子是沒有意義的。我們應該更喜歡使用久經考驗的庫,而不是時不時地編寫我們自己的例程。
![](http://image.uc.cn/s/wemedia/s/upload/2024/379e52aac3ab4f7d2f82c5c512d9d90d.jpg)
圖片
Java 開發人員最好熟悉 Google Guava 和 Apache Commons 庫。
5. HTTP 庫
我不喜歡 JDK 的一件事是它們缺乏對 HTTP 的支持。雖然您可以使用包中的類建立 HTTP 連接 java.net,但使用開源第三方庫(如 Apache HttpClient 和 HttpCore)並不容易或無縫。
![](http://image.uc.cn/s/wemedia/s/upload/2024/95f5c11ef5caacecf97a64c728606737.jpg)
圖片
盡管 JDK 9 帶來了對 HTTP 2.0 的支持以及對 HTTP 的更好支持,但我強烈建議所有 Java 開發人員熟悉流行的 HTTP 客戶端庫,包括 HttpClient 和 HttpCore。
6. XML 解析庫
有許多 XML 解析庫,包括 Xerces、JAXB、JAXP、Dom4j 和 Xstream。Xerces2 是 Apache Xerces 系列中的下一代高性能、完全兼容的 XML 解析器。這個新版本的 Xerces 引入了 Xerces Native Interface (XNI),這是一個用于構建解析器組件和配置的完整框架,它非常模塊化且易于編程。
![](http://image.uc.cn/s/wemedia/s/upload/2024/12c3548d11c02139c06e9b6959663ad8.jpg)
圖片
Apache Xerces2 解析器是 XNI 的參考實現,但其他解析器組件、配置和解析器可以使用 Xerces Native Interface 編寫。Dom4j 是另一個用于 Java 應用程序的靈活 XML 框架。
7. Excel 閱讀庫
信不信由你——所有現實世界的應用程序都必須以某種形式與 Microsoft Office 交互。許多應用程序需要提供在 Excel 中導出數據的功能,如果您必須從 Java 應用程序中執行相同操作,則需要 Apache POI API。
這是一個非常豐富的庫,允許您 從 Java 程序讀取和寫入 XLS 文件。您可以查看該鏈接以獲取在核心 Java 應用程序中讀取 Excel 文件的工作示例。
8. 字節碼庫
如果您正在編寫生成代碼或與字節碼交互的框架或庫,那麽您需要一個字節碼庫。
它們允許您讀取和修改應用程序生成的字節碼。Java 世界中一些流行的字節碼庫是 javassist 和 Cglib Nodep。
![](http://image.uc.cn/s/wemedia/s/upload/2024/94c98f1c4b3019e75812bc8bf280cba4.jpg)
圖片
Javassist(JAVA 編程助手)使 Java 字節碼操作變得非常簡單。它是一個用于在 Java 中編輯字節碼的類庫。ASM 是另一個有用的字節碼編輯庫。
9. 數據庫連接池庫
如果您從 Java 應用程序與數據庫進行交互,但不使用數據庫連接池庫,那麽,您會丟失一些東西。
由于在運行時創建數據庫連接需要時間並且使請求處理速度變慢,因此始終建議使用數據庫連接庫。一些流行的是 Commons Pool 和 DBCP。
在 Web 應用程序中,它的 Web 服務器通常提供這些功能,但在核心 Java 應用程序中,您需要將這些連接池庫包含到您的類路徑中才能使用數據庫連接池。
10. 消息庫
與日志記錄和數據庫連接類似,消息傳遞也是許多實際 Java 應用程序的共同特征。
Java 提供 JMS 或 Java 消息傳遞服務,它不是 JDK 的一部分。對于此組件,您需要包含一個單獨的 jms.jar
![](http://image.uc.cn/s/wemedia/s/upload/2024/92fe63277f9f6ecdb12c1138322911ea.jpg)
圖片
同樣,如果您使用第三方消息傳遞協議,例如 Tibco RV,那麽您需要 tibrv.jar 在應用程序類路徑中使用第三方 JAR 。
11. PDF 庫
與 Microsoft Excel 類似,PDF 庫是另一種普遍存在的格式。如果您需要在應用程序中支持 PDF 功能,例如 在 PDF 文件中導出數據,您可以使用 iText 和 Apache FOP 庫。
兩者都提供有用的 PDF 相關功能,但 iText 更豐富更好。
![](http://image.uc.cn/s/wemedia/s/upload/2024/8b46261032bbc93e745355ce04acc122.jpg)
圖片
12. 日期和時間庫
在 Java 8 之前,JDK 的數據和時間庫有很多缺陷,因爲它們不是線程安全的、不可變的和容易出錯的。許多 Java 開發人員依靠 JodaTime 來實現他們的日期和時間要求。
從 JDK 8 開始,沒有理由使用 Joda,因爲您可以在 JDK 8 的新日期和時間 API中獲得所有這些功能,但是如果您使用的是較舊的 Java 版本,那麽 JodaTime 是一個值得學習的庫。
![](http://image.uc.cn/s/wemedia/s/upload/2024/d7e000681c9be1f13ce4c5e8cc7df177.jpg)
圖片
13. 集合庫
盡管 JDK 擁有豐富的集合庫,但也有一些第三方庫提供了更多選項,例如 Apache Commons 集合、Goldman Sachs 集合、Google 集合和 Trove。
Trove 庫特別有用,因爲它爲 Java 提供了高速的常規和原始集合。
![](http://image.uc.cn/s/wemedia/s/upload/2024/f799e95bf39daf715a37e65ee9c91dfc.jpg)
圖片
FastUtil 是另一個類似的 API。它通過提供特定類型的映射、集合、列表和優先級隊列來擴展 Java 集合框架,這些映射、集合、列表和優先級隊列具有較小的內存占用、快速訪問和插入;它還提供大(64 位)數組、集合和列表,以及用于二進制和文本文件的快速、實用的 I/O 類。
14. 電子郵件 API
javax.mail 和 Apache Commons Email 都提供了用于從 Java 發送電子郵件的 API 。它建立在 JavaMail API 之上,旨在簡化它。
![](http://image.uc.cn/s/wemedia/s/upload/2024/563c9e4eb08e4f66a28aa2e0f67c0a8e.jpg)
圖片
15. HTML 解析庫
與JSON和XML類似,HMTL 是我們許多人必須處理的另一種常見格式。值得慶幸的是,我們有 JSoup,它極大地簡化了在 Java 應用程序中使用 HTML。
您可以使用JSoup不僅解析 HTML,還可以創建 HTML 文檔
![](http://image.uc.cn/s/wemedia/s/upload/2024/eb57ef07b8a6fbd00b699fa9dab5161f.jpg)
圖片
它提供了一個非常方便的 API 用于提取和操作數據,使用最好的DOM、CSS 和類似 jquery 的方法。JSoup 實現了 WHATWG HTML5 規範並將HTML解析爲與現代浏覽器相同的 DOM。
16.密碼庫
Apache Commons Codec 包包含各種格式的簡單編碼器和解碼器,例如Base64和 Hexadecimal。
除了這些廣泛使用的編碼器和解碼器之外,編解碼器包還維護了一組語音編碼實用程序。
![](http://image.uc.cn/s/wemedia/s/upload/2024/7b91044232cdbf95d4496582e825237d.jpg)
圖片
17. 嵌入式 SQL 數據庫庫
我真的很喜歡像 H2 這樣的內存數據庫,你可以將它嵌入到你的 Java 應用程序中。它們非常適合測試您的 SQL 腳本和運行需要數據庫的單元測試。但是,H2 不是唯一的 DB,您還可以選擇 Apache Derby 和 HSQL。
![](http://image.uc.cn/s/wemedia/s/upload/2024/20eb699f1a08997be64a18e5428b3414.jpg)
圖片
18. JDBC 故障排除庫
有一些很好的 JDBC 擴展庫可以讓調試更容易,比如 P6spy。
這是一個庫,可以無縫攔截和記錄數據庫數據,而無需更改應用程序的代碼。您可以使用它們來記錄 SQL 查詢及其時間。
例如,如果您在代碼中使用PreparedStatment和CallableStatement,這些庫可以記錄帶有參數的准確調用以及執行所需的時間。
![](http://image.uc.cn/s/wemedia/s/upload/2024/663fc9ad2cc40ad0bcf49292272509f2.jpg)
圖片
19. 序列化庫
Google 協議緩沖區是一種以高效且可擴展的格式對結構化數據進行編碼的方法。它是Java 序列化的更豐富和更好的替代方案。我強烈建議有經驗的 Java 開發人員學習 Google Protobuf。
![](http://image.uc.cn/s/wemedia/s/upload/2024/097f24153fd81da03e34ceaf64c8b80c.jpg)
圖片
20. 網絡庫
一些有用的網絡庫是 Netty 和 Apache MINA。如果您正在編寫需要執行低級網絡任務的應用程序,請考慮使用這些庫。
![](http://image.uc.cn/s/wemedia/s/upload/2024/5ea5c5d1e90104b84f7013a895db6ab5.jpg)
圖片
以上就是今天小編分享給大家的一些工作中常用的庫,了解並熟練的運用他們,不僅可以大大提高你的開發效率,也可以學習優秀代碼的設計,提高自己的編碼能力。
文章來源:http://t.csdnimg.cn/6MPNq