0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

頂級Javaer都在使用的類庫!

jf_ro2CN3Fa ? 來源:芋道源碼 ? 2023-02-16 10:11 ? 次閱讀

優(yōu)秀且經(jīng)驗(yàn)豐富的 Java 開發(fā)人員的特點(diǎn)之一是對 API 的廣泛了解,包括 JDK 和第三方庫。如何使用現(xiàn)有的 API 進(jìn)行開發(fā),而不是為常見的東西編寫新的代碼。是提升開發(fā)效率必選之路。

一般來說,我會(huì)為日常項(xiàng)目提供有用的庫,包括 Log4j 等日志庫、Jackson 等 JSON 解析庫以及 JUnit 和 Mockito 等單元測試 API。如果您需要在項(xiàng)目中使用它們,則可以在項(xiàng)目的類路徑中包含這些庫的 JAR 以開始使用它們,也可以使用Maven進(jìn)行依賴管理。

對 Java 程序員有用的開源庫

下面是收集的一些有用的第三方庫,Java 開發(fā)人員可以在他們的應(yīng)用程序中使用它們來完成很多有用的任務(wù)。為了使用這些庫,Java 開發(fā)人員應(yīng)該熟悉這一點(diǎn),這就是本文的重點(diǎn)。如果您有一個(gè)想法,那么您可以研究該庫并使用它。

1. 日志庫

日志庫非常常見,因?yàn)槟诿總€(gè)項(xiàng)目中都需要它們。它們對于服務(wù)器端應(yīng)用程序來說是最重要的,因?yàn)槿罩局环胖迷谀梢钥吹綉?yīng)用程序正在發(fā)生什么的地方。盡管 JDK 附帶了自己的日志庫,但仍有更好的替代方案可用,例如 Log4j、SLF4j 和 LogBack。

Java 開發(fā)人員應(yīng)該熟悉日志庫的優(yōu)缺點(diǎn),并知道為什么使用 SLF4j 比普通的 Log4j 更好。

基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

項(xiàng)目地址:https://github.com/YunaiV/ruoyi-vue-pro

視頻教程:https://doc.iocoder.cn/video/

2. JSON解析庫

在當(dāng)今的 Web 服務(wù)和物聯(lián)網(wǎng)世界中,JSON 已成為將信息從客戶端傳輸?shù)椒?wù)器的首選協(xié)議。它們已取代 XML,成為以獨(dú)立于平臺的方式傳輸信息的首選方式。

不幸的是,JDK 沒有JSON 庫。但是,有許多優(yōu)秀的第三方庫可以讓您解析和創(chuàng)建 JSON 消息,例如 Jackson 和 Gson。

Java Web 開發(fā)人員應(yīng)該至少熟悉這些庫中的一個(gè)。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

項(xiàng)目地址:https://github.com/YunaiV/yudao-cloud

視頻教程:https://doc.iocoder.cn/video/

3. 單元測試庫

單元測試是將普通開發(fā)人員與優(yōu)秀開發(fā)人員區(qū)分開來的最重要的事情。程序員經(jīng)常得到不編寫單元測試的借口,但避免單元測試的最常見借口是缺乏流行單元測試庫的經(jīng)驗(yàn)和知識,包括 JUnit、Mockito 和 PowerMock。

f1ceb3f2-ad3d-11ed-bfe3-dac502259ad0.png

4. 通用庫

Java 開發(fā)人員可以使用一些優(yōu)秀的通用第三方庫,例如 Apache Commons 和 Google Guava。我總是在我的項(xiàng)目中包含這些庫,因?yàn)樗鼈兒喕撕芏嗳蝿?wù)。

重新發(fā)明輪子是沒有意義的。我們應(yīng)該更喜歡使用久經(jīng)考驗(yàn)的庫,而不是時(shí)不時(shí)地編寫我們自己的例程。

f1e015f2-ad3d-11ed-bfe3-dac502259ad0.jpg

Java 開發(fā)人員最好熟悉 Google Guava 和 Apache Commons 庫。

5. HTTP 庫

我不喜歡 JDK 的一件事是它們?nèi)狈?HTTP 的支持。雖然您可以使用包中的類建立 HTTP 連接 java.net,但使用開源第三方庫(如 Apache HttpClient 和 HttpCore)并不容易或無縫。

f1f5fd86-ad3d-11ed-bfe3-dac502259ad0.jpg

盡管 JDK 9 帶來了對 HTTP 2.0 的支持以及對 HTTP 的更好支持,但我強(qiáng)烈建議所有 Java 開發(fā)人員熟悉流行的 HTTP 客戶端庫,包括 HttpClient 和 HttpCore。

6. XML 解析庫

有許多 XML 解析庫,包括 Xerces、JAXB、JAXP、Dom4j 和 Xstream。Xerces2 是 Apache Xerces 系列中的下一代高性能、完全兼容的 XML 解析器。這個(gè)新版本的 Xerces 引入了 Xerces Native Interface (XNI),這是一個(gè)用于構(gòu)建解析器組件和配置的完整框架,它非常模塊化且易于編程

f20d84ba-ad3d-11ed-bfe3-dac502259ad0.jpg

Apache Xerces2 解析器是 XNI 的參考實(shí)現(xiàn),但其他解析器組件、配置和解析器可以使用 Xerces Native Interface 編寫。Dom4j 是另一個(gè)用于 Java 應(yīng)用程序的靈活 XML 框架。

7. Excel 閱讀庫

信不信由你——所有現(xiàn)實(shí)世界的應(yīng)用程序都必須以某種形式與 Microsoft Office 交互。許多應(yīng)用程序需要提供在 Excel 中導(dǎo)出數(shù)據(jù)的功能,如果您必須從 Java 應(yīng)用程序中執(zhí)行相同操作,則需要 Apache POI API。

這是一個(gè)非常豐富的庫,允許您 從 Java 程序讀取和寫入 XLS 文件。您可以查看該鏈接以獲取在核心 Java 應(yīng)用程序中讀取 Excel 文件的工作示例。

8. 字節(jié)碼庫

如果您正在編寫生成代碼或與字節(jié)碼交互的框架或庫,那么您需要一個(gè)字節(jié)碼庫。

它們允許您讀取和修改應(yīng)用程序生成的字節(jié)碼。Java 世界中一些流行的字節(jié)碼庫是 javassist 和 Cglib Nodep。

f225a950-ad3d-11ed-bfe3-dac502259ad0.jpg

Javassist(JAVA 編程助手)使 Java 字節(jié)碼操作變得非常簡單。它是一個(gè)用于在 Java 中編輯字節(jié)碼的類庫。ASM 是另一個(gè)有用的字節(jié)碼編輯庫。

9. 數(shù)據(jù)庫連接池庫

如果您從 Java 應(yīng)用程序與數(shù)據(jù)庫進(jìn)行交互,但不使用數(shù)據(jù)庫連接池庫,那么,您會(huì)丟失一些東西。

由于在運(yùn)行時(shí)創(chuàng)建數(shù)據(jù)庫連接需要時(shí)間并且使請求處理速度變慢,因此始終建議使用數(shù)據(jù)庫連接庫。一些流行的是 Commons Pool 和 DBCP。

在 Web 應(yīng)用程序中,它的 Web 服務(wù)器通常提供這些功能,但在核心 Java 應(yīng)用程序中,您需要將這些連接池庫包含到您的類路徑中才能使用數(shù)據(jù)庫連接池。

10. 消息庫

與日志記錄和數(shù)據(jù)庫連接類似,消息傳遞也是許多實(shí)際 Java 應(yīng)用程序的共同特征。

Java 提供 JMS 或 Java 消息傳遞服務(wù),它不是 JDK 的一部分。對于此組件,您需要包含一個(gè)單獨(dú)的 jms.jar

f23343d0-ad3d-11ed-bfe3-dac502259ad0.jpg

同樣,如果您使用第三方消息傳遞協(xié)議,例如 Tibco RV,那么您需要 tibrv.jar 在應(yīng)用程序類路徑中使用第三方 JAR 。

11. PDF 庫

與 Microsoft Excel 類似,PDF 庫是另一種普遍存在的格式。如果您需要在應(yīng)用程序中支持 PDF 功能,例如 在 PDF 文件中導(dǎo)出數(shù)據(jù),您可以使用 iText 和 Apache FOP 庫。

兩者都提供有用的 PDF 相關(guān)功能,但 iText 更豐富更好。

f244554e-ad3d-11ed-bfe3-dac502259ad0.jpg

12. 日期和時(shí)間庫

在 Java 8 之前,JDK 的數(shù)據(jù)和時(shí)間庫有很多缺陷,因?yàn)樗鼈儾皇蔷€程安全的、不可變的和容易出錯(cuò)的。許多 Java 開發(fā)人員依靠 JodaTime 來實(shí)現(xiàn)他們的日期和時(shí)間要求。

從 JDK 8 開始,沒有理由使用 Joda,因?yàn)槟梢栽?JDK 8 的新日期和時(shí)間 API中獲得所有這些功能,但是如果您使用的是較舊的 Java 版本,那么 JodaTime 是一個(gè)值得學(xué)習(xí)的庫。

f259a566-ad3d-11ed-bfe3-dac502259ad0.jpg

13. 集合庫

盡管 JDK 擁有豐富的集合庫,但也有一些第三方庫提供了更多選項(xiàng),例如 Apache Commons 集合、Goldman Sachs 集合、Google 集合和 Trove。

Trove 庫特別有用,因?yàn)樗鼮?Java 提供了高速的常規(guī)和原始集合。

f2727ed8-ad3d-11ed-bfe3-dac502259ad0.jpg

FastUtil 是另一個(gè)類似的 API。它通過提供特定類型的映射、集合、列表和優(yōu)先級隊(duì)列來擴(kuò)展 Java 集合框架,這些映射、集合、列表和優(yōu)先級隊(duì)列具有較小的內(nèi)存占用、快速訪問和插入;它還提供大(64 位)數(shù)組、集合和列表,以及用于二進(jìn)制和文本文件的快速、實(shí)用的 I/O 類。

14. 電子郵件 API

javax.mail 和 Apache Commons Email 都提供了用于從 Java 發(fā)送電子郵件的 API 。它建立在 JavaMail API 之上,旨在簡化它。

f281791a-ad3d-11ed-bfe3-dac502259ad0.jpg

15. HTML 解析庫

與JSON和XML類似,HMTL 是我們許多人必須處理的另一種常見格式。值得慶幸的是,我們有 JSoup,它極大地簡化了在 Java 應(yīng)用程序中使用 HTML。

您可以使用JSoup不僅解析 HTML,還可以創(chuàng)建 HTML 文檔

f295f43a-ad3d-11ed-bfe3-dac502259ad0.jpg

它提供了一個(gè)非常方便的 API 用于提取和操作數(shù)據(jù),使用最好的DOM、CSS 和類似 jquery 的方法。JSoup 實(shí)現(xiàn)了 WHATWG HTML5 規(guī)范并將HTML解析為與現(xiàn)代瀏覽器相同的 DOM。

16.密碼庫

Apache Commons Codec 包包含各種格式的簡單編碼器和解碼器,例如Base64和 Hexadecimal。

除了這些廣泛使用的編碼器和解碼器之外,編解碼器包還維護(hù)了一組語音編碼實(shí)用程序。

f2afe1e2-ad3d-11ed-bfe3-dac502259ad0.jpg

17. 嵌入式 SQL 數(shù)據(jù)庫庫

我真的很喜歡像 H2 這樣的內(nèi)存數(shù)據(jù)庫,你可以將它嵌入到你的 Java 應(yīng)用程序中。它們非常適合測試您的 SQL 腳本和運(yùn)行需要數(shù)據(jù)庫的單元測試。但是,H2 不是唯一的 DB,您還可以選擇 Apache Derby 和 HSQL。

f2c48f48-ad3d-11ed-bfe3-dac502259ad0.jpg

18. JDBC 故障排除庫

有一些很好的 JDBC 擴(kuò)展庫可以讓調(diào)試更容易,比如 P6spy。

這是一個(gè)庫,可以無縫攔截和記錄數(shù)據(jù)庫數(shù)據(jù),而無需更改應(yīng)用程序的代碼。您可以使用它們來記錄 SQL 查詢及其時(shí)間。

例如,如果您在代碼中使用PreparedStatment和CallableStatement,這些庫可以記錄帶有參數(shù)的準(zhǔn)確調(diào)用以及執(zhí)行所需的時(shí)間。

f2d5e22a-ad3d-11ed-bfe3-dac502259ad0.jpg

19. 序列化庫

Google 協(xié)議緩沖區(qū)是一種以高效且可擴(kuò)展的格式對結(jié)構(gòu)化數(shù)據(jù)進(jìn)行編碼的方法。它是Java 序列化的更豐富和更好的替代方案。我強(qiáng)烈建議有經(jīng)驗(yàn)的 Java 開發(fā)人員學(xué)習(xí) Google Protobuf。

f2e8476c-ad3d-11ed-bfe3-dac502259ad0.jpg

20. 網(wǎng)絡(luò)

一些有用的網(wǎng)絡(luò)庫是 Netty 和 Apache MINA。如果您正在編寫需要執(zhí)行低級網(wǎng)絡(luò)任務(wù)的應(yīng)用程序,請考慮使用這些庫。

f2f718c8-ad3d-11ed-bfe3-dac502259ad0.jpg

以上就是今天小編分享給大家的一些工作中常用的庫,了解并熟練的運(yùn)用他們,不僅可以大大提高你的開發(fā)效率,也可以學(xué)習(xí)優(yōu)秀代碼的設(shè)計(jì),提高自己的編碼能力。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2943

    瀏覽量

    104084
  • HTTP
    +關(guān)注

    關(guān)注

    0

    文章

    478

    瀏覽量

    30755
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    37

    文章

    3198

    瀏覽量

    57356

原文標(biāo)題:頂級Javaer都在使用的類庫,真香!

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    ArkTS語言基礎(chǔ)-解析

    ArkTS語言基礎(chǔ)是HarmonyOS系統(tǒng)上為應(yīng)用開發(fā)者提供的常用基礎(chǔ)能力,主要包含能力如下圖所示。 圖1 ArkTS語言基礎(chǔ)能力示意圖 提供[異步并發(fā)和多線程并發(fā)]的能力。
    發(fā)表于 02-20 16:44

    tjCFeng的【Allwinner ClassA20分析】匯總

    @tjCFeng 大神涉獵果然廣泛,連Allwinner(全志) ClassA20都在研究,現(xiàn)在把大神的Allwinner ClassA20分析帖匯總下1.ARM上的Delphi
    發(fā)表于 04-25 00:30

    調(diào)用.NET出現(xiàn)的錯(cuò)誤

    也搞不清楚為什么,為什么同一個(gè)動(dòng)態(tài)因?yàn)锳PI不一樣出現(xiàn)異常呢。動(dòng)態(tài)庫里的方法我都在.NET平臺上試過。沒有什么問題,請大家?guī)臀医鉀Q一下。
    發(fā)表于 01-13 15:06

    c#常用匯總

    珍藏了多年的,rar格式,里面都是源碼,有excel導(dǎo)入導(dǎo)出的,Json,條碼,加密
    發(fā)表于 10-09 07:01

    CSharp知識,CSharp技術(shù)

    CSharp知識,CSharp技術(shù)
    發(fā)表于 12-26 12:12 ?72次下載
    CSharp知識<b class='flag-5'>類</b><b class='flag-5'>庫</b>,CSharp技術(shù)

    java下載,java大全

    java: Java是Sun公司推出的新型面向?qū)ο蟪绦蛟O(shè)計(jì)語言。它將面向?qū)ο?、平臺無關(guān)性、穩(wěn)固性、安全性、多線程等諸多特性集于一身,為用戶提供了一個(gè)良好的程序設(shè)計(jì)環(huán)境。
    發(fā)表于 04-28 14:34 ?0次下載

    scikit-learn K近鄰法使用的經(jīng)驗(yàn)總結(jié)

    本文對scikit-learn中KNN相關(guān)的使用做了一個(gè)總結(jié),主要關(guān)注于調(diào)參時(shí)的一個(gè)經(jīng)驗(yàn)總結(jié),且非常詳細(xì)地介紹了
    的頭像 發(fā)表于 01-13 11:49 ?3093次閱讀
    scikit-learn K近鄰法<b class='flag-5'>類</b><b class='flag-5'>庫</b>使用的經(jīng)驗(yàn)總結(jié)

    關(guān)于STM32的四嵌入式軟件 (

    關(guān)于STM32的四嵌入式軟件(
    的頭像 發(fā)表于 03-04 09:27 ?3059次閱讀

    如何在python中安裝和使用頂級算法?

    以及每種算法的不同配置。在本教程中,你將發(fā)現(xiàn)如何在 python 中安裝和使用頂級算法。 完成本教程后,你將知道: 聚是在輸入數(shù)據(jù)的特征空間中查找自然組的無監(jiān)督問題。 對于所有數(shù)據(jù)集,有許多不同的聚
    的頭像 發(fā)表于 03-12 18:23 ?2141次閱讀

    IC器件的元件如何創(chuàng)建

    對于IC器件的元件,通常采用封裝向?qū)нM(jìn)行創(chuàng)建,下面以REF2030AIDDCR為例。
    的頭像 發(fā)表于 10-10 14:53 ?1871次閱讀

    如何在 Python 中安裝和使用頂級算法

    有許多聚算法可供選擇,對于所有情況,沒有單一的最佳聚算法。相反,最好探索一系列聚算法以及每種算法的不同配置。在本教程中,你將發(fā)現(xiàn)如何在 python 中安裝和使用頂級
    的頭像 發(fā)表于 05-22 09:13 ?481次閱讀
    如何在 Python 中安裝和使用<b class='flag-5'>頂級</b>聚<b class='flag-5'>類</b>算法

    如何使用mbLib中的CMBMenu創(chuàng)建菜單

    電子發(fā)燒友網(wǎng)站提供《如何使用mbLib中的CMBMenu創(chuàng)建菜單.zip》資料免費(fèi)下載
    發(fā)表于 06-14 15:24 ?0次下載
    如何使用<b class='flag-5'>庫</b>mbLib中的CMBMenu<b class='flag-5'>類</b>創(chuàng)建菜單

    不同GPIO的區(qū)別

    重點(diǎn)來講解一下什么是,如何使用,以及不同的GPIO的區(qū)別。
    的頭像 發(fā)表于 07-02 15:03 ?831次閱讀
    不同GPIO<b class='flag-5'>類</b><b class='flag-5'>庫</b>的區(qū)別

    HarmonyOS語言基礎(chǔ)開發(fā)指南上線啦!

    語言基礎(chǔ)提供哪些功能?多線程并發(fā)如何實(shí)現(xiàn)?TaskPool(任務(wù)池)和Worker在實(shí)現(xiàn)和使用場景上有何不同? 針對開發(fā)者關(guān)注的并發(fā)等語言基礎(chǔ)的相關(guān)能力,我們在新推出的語言基礎(chǔ)
    的頭像 發(fā)表于 10-18 16:20 ?423次閱讀
    HarmonyOS語言基礎(chǔ)<b class='flag-5'>類</b><b class='flag-5'>庫</b>開發(fā)指南上線啦!

    鴻蒙OpenHarmony大合集:【語言基礎(chǔ)

    本示例集合語言基礎(chǔ)的各個(gè)子模塊,展示了各個(gè)模塊的基礎(chǔ)功能
    的頭像 發(fā)表于 04-29 16:38 ?403次閱讀
    鴻蒙OpenHarmony大合集:【語言基礎(chǔ)<b class='flag-5'>類</b><b class='flag-5'>庫</b>】