按功能划分的常用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>

反射工具

使用reflections库可以实现Java运行时元数据分析。
另外,spring-core也自带了一个反射工具ReflectionUtils。

<!-- reflections -->
<dependency>
    <groupId>org.reflections</groupId>
    <artifactId>reflections</artifactId>
    <version>0.10.2</version>
</dependency>

<!-- spring core -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.3.29</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>
posted @ 2024-03-23 23:26  nuccch  阅读(14)  评论(0编辑  收藏  举报