按功能劃分的常用Java庫

日誌打印

使用slf4j作爲日誌門面API,常用的日誌實現庫爲log4jlogback

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.36</version>
</dependency>

<!-- 使用logback作爲底層日誌實現框架,需要在classpath路徑下包含配置文件logback.xml -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.3.14</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.3.14</version>
</dependency>

<!-- 使用log4j1.2.x版本作爲底層日誌實現框架,需要在classpath路徑下包含配置文件log4j.properties -->
<dependency> 
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.7.36</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

<!-- 使用log4j2.x版本作爲底層日誌實現框架,需要在classpath路徑下包含配置文件log4j2.xml -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.12.4</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.12.4</version>
</dependency>

JSON解析

可以使用JacksonGson或者FastJson作爲JSON解析庫。
其中FastJson又分爲fastjson1和fastjson2兩個版本。

<!-- 使用jackson解析json -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.17.0</version>
</dependency>

<!-- 使用gson解析json -->
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>

<!-- 使用fastjson2解析json -->
<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.47</version>
</dependency>

<!-- 使用fastjson1解析json -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>2.0.47</version>
</dependency>

XML解析

Apache Xerces2解析器是XNI的參考實現,Dom4j也是另一個常用於Java應用程序的靈活XML框架。

<!-- Xerces2 -->
<dependency>
    <groupId>xerces</groupId>
    <artifactId>xercesImpl</artifactId>
    <version>2.12.2</version>
</dependency>

<!-- Dom4j -->
<dependency>
    <groupId>org.dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>2.1.4</version>
</dependency>

HTML解析

jsoup極大地簡化了在Java應用程序中使用HTML,使用jsoup不僅解析HTML,還可以創建HTML文檔。
jsoup實現了WHATWG HTML5規範並將HTML解析爲與現代瀏覽器相同的 DOM。

<!-- jsoup -->
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.17.2</version>
</dependency>

辦公文檔處理

Apache POI是處理Microsoft文檔的Java API,EasyExcel支持Excel大文件處理。
iTextApache FOP則可以支持PDF文檔處理。

<!-- apache poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.5</version>
</dependency>

<!-- easyexcel -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.3.4</version>
</dependency>

<!-- itextpdf -->
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13.3</version>
</dependency>

<!-- fop -->
<dependency>
    <groupId>org.apache.xmlgraphics</groupId>
    <artifactId>fop</artifactId>
    <version>2.9</version>
</dependency>

單元測試

可以使用的測試庫有:JUnitMockitoPowerMock
其中JUnit常用的版本又分爲:Junit3,Junit4,Junit5。

<!-- Junit -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.2</version>
    <scope>test</scope>
</dependency>

<!-- Mockito -->
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>5.11.0</version>
    <scope>test</scope>
</dependency>

<!-- Powermock -->
<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-core</artifactId>
    <version>2.0.9</version>
    <scope>test</scope>
</dependency>

HTTP客戶端

JDK自帶HttpURLConnection,Apache HttpComponents HttpClientOkHttp支持http2,Feign是更高層次封裝的接口框架,是一個完全可以基於註解配置的API庫,底層的通信實現可以基於HTTPURLConnection,Apache HttpClient,OKHttp,甚至是Java11 Http2。

<!-- httpclient  -->
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.14</version>
</dependency>

<!-- okhttp -->
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.12.0</version>
</dependency>

<!-- feign -->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-core</artifactId>
    <version>13.2.1</version>
</dependency>

字節碼處理

Javassist使Java字節碼操作變得非常簡單,它是一個用於在Java中編輯字節碼的類庫,ASM是另一個有用的字節碼編輯庫。
Cglib也是一個流行的字節碼庫。

<!-- javassist -->
<dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.30.2-GA</version>
</dependency>

<!-- asm -->
<dependency>
    <groupId>org.ow2.asm</groupId>
    <artifactId>asm</artifactId>
    <version>9.6</version>
</dependency>

<!-- cglib -->
<dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib</artifactId>
    <version>3.3.0</version>
</dependency>

數據庫連接池

一些流行連接池庫如下:
Commons Pool是一個通用的對象池
DBCP是一個基於Commons Pool的數據庫連接池
HikariCP也是一個高性能的數據庫連接池
Druid號稱是一個爲監控而生的數據庫連接池
Tomcat JDBC Pool是Tomcat組件提供的數據庫連接池

<!-- commons-pool2 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
    <version>2.12.0</version>
</dependency>

<!-- commons-dbcp2 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-dbcp2</artifactId>
    <version>2.12.0</version>
</dependency>

<!-- HikariCP -->
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>5.1.0</version>
</dependency>

<!-- druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.22</version>
</dependency>

<!-- tomcat-jdbc -->
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jdbc</artifactId>
    <version>8.5.99</version>
</dependency>

JDBC故障排除

有一些很好的JDBC擴展庫可以讓調試更容易,比如P6spy,它可以無縫攔截和記錄數據庫數據,而無需更改應用程序的代碼。您可以使用它們來記錄 SQL 查詢及其時間。
例如,如果在代碼中使用PreparedStatment和CallableStatement,P6spy可以記錄帶有參數的準確調用以及執行所需的時間。

<!-- p6spy -->
<dependency>
    <groupId>p6spy</groupId>
    <artifactId>p6spy</artifactId>
    <version>3.9.1</version>
</dependency>

集合處理

java.util包下是JDK自帶的集合框架,包含:List,Map,Queue,Set,Stack,Vector等。
Commons Collections是對JDK集合框架的擴展和增強。
Guava是Google開源的Java工具類庫集合,涉及IO,緩存,集合等,支持在Android平臺使用。

<!-- commons-collections4 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.4</version>
</dependency>

<!-- guava -->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>33.1.0-jre</version>
</dependency>

郵件發送

javax.mailApache Commons Email都提供了用於從Java發送電子郵件的 API 。

<!-- javax.mail -->
<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
</dependency>

<!-- commons-email -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-email</artifactId>
    <version>1.6.0</version>
</dependency>

加解密

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

<!-- commons-codec -->
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.16.1</version>
</dependency>

序列化

Google Protobuf是一種以高效且可擴展的格式對結構化數據進行編碼的方法,它是Java序列化的更豐富和更好的替代方案。
需要使用protobuf編譯器編譯protobuf描述文件。

<!-- protobuf-java -->
<dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java</artifactId>
    <version>4.26.0</version>
</dependency>

網絡編程

如果正在編寫需要執行低級網絡任務的應用程序,請考慮使用NettyApache MINA

<!-- netty-all -->
<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-all</artifactId>
    <version>4.1.108.Final</version>
</dependency>

<!-- mina-core -->
<dependency>
    <groupId>org.apache.mina</groupId>
    <artifactId>mina-core</artifactId>
    <version>2.2.3</version>
</dependency>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章