David's Blog

Apache Commons A Deep Dive into the Essential Java Libraries

By David Li on 2024-04-21T20:28:26.000Z

Apache Commons: A Deep Dive into the Essential Java Libraries


The Apache Commons project is a collection of open-source Java libraries developed by the Apache Software Foundation. These libraries provide reusable components that simplify Java software development and reduce the amount of boilerplate code that developers need to write. They offer a wide range of functionalities, from basic utilities and data structures to more specialized libraries for mathematical operations, file handling, and networking.

This article will provide an overview of some of the most widely used Apache Commons libraries, along with code examples to demonstrate their usage.

Apache Commons Lang

Apache Commons Lang is a library that provides a set of utility classes and methods for common programming tasks, such as string manipulation, number conversion, and working with dates and time.


StringUtils is a class that provides utility methods for working with Strings. Here are a few examples of its usage:

import org.apache.commons.lang3.StringUtils;

public class StringUtilsExample {
    public static void main(String[] args) {
        String str = "  Apache Commons Lang  ";
        // Trim whitespace from both ends of the string
        String trimmed = StringUtils.trim(str); // "Apache Commons Lang"

        // Check if a string is empty, including whitespace
        boolean isEmpty = StringUtils.isBlank(str); // false

        // Count the occurrences of a substring in a string
        int count = StringUtils.countMatches("ababa", "ab"); // 1

        // Replace all occurrences of a substring in a string
        String replaced = StringUtils.replace("ababa", "ab", "cd"); // "cdaba"


NumberUtils is a utility class for working with numbers, including conversions and comparisons. Here are a few examples of its usage:

import org.apache.commons.lang3.math.NumberUtils;

public class NumberUtilsExample {
    public static void main(String[] args) {
        // Convert a string to an int, with a default value
        int intValue = NumberUtils.toInt("123", 0); // 123
        int defaultValue = NumberUtils.toInt("NaN", 0); // 0

        // Find the minimum or maximum value in a set of numbers
        int min = NumberUtils.min(3, 5, 1, 7); // 1
        int max = NumberUtils.max(3, 5, 1, 7); // 7

Apache Commons IO

Apache Commons IO is a library that provides utility classes and methods for handling input/output operations, such as working with files, directories, and streams.


FileUtils is a utility class for working with files and directories. Here are a few examples of its usage:

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;

public class FileUtilsExample {
    public static void main(String[] args) {
        File source = new File("source.txt");
        File destination = new File("destination.txt");

        try {
            // Copy a file
            FileUtils.copyFile(source, destination);

            // Read a file into a string
            String content = FileUtils.readFileToString(source, Charset.defaultCharset());

            // Write a string to a file
            FileUtils.writeStringToFile(destination, content, Charset.defaultCharset());

            // Delete a file or directory
        } catch (IOException e) {

Apache Commons Collections

Apache Commons Collections is a library that provides additional data structures and utility classes for working with Java Collections Framework.


MultiMap is an interface that represents a map with multiple values for a single key. Here’s an example of using a MultiValueMap, an implementation of MultiMap:

import org.apache.commons.collections4.MultiMap;
import org.apache.commons.collections4.map.MultiValueMap;

public class MultiMapExample {
    public static void main(String[] args) {
        MultiMap<String, Integer> multiMap = new MultiValueMap<>();

        multiMap.put("one", 1);
        multiMap.put("one", 11);
        multiMap.put("two", 2);

        System.out.println(multiMap.get("one")); // [1, 11]
        System.out.println(multiMap.get("two")); // [2]


In this article, we’ve explored a small subset of the wide range of functionality provided by the Apache Commons libraries. By leveraging these libraries, developers can save time and effort, reduce boilerplate code, and focus on the core logic of their applications. For more information and additional libraries within the Apache Commons project, visit the official documentation.

© Copyright 2023 by Astro Tech Blog. Built with ♥ by FriendlyUser. Last updated on 2023-05-25.