• 首页

  • 分类

  • 归档

  • 随笔

  • 关于
h a s a k i
h a s a k i

阿波

我单手握着方向盘没跟谁比赛

09月
21

站在巨人肩膀上-开源Java类库

发表于 2020-09-21 • 字数统计 4974 • 被 625 人看爆

合理使用开源的Java库,避免重复造轮子。

Google Guava

项目地址: https://github.com/google/guava

概述

Guava是Google的一组核心Java库,其中包括新的集合类型(例如multimap和multiset),不可变的集合,图形库以及用于并发,I/O,哈希,缓存,基元,字符串等的实用程序!它广泛用于Google的大多数Java项目中,并且也被许多其他公司广泛使用。

构建

maven依赖

<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>29.0-jre</version>
</dependency>

Gradle依赖

dependencies {
  // Pick one:

  // 1. Use Guava in your implementation only:
  implementation("com.google.guava:guava:29.0-jre")

  // 2. Use Guava types in your public API:
  api("com.google.guava:guava:29.0-jre")
  
}

官方文档

API地址: https://guava.dev/releases/snapshot-jre/api/docs/

差异对照: https://guava.dev/releases/snapshot-jre/api/diffs/

wiki地址: https://github.com/google/guava/wiki

中文文档: https://ifeve.com/google-guava/

核心API

1. 基本工具 [Basic utilities]

让使用Java语言变得更舒适

1.1 使用和避免null:null是模棱两可的,会引起令人困惑的错误,有些时候它让人很不舒服。很多Guava工具类用快速失败拒绝null值,而不是盲目地接受

1.2 前置条件: 让方法中的条件检查更简单

1.3 常见Object方法: 简化Object方法实现,如hashCode()和toString()

1.4 排序: Guava强大的”流畅风格比较器”

1.5 Throwables:简化了异常和错误的传播与检查

2. 集合[Collections]

Guava对JDK集合的扩展,这是Guava最成熟和为人所知的部分

2.1 不可变集合: 用不变的集合进行防御性编程和性能提升。

2.2 新集合类型: multisets, multimaps, tables, bidirectional maps等

2.3 强大的集合工具类: 提供java.util.Collections中没有的集合工具

2.4 扩展工具类:让实现和扩展集合类变得更容易,比如创建Collection的装饰器,或实现迭代器

3. 缓存[Caches]

Guava Cache:本地缓存实现,支持多种缓存过期策略

4. 函数式风格[Functional idioms]

Guava的函数式支持可以显著简化代码,但请谨慎使用它

5. 并发[Concurrency]

强大而简单的抽象,让编写正确的并发代码更简单

5.1 ListenableFuture:完成后触发回调的Future

5.2 Service框架:抽象可开启和关闭的服务,帮助你维护服务的状态逻辑

6. 字符串处理[Strings]

非常有用的字符串工具,包括分割、连接、填充等操作

7. 原生类型[Primitives]

扩展 JDK 未提供的原生类型(如int、char)操作, 包括某些类型的无符号形式

8. 区间[Ranges]

可比较类型的区间API,包括连续和离散类型

9. I/O

简化I/O尤其是I/O流和文件的操作,针对Java5和6版本

10. 散列[Hash]

提供比Object.hashCode()更复杂的散列实现,并提供布鲁姆过滤器的实现

11. 事件总线[EventBus]

发布-订阅模式的组件通信,但组件不需要显式地注册到其他组件中

12. 数学运算[Math]

优化的、充分测试的数学工具类

13. 反射[Reflection]

Guava 的 Java 反射机制工具类

Hutool

项目地址: https://github.com/looly/hutool

概述

Hutool是一个小而全的Java工具类库 ,原本由个人开发者工作项目剥离,后由社区开发者参与完善。Hutool是实用工具类的合集,比较贴近实际项目。

构建

Maven构建:

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.3.7</version>
</dependency>

Gradle构建:

compile 'cn.hutool:hutool-all:5.3.7'

官方文档

中文文档: https://hutool.cn/docs/#/

参考API: https://apidoc.gitee.com/loolly/hutool/

视频说明: https://www.bilibili.com/video/BV1bQ4y1M7d9?p=2

核心API

一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:

模块介绍
hutool-aopJDK动态代理封装,提供非IOC下的切面支持
hutool-bloomFilter布隆过滤,提供一些Hash算法的布隆过滤
hutool-cache简单缓存实现
hutool-core核心,包括Bean操作、日期、各种Util等
hutool-cron定时任务模块,提供类Crontab表达式的定时任务
hutool-crypto加密解密模块,提供对称、非对称和摘要算法封装
hutool-dbJDBC封装后的数据操作,基于ActiveRecord思想
hutool-dfa基于DFA模型的多关键字查找
hutool-extra扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码、Emoji、FTP、分词等)
hutool-http基于HttpUrlConnection的Http客户端封装
hutool-log自动识别日志实现的日志门面
hutool-script脚本执行封装,例如Javascript
hutool-setting功能更强大的Setting配置文件和Properties封装
hutool-system系统参数调用封装(JVM信息等)
hutool-jsonJSON实现
hutool-captcha图片验证码实现
hutool-poi针对POI中Excel和Word的封装
hutool-socket基于Java的NIO和AIO的Socket封装

可以根据需求对每个模块单独引入,也可以通过引入hutool-all方式引入所有模块。

分享到:
设计原则与设计模式.md
查看某个可执行命令所在的目录
  • 文章目录
  • 站点概览
阿波

yoyoyo~

Email
看爆 Top5
  • 获取两个map的并集、差集、交集 746次看爆
  • 站在巨人肩膀上-开源Java类库 626次看爆
  • kafka安装及使用 395次看爆
  • SpringBoot集成kafka 361次看爆
  • 设计原则与设计模式.md 337次看爆

站点已萌萌哒运行 00 天 00 小时 00 分 00 秒(●'◡'●)ノ♥

Copyright © 2022 阿波 鄂ICP备2020017654号-1

由 Halo 强力驱动 · Theme by Sagiri · 站点地图