AX 爱鲜报

Guava 谷歌核心 Java 库

Guava 是 Google 开源的 Java 核心工具库,提供不可变集合、Multimap/Multiset 等新集合类型、图结构库,以及并发、I/O、哈希、原生类型与字符串处理等实用工具,被 Google 内部及大量企业 Java 项目广泛使用。

爱鲜报评分

0.0

0 人评分

开源 · Apache-2.0 #Java #Google #并发 #工具库 #集合

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

使用前必读的注意事项

  1. @Beta API 不稳定:类或方法级标注 @Beta 的 API 可能被任意修改甚至移除。若你的代码本身是被他人依赖的库,强烈建议使用 Guava Beta Checker 检查,避免对外暴露 Beta API。
  2. 非 Beta API 长期兼容:未标注 @Beta 的 API 将无限期保持二进制兼容,@Deprecated 的 API 也会保留(Beta 除外)。
  3. 运行时依赖:链接期需要 com.google.guava:failureaccess:1.0.3,另有若干仅注解依赖。
  4. 序列化不保证兼容:除非特别说明,所有对象的序列化形式都可能变化,不要持久化后假设未来版本可读。
  5. 不防御恶意调用方:这些类并非为可信与不可信代码之间的通信而设计。
  6. 平台差异:主线版本在 Linux 与 Windows 的多种 OpenJDK 上测试,com.google.common.io 的部分功能在非 Linux 环境可能不正常;Android 版单测覆盖到 API 24。

适合谁

如果你在写 Java 后端服务、基础库或 Android 应用,希望用更简洁、更安全的 API 处理集合、缓存、并发与字符串,Guava 是值得系统掌握的基建库。

评论

登录后才可评论与评分

0 条评论

  • 暂无评论,来写第一条吧。