Apache Commons

The Apache Commons is a project of the Apache Software Foundation, formerly under the Jakarta Project. The purpose of the Commons is to provide reusable, open source Java software. The Commons is composed of three parts: proper, sandbox, and dormant.

Commons Proper

The Commons Proper is dedicated to creating and maintaining reusable Java components. The Commons Proper is a place for collaboration and sharing, where developers from throughout the Apache community can work together on projects to be shared by Apache projects and Apache users.

Commons developers will make an effort to ensure that their components have minimal dependencies on other software libraries, so that these components can be deployed easily. In addition, Commons components will keep their interfaces as stable as possible, so that Apache users, as well as other Apache projects, can implement these components without having to worry about changes in the future.[http://commons.apache.org/ The Apache Commons root page]

class="wikitable sortable"

! Components

! Description

! Latest version

! Released

BCEL

| Byte Code Engineering Library - analyze, create, and manipulate Java class files

| 6.10.0

| 2024-07-13

BeanUtils

| Easy-to-use wrappers around the Java reflection and introspection APIs

| 1.10.1

| 2025-01-31

BSF

| Bean Scripting Framework - interface to scripting languages, including JSR-223

| 3.1

| 2011-08-17

Chain

| Chain of Responsibility pattern implementation

| 1.2

| 2008-06-01

CLI

| Command Line arguments parser

| 1.9.0

| 2024-08-10

Codec

| General encoding/decoding algorithms (for example phonetic, base64, URL)

| 1.18.0

| 2025-01-24

Collections

| Extends or augments the Java Collections Framework

| 4.5.0-M2

| 2024-06-15

Compress

| Defines an API for working with TAR, ZIP and BZIP2 files

| 1.27.1

| 2024-08-16

Configuration

| Reading of configuration/preferences files in various formats

| 2.11.0

| 2024-06-07

Crypto

| Cryptographic library optimized with AES-NI wrapping OpenSSL or JCE algorithm implementations

| 1.2.0

| 2023-01-14

CSV

| Component for reading and writing comma separated value files

| 1.14.0

| 2025-03-15

Daemon

| Generic Daemon (unix) or Service (Windows) wrapper for Java code

| 1.4.0

| 2024-05-24

DBCP

| Database connection pooling services

| 2.13.0

| 2024-11-26

DbUtils

| JDBC helper library

| 1.8.1

| 2023-09-09

Digester

| XML-to-Java-object mapping utility

| 3.2

| 2011-12-13

Email

| Library for sending e-mails

| 1.5

| 2017-08-01

Exec

| API for dealing with external process execution and environment management

| 1.4.0

| 2024-01-01

FileUpload

| File upload capability for servlets and web applications

| 1.5

| 2023-02-13

Functor

| Supports functional programming using functors, objects representing functions

| 1.0 RC1

| 2011-10-20

Geometry

| General-purpose library for geometric processing

| 1.0

| 2021-08-21

Imaging

| Pure-Java image library

| 1.0-alpha5

| 2024-04-15

IO

| Collection of I/O utilities

| 2.19.0

| 2025-04-08

JCI

| Java Compiler Interface

| 1.1

| 2013-10-14

JCS

| Java Caching System

| 3.2.1

| 2024-05-27

Jelly

| XML based scripting and processing engine

| 1.0.1

| 2017-09-25

JEXL

| Expression language which extends the Expression Language of the JSTL

| 3.5.0

| 2025-04-11

JXPath

| Utilities for manipulating Java Beans using the XPath syntax

| 1.4.0

| 2025-04-12

Lang

| Provides extra functionality for classes in java.lang

| 3.17.0

| 2024-08-24

Logging

| Wrapper around a variety of logging API implementations

| 1.3.5

| 2025-01-31

Math

| Lightweight, self-contained mathematics and statistics components

| 4.0-beta1

| 2022-12-20

Net

| Collection of network utilities and protocol implementations

| 3.11.1

| 2024-06-07

Numbers

| Number types (complex, quaternion, fraction) and utilities (arrays, combinatorics)

| 1.2

| 2024-08-12

Pool

| Generic object pooling component

| 2.12.1

| 2025-01-19

Proxy

| Library for creating dynamic proxies

| 2.0-RC1

| 2014-04-07

RDF

| Common implementation of RDF 1.1 that could be implemented by systems on the JVM

| 0.5.0

| 2017-12-08

RNG

| Implementions of pseudo-random numbers generators

| 1.6

| 2024-07-15

SCXML

| Implementation of the State Chart XML specification aimed at creating and maintaining a Java SCXML engine

| 2.0-M1

| 2014-04-03

Statistics

| Utilities for statistical applications

| 1.1

| 2024-08-20

Text

| Library focused on algorithms working on strings

| 1.13.1

| 2025-04-07

Validator

| Framework to define validators and validation rules in an XML file

| 1.8.0

| 2023-12-02

VFS

| Virtual File System component for treating files, FTP, SMB, ZIP and such like as a single logical file system

| 2.10.0

| 2025-02-01

Weaver

| Provides an easy way to enhance (weave) compiled bytecode

| 2.0

| 2018-09-07

Commons Sandbox

The Commons Sandbox provides a workspace where Commons contributors collaborate and experiment on projects not included in the Commons Proper. Commons members champion projects in the Sandbox for promotion to the Commons Proper, and groups of developers work to enhance Sandbox projects until they meet the standards for promotion.

class="wikitable"

! Components

! Description

BeanUtils2

| Redesign of Commons BeanUtils

ClassScan

| Find Class interfaces, methods, fields, and annotations without loading

CLI2

| Redesign of Commons CLI

Convert

| Aims to provide a single library dedicated to the task of converting an object of one type to another

Finder

| Java library inspired by the UNIX find command

Flatfile

| Java library for working with flat data structures

Graph

| General purpose Graph APIs and algorithms

I18n

| Adds the feature of localized message bundles that consist of one or many localized texts that belong together

Id

| Component for generating identifiers

Inject

|Implementation of JSR 330, a standards compliant dependency injection framework

Javaflow

| Continuation implementation to capture the state of the application

JNet

| Allows using dynamically registered URL stream handlers through the java.net API

Monitoring

|Aims to provide a simple but extensible monitoring solution for Java applications

Nabla

| Provides automatic differentiation classes that can generate derivative of any function implemented in the Java language

OpenPGP

| Interface to signing and verifying data using OpenPGP

Performance

| Small framework for microbenchmark clients, with implementations for Commons DBCP and Pool

Pipeline

| Provides a set of pipeline utilities designed around work queues that run in parallel to sequentially process data objects

Commons Dormant

The Commons Dormant is a collection of components that have been declared inactive due to little recent development activity. These components may be used, but must be built yourself. It is best to assume that these components will not be released in the near future.

class="wikitable"

! Components

! Description

Attributes

| Runtime API to metadata attributes such as doclet tags

Betwixt

| Services for mapping JavaBeans to XML documents and vice versa

Cache

| Provides object caching services

Clazz

| Focuses on introspection and class manipulation

Contract

| Component for making features that come along with contract based programming available

Convert

| Aims to provide a single library dedicated to the task of converting an object of one type to another

Discovery

|Tools for locating resources by mapping service/reference names to resource names

EL

|Interpreter for the Expression Language defined by the JSP 2.0 specification

Events

| Provides additional classes for firing and handling events. It focuses on the Java Collections Framework, providing decorators to other collections that fire events.

Feedparser

| RSS and Atom parser designed to support all major versions of RSS and Atom, as well as easy ad hoc extension and RSS 1.0 modules capability

JJar

| Jakarta JAR Archive Repository

Latka

| HTTP functional testing suite for automated QA, acceptance and regression testing

Launcher

|Cross platform Java application launcher

Mapper

| Thin abstraction layer around a project's chosen data mapping technology (a.k.a. DAO pattern)

Messenger

| Easy to use and lightweight framework for working with JMS in the web tier

Modeler

|Mechanisms to create Model MBeans compatible with JMX specification

OGNL

| Object-Graph Navigation Language

Primitives

|Smaller, faster and easier to work with types supporting Java primitive types

Resources

| Provides a lightweight framework for defining and looking up internationalized message strings keyed by a java.util.Locale and a message key

Scaffold

| Toolkit for building web applications

ThreadPool

| Simple component for asynchronously dispatching work to another thread in a pool for simple multithreaded programming

Transaction

| Implementations for multi-level locks, transactional collections and transactional file access

Workflow

| Provides a framework for building workflow management systems

XMLIO

| Simple and fast importer for XML configuration or import files

See also

References

{{Reflist}}

{{Citation|last=Goyal|first=Vikram|url=http://www.onjava.com/pub/a/onjava/2003/06/25/commons.html|title=Using the Jakarta Commons, Part I|access-date=August 13, 2006|year=2003}}