Stackify is now BMC. Read theBlog

Three Favorite Open Source Java Libraries

By: Alexandra
  |  March 4, 2024
Three Favorite Open Source Java Libraries

I’ve used a number of Java open source libraries over the years in a variety of projects. Java developers are lucky to have a long list of community libraries to pull from. Here are a few standouts that have made their way into virtually all of my new development. These were chosen because they have clean interfaces, provide significant value, are well tested, and most of all … help me write less code.

google-guava  Google Guava

This one is probably at the top of a lot of developer’s lists. Back in my C/C++ days, we had Boost. Early in my Java days, we used Apache Commons. Now, Google Guava is the primary core/utility library for Java. If you ever find yourself writing anything that could be common to the Java language, look here first.

Here are a few classes from Guava that I’m always using:

Use the Optional class instead of using null:

Use the Preconditions class to validate parameters and fail fast:

google-guice  Google Guice

Pick up any kind of OO textbook and you will see something like “separate interface from implementation”. Got it … create an interface that the callers will use and implement the interface with a concrete class that is abstracted away from the caller. The next part of the problem, which is usually left out of the discussion, is who/what provides the implementation class to the caller. This is where Dependency Injection (DI) comes in.

Take a look at Guice Modules to bind interfaces to implementations:

And the @Singleton, @Inject and @Provides annotations to get started:

lombok  Lombok

Lombok is fairly new to me, but it has quickly became a favorite. Lombok is a set of annotations that are processed at compile time to generate ‘boilerplate’ code. This will result in smaller classes (especially POJO value objects) that are easier to maintain.

Take a look at @Data and stop writing getters, setters, equals(), hashCode(), and toString()

Use @Builder to make your value objects immutable and provide a builder pattern:

Honorable Mentions

Here are a few other projects that didn’t make my top 3 but are definitely worth looking at:



Jackson JSON Processor


Eric Martin

Principal Engineer / Stackify

Improve Your Code with Retrace APM

Stackify's APM tools are used by thousands of .NET, Java, PHP, Node.js, Python, & Ruby developers all over the world.
Explore Retrace's product features to learn more.

Learn More

Want to contribute to the Stackify blog?

If you would like to be a guest contributor to the Stackify blog please reach out to [email protected]