About this project

Guava is a set of core Java libraries from Google. It provides new collection types such as multimap and multiset, immutable collections, a graph library, and utilities for concurrency, I/O, hashing, primitives, strings, and more. According to the README, it is widely used on most Java projects within Google and by many other companies as well. Guava comes in two flavors. The JRE flavor requires JDK 1.8 or higher. For Android support, an Android flavor is available, with source in the android directory of the repository. Adding Guava to a build: the Maven group ID is com.google.guava and the artifact ID is guava. The two flavors are specified in the Maven version field as 33.7.1-jre or 33.7.1-android. Maven and Gradle dependency snippets are provided in the README, including guidance on when to use api versus implementation in Gradle. Snapshots 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 and API diffs are also available. Javadoc can be reached at guava.dev/api, and a specific class can be opened by appending its name to guava.dev. Learning resources include the users' guide, Guava Explained, and a collection of other helpful links. The project links to its GitHub project, issue tracker, StackOverflow tag, and the guava-announce and guava-discuss Google groups. The README lists important warnings. APIs marked with the @Beta annotation at class or method level are subject to change and may be modified or removed at any time; library authors are advised not to use beta APIs unless they repackage them, and a Guava Beta Checker is recommended. APIs without @Beta are stated to remain binary-compatible for the indefinite future, and even @Deprecated APIs will remain unless they are @Beta. Guava has one dependency needed for linkage at runtime, com.google.guava:failureaccess:1.0.3, plus some annotation-only dependencies. Serialized forms of all objects are subject to change unless noted otherwise, so they should not be persisted with the assumption that a future version can read them. The classes are not designed to protect against a malicious caller and should not be used for communication between trusted and untrusted code. For the mainline flavor, the libraries are tested using a range of OpenJDK versions on Linux and Windows, and some features, especially in com.google.common.io, may not work correctly in non-Linux environments. For the Android flavor, unit tests also run on API level 24 (Nougat).