按功能划分的常用Java库
日志打印
使用slf4j作为日志门面API,常用的日志实现库为log4j和logback。
<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解析
可以使用Jackson,Gson或者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大文件处理。
iText和Apache 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>
单元测试
可以使用的测试库有:JUnit,Mockito,PowerMock。
其中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 HttpClient,OkHttp支持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.mail和Apache 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>
网络编程
如果正在编写需要执行低级网络任务的应用程序,请考虑使用Netty和Apache 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>
作者:编程随笔
出处:http://www.cnblogs.com/nuccch/
声明:本文版权归作者和博客园共有,欢迎转载,但请在文章页面明显位置给出原文连接。