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