更多精彩原创内容请关注:JavaInterview,欢迎 star,支持鼓励以下作者,万分感谢。
题外话
今天是母亲节,在这里提醒大家记得给自己的母亲送祝福哦!!!
背景
在 Java 开发工作中,我们接触了很多的 Jar 包,也使用了很多第三方 Jar 包,为了帮助大家统计整理,方便大家查找,故通过该文章来进行一次总结。
commons-lang
该工具包可以看成是对 java.lang 的扩展。提供了诸如 StringUtils, StringEscapeUtils, RandomStringUtils, Tokenizer, WordUtils 等工具类。
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.10</version>
</dependency>
commons-collections
该工具包看成是 java.util 的扩展,大大简化了我们对 Java 集合的使用。
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
commons-math
该工具包专注于做数学工具,功能强大。
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
<version>3.6.1</version>
</dependency>
commons-compress
该工具包是一个压缩、解压缩文件的类库。可以操作ar, cpio, Unix dump, tar, zip, gzip, XZ, Pack200 and bzip2格式的文件,功能比较强大。
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-compress -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.20</version>
</dependency>
commons-io
该工具包可以看成是java.io的扩展,让我们对文件操作更加方便。
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
commons-fileupload
该工具包封装了文件上传下载组件。
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
commons-pool
Java 中创建新的对象并初始化的操作,可能会消耗很多的时间。工作中如果需要频繁创建并使用这些对象的场景中,为了提供系统性能,通常的做法是,创建一个对象池,将一定数量的对象缓存到这个对象池中。需要使用时直接从对象池中取出对象,使用完后将对象扔回到对象池中即可。
Apache的commons pool组件是实现对象池技术的良好助手。
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.8.0</version>
</dependency>
HttpClient
该工具包封装了 Http 网络请求,使大家更方便地通过编程去实现网络请求交互。
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency>
OkHttp
以下是 OkHttp 的官网介绍。
OkHttp is an HTTP client that’s efficient by default:
- HTTP/2 support allows all requests to the same host to share a socket.
- Connection pooling reduces request latency (if HTTP/2 isn’t available).
- Transparent GZIP shrinks download sizes.
- Response caching avoids the network completely for repeat requests.
OkHttp是一个高效的HTTP客户端,它有以下默认特性:
- 支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接。
- 连接池减少请求延时。(在 HTTP/2 不可用的情况下)
- 透明的GZIP压缩减少响应数据的大小。
- 缓存响应内容,避免一些完全重复的请求。
<!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.6.0</version>
</dependency>
RxJava
Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.
JVM响应式扩展类库——一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库。
RxJava 使用观察者模式,让异步编程变得更简洁。
<!-- https://mvnrepository.com/artifact/io.reactivex.rxjava2/rxjava -->
<dependency>
<groupId>io.reactivex.rxjava2</groupId>
<artifactId>rxjava</artifactId>
<version>2.2.19</version>
</dependency>
Guava
Guava 是 Google 的工具类,提供字符串处理,I/O,集合类相关操作。
JDK8 里面的很多实现,其实在 Guava 里面都实现过,一个非常优秀的库,推荐去看看源码实现。
Guava的优点:
- 高效设计良好的API,被Google的开发者设计,实现和使用。
- 遵循高效的java语法实践。
- 使代码更优秀,简洁,简单。
- 节约时间,资源,提高生产力。
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>29.0-jre</version>
</dependency>
hutool
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
Hutool中的工具方法来自于每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;
Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。
<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.3</version>
</dependency>
Netty
Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.
Netty 是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。
非常优秀的源码,推荐看源码。我最近也在花时间看这部分源码,受益匪浅。
<!-- https://mvnrepository.com/artifact/io.netty/netty-all -->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.49.Final</version>
</dependency>
poi
Excel、Word、PPT 等开发工具类。
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
commons-csv
如果只是操作 CSV 文件的话,建议使用该文件。
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-csv -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.8</version>
</dependency>
讨论
大家有更多优秀工具类,欢迎在下方讨论。
更多原创好文,可以关注我的公众号:
Tommy 学习录
网友评论