【本文目录】
作为一名开发,好的工具类可以极大的提升我们的开发效率,在Java中,我们最常用的三方工具类,最著名的无非Apache Commons和Guava。
Apache Commons 最初是作为 Jakarta 项目的一个补充核心 Java 集合 API 的项目,最终成为 Apache 软件基金会的一个项目
Apache Commons is an Apache project focused on all aspects of reusable Java components. —— apache官网
译:Apache Commons 专注于提供各个方面的Java组件库。 (Apache Commons曾隶属于Jakarta项目)
它的各个很多,很全面,以下是当前Apache Commons已完成孵化的项目,其中日常工作比较常用的加粗标识。
组件 | 用途 |
---|---|
BECL | 字节码操作,类似Javassist |
BeanUtils | 反射操作 |
BSF | Python等脚本的引擎的实现 |
Chain | 一个责任链模式的实现 ( 可参考之前Mybatis源码系列的责任链文 ) |
CLI | 用于解析传递给程序的命令行命令 |
Codec | 编/解码工具 |
Collections | 集合工具类 |
Compress | 压缩/解压工具类 |
Configuration | 从各类源读取配置 |
Crypto | 加密库 |
CSV | CSV文件工具类 |
Daemon | 将一个普通的java 应用程序作为linux 或windows的守护进程服务 |
DBCP | 数据库连接池实现 ( 可参考之前Mybatis源码系列的JDBC文 ) |
DbUtils | DB工具 |
Digester | XML-java对象的解析器 ( 可参考之前Mybatis源码系列的XML文 ) |
Email工具类 | |
Exec | 对Java的Runtime封装 |
FileUpload | 文件上传工具 |
Functor | 对函数式编程支持但是官网提供的api已经无法再maven 仓库找到,可能已经不再支持 |
Geometry | 几何学,空间/坐标类 |
Imaging | 图像处理类 |
IO | IO工具类 |
JCI | 规范Java编译接口 已有Groovy编译器等实现 |
JCS | 一个JAVA缓存实现 |
Jelly | 一种将 XML 转换为可执行代码的工具 |
Jexl | 基于 JSTL表达式语言的一些 扩展的表达式语言 |
JXPath | 可使用XPath语法操作Java Bean |
Lang | 对java.lang.*下的方法扩展 包括字符串/反射/时间等。 |
Logging | JCL 前文Mybatis源码系列Log篇可参考 |
Math | 数学运算工具 |
Net | 网络工具类 |
Numbers | 复数,分数,向量,组合等 |
OGNL | OGNL表达式支持 |
Pool | 通用的池化工具 |
Proxy | 动态代理实现 |
RNG | 随机数生成器 |
SCXML | 基于xml的通用状态机 |
Statistics | 从Math脱离出来的统计学部分 |
Text | 专注于字符串算法 |
Validator | 一个可配置的(通常是 XML)验证引擎 |
VFS | 虚拟文件系统组件 |
Weaver | 字节码增强 |
Guava 是一组来自 Google 的核心 Java 库,其中包括新的集合类型(例如 multimap 和 multiset)、不可变集合、图形库以及用于并发、I/O、散列、缓存、原语、字符串等的实用程序。
组件 | 用途 |
---|---|
Basic Utilities | 基础工具,包含Ordering,Optional Throwables等 |
Collections | Guava 对 JDK 集合生态系统的扩展 |
Graphs | 图形建模库 |
Cache | 本地缓存实现 |
Functional idioms | 函数式编程 |
Strings | 字符串工具 |
Concurrency | 并发工具类 |
Primitives | 原生类型,包括不可变集合等 |
Range | 范围工具类 |
Hashing | hash运算工具类 提供md5,sha1等hash实现 |
I/O | IO工具类, 提供Sink,Source抽象 |
EventBus | 基于观察者模式的消息通知组件 |
Math | 数据运算工具 |
Reflection | 反射工具类 |
apache commons与guava都是优秀且有着强大技术背景的开源工具库,相较而言,如果对JDK规范本身具有认同感的开发者显然Guava是更好的选择,反之,则是Apache Commons。当然两者之间没有交集的部分其实更多,混用也是一种不错的选择(前提是我们对他们的特性足够了解)。