mrkeyoor.com_
Thu 05 Nov 16:47 UTC
Dev Toolsevaluationupdated 01 Nov 2026

guava review

Choose Guava when your Java application needs its specialized collections or concurrency utilities, and check the compatibility rules before exposing its types to callers. Guava includes multimap, multiset, immutable collections, a graph library, and concurrency utilities. Our run on October 10, 2026, at commit 6b3a8d7 built successfully but finished the test command with exit 1; it did not establish application performance or compatibility with your deployment.

+5stars / 7d
Verdict

Use Guava when a specific collection, graph or concurrency API justifies the dependency and its compatibility rules fit your project. Our October 10, 2026, run at commit 6b3a8d7 established a successful source build and a nonzero test result, with unresolved parser-summary differences. Check the actual failing reports before treating that commit as a clean baseline, and test your application separately.

We ran it

Lab card: what happened when we ran guavaScreenshot of guava (guava.dev)
Install✓ · 43s
Build✓ · 120s
Tests✗ · 759s4318517 passed · 3 failed · 1557 skipped of 4320077 (maven surefire)
Repo3352 files~798,169 lines of source · 35.5 MB · 2 CI workflows

Answers from our run

Does guava build from source?

Dependencies installed in 43 seconds, and the build succeeded in 120 seconds. We cloned commit 6b3a8d7 into a clean Debian container with 3 CPUs and no project-specific setup.

Do guava's tests pass?

No. The project's own test command finished in 759 seconds and reported 4318517 passed, 3 failed, 1557 skipped (maven surefire).

Who should not use guava?

Library authors who require stable contracts from APIs marked @Beta.

What are the alternatives to guava?

Caffeine, Apache Commons Collections. Use Guava when a specific collection, graph or concurrency API justifies the dependency and its compatibility rules fit your project.

Setup4/5Strong evidence with a material qualification: the recorded install and build succeeded, but the separate test command returned exit 1. This rates repository preparation, not consumer integration.
Docs5/5All assessed documentation criteria are evidenced: artifact selection, dependency examples, API references and explicit compatibility warnings. Tutorial completeness and every API page were not assessed.
Community5/5All narrowly assessed criteria are evidenced: documented reporting, questions, announcements and discussion channels, plus the supplied merged October 8 TreeMultiset contribution. Response times, contributor diversity and adoption remain unknown.
Maturity4/5Strong evidence with qualifications: the README commits to non-beta binary compatibility, but beta APIs and serialized forms have exceptions, and our measured commit has an unresolved nonzero test result.

Discussed on

  1. hnThe story of Google Guava and patches87 points
  2. hnGoogle opens up more of their core Java libraries60 points
  3. hnGuava: Google core libraries for Java49 points
  4. hnForget Guava: 5 Google Libraries Java Developers Should Know8 points
  5. hnGuava: Google Core Libraries for Java8 points

Who it’s for

Java developers with a specific need for Guava collections, graphs or concurrency utilities.
Android developers and library authors who can choose the Android flavor.
Library maintainers prepared to check API annotations and manage dependencies exposed to callers.

Who it’s NOT for

Library authors who require stable contracts from APIs marked @Beta.
Applications that assume serialized Guava objects will remain readable across future versions.
Developers seeking classes designed to protect against malicious callers.
Teams requiring verified filesystem behavior across platforms without testing their target environments.

Setup reality

In our sandbox, our run on October 10, 2026, at commit 6b3a8d7 installed in 43 seconds, built in 120 seconds, and returned test exit 1 after 759 seconds. The recorded configuration was 3 CPUs, 10 GB RAM and lab-jvm:21. The build log also identifies a downloaded JDK 27 toolchain, so the image name alone does not identify the compiler used.

The attached stored parser summaries report 4,318,517 passed, 3 failed, 1,557 skipped and 0 errors, with a total of 4,320,077. These are recorded parser summaries, not verified counts of unique or exhaustive tests. The raw test tail separately reports a failing Guava Unit Tests module; its footer has a different scope and does not reconcile the attached aggregate. We have not replaced the stored totals with that footer or added the two together.

For application use, the README documents Maven and Gradle dependencies for 33.7.2-jre and 33.7.2-android. Installing the published dependency into an application was not measured by this repository run.

Use Guava for a requirement you can name

Guava includes multimap, multiset, immutable collections, a graph library, and concurrency utilities. Choose it when one of those capabilities addresses your application’s needs. Before adding the dependency, identify the API you intend to use and whether its types will appear in your own public API.

This review concerns the source repository and its documented compatibility rules. It does not compare Guava operations with modern JDK implementations or establish that either option is faster.

Our sandbox built the commit, but tests did not finish successfully

In our sandbox, our run on October 10, 2026, at commit 6b3a8d7 installed in 43 seconds, built in 120 seconds, and returned test exit 1 after 759 seconds. This is the existing stored execution, not a new run. The matching full commit is 6b3a8d7498a7fde122967ba37a023ba3dcb47792.

Our harness records each command’s success flag, exit code, elapsed time and timeout status, alongside parsed test summaries and retained log tails. The install and build commands returned zero; the test command returned one without timing out. The build tail explicitly says tests were skipped during that step, so its successful module summary does not establish passing tests.

The attached stored parser summaries report 4,318,517 passed, 3 failed, 1,557 skipped and 0 errors, with a total of 4,320,077. They do not establish unique or exhaustive coverage. Separately, the raw test tail identifies Guava Unit Tests as a failing module. Its module footer differs from the attached aggregate, and the excerpt does not identify the failing test assertions. We cannot reconcile the summaries or determine the failure’s cause from the supplied tails. Skipped tests are not failures.

The recorded sandbox had 3 CPUs, 10 GB RAM and the lab-jvm:21 image. The build tail identifies a downloaded JDK 27 toolchain compiling with target 1.8. Treat the toolchain evidence separately from the container label.

The testing methodology explains how MrKeyoor records command outcomes and the limits of a sandbox result. That page was retrieved after this run; its current configuration is not evidence that the October execution used today’s procedure. This run did not measure collection throughput, application startup, Android behavior, production deployment or resistance to hostile input. The audit field is null, and dependency scan coverage is unknown.

Choose the artifact and check the API contract

The Guava README documents 33.7.2-jre for a Java 8+ JRE and 33.7.2-android for Android or libraries that need Android compatibility. Its Gradle examples distinguish implementation dependencies from Guava types exposed through a public API. Our source build does not measure either consumer installation route.

Guava permits APIs marked @Beta to change or disappear at any time. The README advises library authors whose users control the classpath to avoid those APIs unless they repackage them. It also links a Beta Checker. Non-beta APIs have a stated binary-compatibility commitment, with an explicit reservation for serious surprises such as security problems.

Serialized forms may change unless documented otherwise. Do not make future readability of persisted Guava objects a storage assumption. The README also says its classes are not designed to protect against malicious callers and warns that some I/O features may behave incorrectly outside Linux. Test the particular API and platform you intend to ship.

Compare alternatives by the part you need

Caffeine provides an in-memory cache using a Guava-inspired API. Compare it when caching is the requirement. Its documented Guava adapters also make it a possible complement to an application that retains Guava for collections. This evidence does not establish a replacement for Guava’s entire utility library or a measured performance advantage in your workload. See the Caffeine README.

Apache Commons Collections extends and augments the Java Collections Framework. Compare it for a collections requirement, checking the exact types and operations your application needs. That collection-focused role does not establish a replacement for Guava’s graph or concurrency utilities. See the Apache Commons Collections README.

How to read the scores

These are narrow editorial ratings, not benchmarks or adoption measurements. On the five-point rubric, 1 means major observed obstacles, 2 means substantial gaps, 3 means usable evidence with unresolved gaps, 4 means strong evidence with a material qualification, and 5 means all criteria for the stated dimension are evidenced. An unknown dimension receives no numerical score.

Setup ease is 4: installation and compilation succeeded, but the test command failed. Documentation is 5 for the assessed scope of artifact selection, dependency examples, API references and compatibility warnings; tutorial completeness was not assessed. Community is 5 for the assessed scope of documented support channels and visible contribution activity: the README lists issue reporting, questions, announcements and discussion channels, and the supplied TreeMultiset pull request was merged on October 8, 2026. This does not measure contributor diversity, response time or adoption. Maturity is 4: the non-beta compatibility commitment is useful, while beta and serialization exceptions and our unresolved test result qualify the assessment.

Before adopting Guava, choose the flavor, inspect the annotations on your intended APIs and exercise them in your application. Before using this source commit as a contributor baseline, obtain the complete failing-test reports and investigate the nonzero test result.

Alternatives

ProjectWhat it isPick it when
CaffeineAn in-memory caching library with a Guava-inspired API and documented Guava adapters.Compare it when caching is the requirement. It can complement Guava collections; it is not a replacement for the entire library.
Apache Commons CollectionsTypes that extend and augment the Java Collections Framework.Compare it for collection types and operations, after checking the exact API you need. Its documented scope does not replace Guava graph or concurrency utilities.

Sources

  1. Guava README and compatibility warnings
  2. Guava v33.7.2 release
  3. TreeMultiset validation change
  4. Guava repository activity
  5. Caffeine README
  6. Apache Commons Collections
  7. Eclipse Collections

More dev tools reviews

api-guidelines · 90DaysOfDevOps · dracula-theme · sandcastle · SimpleEnglish · QuickLook · the whole board →