Skip to content
Ben Yu edited this page Aug 17, 2020 · 17 revisions

Welcome to Mug!

Mug is a small complementary library to Guava.

Why Mug when there's Guava?

We expect you to use Guava already and Mug's goal is to fill in some blanks.

In javadoc we may talk about how to compose or interact with Guava classes here and there, but there is no compile-time dependency on Guava. If you are not using Guava, Mug can still be used independently.

We try to avoid reinventing wheels. If a utility is provided in Guava, you'll unlikely find it in Mug (with the exception of Walker, which offers a Stream-centric API similar to Guava's Iterable-based Traveser, and some extra functionalities).

Eventually some of these classes may graduate into Guava (like BiStream), in which case, we'll start deprecating them from Mug.

Compatibility and API Stability

While Guava is a lot more versatile and portable, Mug focuses on Java 8+ (streams, optionals), and for JVM only. It doesn't compile for Java 7, and there is no guaranteed compatibility with other platforms like Android, or GWT.

Mug doesn't provide API stability guarantee as strongly as Guava, where non-Beta APIs are frozen and cannot change. Mug APIs may be deprecated as we see fit. In other words, all Mug APIs are implicitly @Beta.