Guava 谷歌核心 Java 库
Guava 是 Google 开源的 Java 核心工具库,提供不可变集合、Multimap/Multiset 等新集合类型、图结构库,以及并发、I/O、哈希、原生类型与字符串处理等实用工具,被 Google 内部及大量企业 Java 项目广泛使用。
爱鲜报评分
0 人评分
52k
星数
否
中文
Java
主语言
是
活跃
500
贡献者
人工分析
EDITORIAL推荐理由
Guava 是 Java 生态中事实上的基础工具库,几乎每个中大型 Java 项目都会直接或间接依赖它。它补齐了 JDK 在集合、缓存、并发与字符串处理上的诸多短板,API 设计成熟稳定,文档与社区资源丰富。对于想提升代码可读性与健壮性的 Java 开发者,值得系统学习并纳入日常工具箱。
适用场景
- Java 后端服务开发中的通用工具封装
- 需要不可变集合与防御性编程的库或 SDK 开发
- 本地缓存、限流、并发编排等基础能力搭建
- 图结构建模与算法(如依赖关系、路径分析)
- Android 应用开发(使用 android 变体)
优点
- Google 长期维护,社区庞大、Star 数超 5 万,可靠性高
- 功能覆盖面广,集合、缓存、并发、I/O、哈希一站式解决
- 非 @Beta API 长期保持二进制兼容,升级风险可控
- 同时提供 JRE 与 Android 两种变体,适配面广
- 文档完善,guava.dev 支持按类名直达 Javadoc
缺点
- 部分 API 标注 @Beta,可能随时变更甚至移除,库作者需谨慎使用
- 序列化形式不保证跨版本兼容,不宜持久化存储
- 类设计不防御恶意调用方,不适合在可信与不可信代码间传递
- com.google.common.io 部分功能在非 Linux 环境可能表现异常
- 体积与依赖需评估,Android 项目应选用 android 变体避免方法数问题
Guava 是什么
Guava 是 Google 开源的 Java 核心库集合,为 JDK 补充了大量实用能力:新的集合类型(Multimap、Multiset)、不可变集合、图结构库,以及并发、I/O、哈希、原生类型和字符串处理等工具。它在 Google 内部几乎所有 Java 项目中广泛使用,也被大量外部公司采用。
两种变体
Guava 提供两个版本,通过 Maven 版本号后缀区分:
- JRE 版:要求 JDK 1.8 及以上,版本形如
33.7.2-jre - Android 版:面向 Android 或需要与 Android 兼容的库,版本形如
33.7.2-android
Android 版源码位于仓库的 android 目录。
引入方式
Maven 坐标的 groupId 为 com.google.guava,artifactId 为 guava:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>33.7.2-jre</version>
</dependency>
Gradle 中可按需选择 implementation 或 api,Android 项目则替换为 -android 后缀版本。
文档与快照
- 官方站点 guava.dev 提供 API 文档,可直接在域名后拼接类名跳转,例如
guava.dev/ImmutableList - master 分支快照版本为
999.0.0-HEAD-jre-SNAPSHOT(Android 版对应-android-SNAPSHOT) - 用户指南见 wiki 中的 Guava Explained
使用前必读的注意事项
- @Beta API 不稳定:类或方法级标注
@Beta的 API 可能被任意修改甚至移除。若你的代码本身是被他人依赖的库,强烈建议使用 Guava Beta Checker 检查,避免对外暴露 Beta API。 - 非 Beta API 长期兼容:未标注
@Beta的 API 将无限期保持二进制兼容,@Deprecated的 API 也会保留(Beta 除外)。 - 运行时依赖:链接期需要
com.google.guava:failureaccess:1.0.3,另有若干仅注解依赖。 - 序列化不保证兼容:除非特别说明,所有对象的序列化形式都可能变化,不要持久化后假设未来版本可读。
- 不防御恶意调用方:这些类并非为可信与不可信代码之间的通信而设计。
- 平台差异:主线版本在 Linux 与 Windows 的多种 OpenJDK 上测试,
com.google.common.io的部分功能在非 Linux 环境可能不正常;Android 版单测覆盖到 API 24。
适合谁
如果你在写 Java 后端服务、基础库或 Android 应用,希望用更简洁、更安全的 API 处理集合、缓存、并发与字符串,Guava 是值得系统掌握的基建库。
评论
- 暂无评论,来写第一条吧。