Back to
top
常用 jar 包总结 - 杨挺的博客 | Tommy's Blog

常用 jar 包总结

"第三方 jar 包总结"

Posted by Tommy on May 10, 2020

题外话

今天是母亲节,在这里提醒大家记得给自己的母亲送祝福哦!!!

背景

在 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>

讨论

大家有更多优秀工具类,欢迎在下方讨论。