Guava 是 Google 的一套核心 Java 库,包括新的集合类型(如 multimap 和 multiset)、图库,以及用于并发、I/O、散列、缓存、基元、字符串等实用工具。它被广泛用于 Google 内部的 Java 项目,同时也被许多其他公司广泛使用。
目前,Guava 32.0 已发布,该版本带来以下变更:
安全修复
- 重新实现了
Files.createTempDir
和FileBackedOutputStream
,以进一步解决 CVE-2020-8908 和 Guava issue #2575 (CVE 即将发布)。
不兼容的更改
此版本增加了 Guava 的主要版本号,但没有对 guava
工件进行二进制不兼容的更改。尽管如此,此版本还是进行了一些可能有兼容风险 的更改:
- 此版本对单独的工件
guava-testlib
中的@Beta
API 进行了二进制不兼容的更改。 - 此版本为 Guava 的 Android 风格添加了两个方法:
Invokable.getAnnotatedReturnType()
和Parameter.getAnnotatedType()
。 - 此版本从
guava-gwt
中删除了各种 API,这只会影响 GWT 的用户,删除的 API 是Enums
、Sets.complementOf
和Enum*BiMap
类的keyType()
和valueType()
方法。 Files.createTempDir
和FileBackedOutputStream
的新实现被注释为@J2ObjCIncompatible
。- 新版本的
Files.createTempDir
限制当前用户的权限,它可能会破坏任何依赖于让其他用户访问该目录的用户。 - 如果新版本的
Files.createTempDir
和FileBackedOutputStream
无法安全地创建目录或文件,则会抛出异常。这只有在 Android Ice Cream Sandwich 下才有可能发生。
其他变化
- 从几乎所有 API 中删除了
@Beta
。 - 增强了 Guava jar ,以包含由 Android Gradle 插件自动获取的 Proguard 配置。
- 增强了 Guava jar 以在其类文件中包含有关方法参数的信息。
- 改进了一些类的空值注释。
- 使用“串行代理”修改类,以声明抛出异常的
readObject
方法。 - 改进了一些类的空值注释。
- ...
完整的更改项请在更新公告中查看。
猜你喜欢:暂无回复。