文章目录GuavaJava 工程师的常备工具箱1、 这玩意儿是干嘛的2、 为什么值得装3、 两个版本要分清4、 用之前要知道的坑5、 适合谁用GuavaJava 工程师的常备工具箱Guava 在 GitHub 上已经积累了 51.5K Star。Google 开源这套 Java 核心库本来是给自己内部项目用的后来开放给所有人。它解决的是 Java 标准库够不到的那一层问题集合类型不够用、并发工具太薄、字符串处理写起来啰嗦。写 Java 的人多少都遇到过这些磕绊。1、 这玩意儿是干嘛的一句话给 Java 标准库打补丁。JDK 自带的集合就那几种想用个双向映射、带重复元素的集合、或者图结构得自己撸。Guava 直接把这些常用又缺的东西做成了现成类Multimap、Multiset、BiMap、Graph拿来即用。还有不可变集合、缓存、哈希工具、字符串连接器、事件总线全是日常工程里高频出现但 JDK 没现成方案的环节。2、 为什么值得装写 Java 的人多半有过这种体验一个MapK, ListV写下来取值要判空、初始化、再 add三步代码做一件事。换成Multimap一行multimap.put(key, value)就完事。再比如Strings.isNullOrEmpty、Joiner、Splitter比 JDK 自带的String.split行为稳定得多不会让你踩正则的坑。并发表里ConcurrentHashMap够用但不够顺手。Guava 的LoadingCache把过期、刷新、统计都封装好了写本地缓存基本不用再自己造轮子。ListenableFuture在CompletableFuture出现之前是异步编程的主力现在依然有不少老项目在用。3、 两个版本要分清Guava 发布分 JRE 和 Android 两个 flavor。JRE 版要 JDK 1.8 以上功能最全Android 版做了裁剪能在 API level 23 那种老设备上跑。Maven 坐标里的版本号会标出来33.6.0-jre或33.6.0-android引依赖的时候别引错。Maven 引法dependencygroupIdcom.google.guava/groupIdartifactIdguava/artifactIdversion33.6.0-jre/version/dependencyGradleimplementation(com.google.guava:guava:33.6.0-jre)4、 用之前要知道的坑README 里写得挺直白挑几条关键的标了Beta注解的 API 随时会改、随时会删。如果你的代码会被别人当依赖引用别用Beta接口否则下游升级时容易炸。Google 还专门做了个guava-beta-checker工具帮库作者扫这个。没标Beta的 API 承诺长期二进制兼容连Deprecated的都留着不动。这点对老项目很友好升级版本不至于大面积改代码。所有对象的序列化格式不保证稳定别把 Guava 对象持久化到磁盘再指望后续版本能读回来。Guava 自己有个运行时依赖failureaccess:1.0.3引 Guava 会自动带进来做依赖收敛时记得留它。5、 适合谁用写 Java 后端、天天跟集合和并发打交道的开发者装上顺手就能少写一堆样板代码。做 Android 应用、SDK 体积敏感的项目挑 Android flavor按需挑不挑Beta都要先看一眼。维护老的 JDK 1.8 项目、又想用现代工具的Guava 是少有的能一直跟到老的平台库。新手入门想系统性了解看官方的 Guava Explained 文档比网上的二手博客靠谱很多。能一直跟到老的平台库。新手入门想系统性了解看官方的 Guava Explained 文档比网上的二手博客靠谱很多。
Guava:Java 工程师的常备工具箱
发布时间:2026/7/8 14:16:38
文章目录GuavaJava 工程师的常备工具箱1、 这玩意儿是干嘛的2、 为什么值得装3、 两个版本要分清4、 用之前要知道的坑5、 适合谁用GuavaJava 工程师的常备工具箱Guava 在 GitHub 上已经积累了 51.5K Star。Google 开源这套 Java 核心库本来是给自己内部项目用的后来开放给所有人。它解决的是 Java 标准库够不到的那一层问题集合类型不够用、并发工具太薄、字符串处理写起来啰嗦。写 Java 的人多少都遇到过这些磕绊。1、 这玩意儿是干嘛的一句话给 Java 标准库打补丁。JDK 自带的集合就那几种想用个双向映射、带重复元素的集合、或者图结构得自己撸。Guava 直接把这些常用又缺的东西做成了现成类Multimap、Multiset、BiMap、Graph拿来即用。还有不可变集合、缓存、哈希工具、字符串连接器、事件总线全是日常工程里高频出现但 JDK 没现成方案的环节。2、 为什么值得装写 Java 的人多半有过这种体验一个MapK, ListV写下来取值要判空、初始化、再 add三步代码做一件事。换成Multimap一行multimap.put(key, value)就完事。再比如Strings.isNullOrEmpty、Joiner、Splitter比 JDK 自带的String.split行为稳定得多不会让你踩正则的坑。并发表里ConcurrentHashMap够用但不够顺手。Guava 的LoadingCache把过期、刷新、统计都封装好了写本地缓存基本不用再自己造轮子。ListenableFuture在CompletableFuture出现之前是异步编程的主力现在依然有不少老项目在用。3、 两个版本要分清Guava 发布分 JRE 和 Android 两个 flavor。JRE 版要 JDK 1.8 以上功能最全Android 版做了裁剪能在 API level 23 那种老设备上跑。Maven 坐标里的版本号会标出来33.6.0-jre或33.6.0-android引依赖的时候别引错。Maven 引法dependencygroupIdcom.google.guava/groupIdartifactIdguava/artifactIdversion33.6.0-jre/version/dependencyGradleimplementation(com.google.guava:guava:33.6.0-jre)4、 用之前要知道的坑README 里写得挺直白挑几条关键的标了Beta注解的 API 随时会改、随时会删。如果你的代码会被别人当依赖引用别用Beta接口否则下游升级时容易炸。Google 还专门做了个guava-beta-checker工具帮库作者扫这个。没标Beta的 API 承诺长期二进制兼容连Deprecated的都留着不动。这点对老项目很友好升级版本不至于大面积改代码。所有对象的序列化格式不保证稳定别把 Guava 对象持久化到磁盘再指望后续版本能读回来。Guava 自己有个运行时依赖failureaccess:1.0.3引 Guava 会自动带进来做依赖收敛时记得留它。5、 适合谁用写 Java 后端、天天跟集合和并发打交道的开发者装上顺手就能少写一堆样板代码。做 Android 应用、SDK 体积敏感的项目挑 Android flavor按需挑不挑Beta都要先看一眼。维护老的 JDK 1.8 项目、又想用现代工具的Guava 是少有的能一直跟到老的平台库。新手入门想系统性了解看官方的 Guava Explained 文档比网上的二手博客靠谱很多。能一直跟到老的平台库。新手入门想系统性了解看官方的 Guava Explained 文档比网上的二手博客靠谱很多。