guava README

The project's README from github.com/google/guava. As one markdown file: README.md.

Guava: Google Core Libraries for Java

GitHub Release CI OpenSSF Best Practices

Guava is a set of core Java libraries from Google that includes new collection types (such as multimap and multiset), immutable collections, a graph library, and utilities for concurrency, I/O, hashing, primitives, strings, and more! It is widely used on most Java projects within Google, and widely used by many other companies as well.

Guava comes in two flavors:

Adding Guava to your build

Guava's Maven group ID is com.google.guava, and its artifact ID is guava. Guava provides two different "flavors": one for use on a (Java 8+) JRE and one for use on Android or by any library that wants to be compatible with Android. These flavors are specified in the Maven version field as either 33.7.1-jre or 33.7.1-android. For more about depending on Guava, see using Guava in your build.

To add a dependency on Guava using Maven, use the following:

<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>33.7.1-jre</version>
  <!-- or, for Android: -->
  <version>33.7.1-android</version>
</dependency>

To add a dependency using Gradle:

dependencies {
  // Pick one:

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

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

  // 3. Android - Use Guava in your implementation only:
  implementation("com.google.guava:guava:33.7.1-android")

  // 4. Android - Use Guava types in your public API:
  api("com.google.guava:guava:33.7.1-android")
}

For more information on when to use api and when to use implementation, consult the Gradle documentation on API and implementation separation.

Snapshots and Documentation

Snapshots of Guava built from the master branch are available through Maven using version 999.0.0-HEAD-jre-SNAPSHOT, or 999.0.0-HEAD-android-SNAPSHOT for the Android flavor.

Snapshot API Javadoc as well as Snapshot API Diffs are also available.

Another easy way to get to the Javadoc is to open guava.dev/api. You can also jump right to a specific class by appending the class name to guava.dev. For example, guava.dev/ImmutableList!

Learn about Guava

IMPORTANT WARNINGS

  1. APIs marked with the @Beta annotation at the class or method level are subject to change. They can be modified in any way, or even removed, at any time. If your code is a library itself (i.e., it is used on the CLASSPATH of users outside your own control), you should not use beta APIs unless you repackage them. If your code is a library, we strongly recommend using the Guava Beta Checker to ensure that you do not use any @Beta APIs!

  2. APIs without @Beta will remain binary-compatible for the indefinite future. (Previously, we sometimes removed such APIs after a deprecation period. The last release to remove non-@Beta APIs was Guava 21.0.) Even @Deprecated APIs will remain (again, unless they are @Beta). We have no plans to start removing things again, but officially, we're leaving our options open in case of surprises (like, say, a serious security problem).

  3. Guava has one dependency that is needed for linkage at runtime: com.google.guava:failureaccess:1.0.3. It also has some annotation-only dependencies, which we discuss in more detail at that link.

  4. Serialized forms of ALL objects are subject to change unless noted otherwise. Do not persist these and assume they can be read by a future version of the library.

  5. Our classes are not designed to protect against a malicious caller. You should not use them for communication between trusted and untrusted code.

  6. For the mainline flavor, we test the libraries using a range of OpenJDK versions on Linux and Windows. Some features, especially in com.google.common.io, may not work correctly in non-Linux environments. For the Android flavor, our unit tests also run on API level 24 (Nougat).

guava (google/guava)

Searching Database…

51.9K ·GitHub
Что это такое?Guava — это набор базовых библиотек Java от Google. Она добавляет новые типы коллекций (мультимап, мультимножество), неизменяемые коллекции, библиотеку для работы с графами и утилиты для конкурентности, ввода-вывода, хеширования, примитивов и строк. Google активно использует её внутри компании, как и многие другие компании.
Это фреймворк или просто утилитарная библиотека?Это утилитарная библиотека, которую вы подключаете как зависимость, а не фреймворк. У неё нет жизненного цикла приложения и среды выполнения, которым нужно следовать, есть только классы и вспомогательные методы, которые вы вызываете из своего кода.
Как подключить её к проекту?Добавьте Guava как зависимость Maven или Gradle, указав groupId com.google.guava и artifactId guava, и выберите суффикс версии под нужный вариант (например, 33.7.1-jre).
Какая версия Java или вариант библиотеки мне нужны?Вариант для JRE требует JDK 1.8 или выше. Если нужна поддержка Android, используйте вариант для Android, который также запускает свои тесты на API уровня 24 (Nougat).
На что стоит обратить внимание при использовании API Guava?API, помеченные @Beta, могут быть изменены или удалены в любой момент, поэтому авторам библиотек лучше их не использовать (или перепаковать), если только они не применяют Guava Beta Checker. API без @Beta при этом остаются совместимыми на уровне бинарного кода бессрочно.
Кто обычно использует Guava?Она рассчитана на разработчиков Java, которым нужны проверенные временем типы коллекций и утилиты. Её широко используют внутри Google и многие сторонние компании.
Guava работает одинаково в Windows и Linux?В основном да, но некоторые возможности, особенно в com.google.common.io, могут работать некорректно вне Linux. Основной вариант библиотеки тестируется на разных версиях OpenJDK как в Linux, так и в Windows.
Безопасно ли использовать Guava с недоверенным кодом?Нет. Классы Guava не предназначены для защиты от вредоносных вызывающих сторон, поэтому их не следует использовать как границу между доверенным и недоверенным кодом.
У Guava есть собственные зависимости времени выполнения?Да, одна: для связывания во время выполнения нужна com.google.guava:failureaccess:1.0.3, а также несколько зависимостей только для аннотаций, которые описаны в документации.
Можно ли полагаться на сериализованные объекты Guava между версиями?Нет. Сериализованная форма всех объектов Guava может меняться, если явно не указано иное, поэтому не стоит сохранять их, рассчитывая на совместимость в будущем.
Где найти полную документацию по API?Javadoc доступен по адресу guava.dev/api, а перейти к конкретному классу можно напрямую, например guava.dev/ImmutableList. Есть также руководство для пользователей под названием Guava Explained.
Что происходит с устаревшими API (не-Beta)?Они остаются в библиотеке бессрочно: Guava перестала удалять API без @Beta после версии 21.0 и не планирует возобновлять удаление, за исключением редких случаев с безопасностью.
Creator
google
Size
1.4 GB
Stars
51.9K
Age
12y
Commits · 90 Days