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
[edit ]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.[1]
| Components | Description | Latest version | Released |
|---|---|---|---|
| BCEL | Byte Code Engineering Library - analyze, create, and manipulate Java class files | 6.11.0 | 2025年10月09日 |
| BeanUtils | Easy-to-use wrappers around the Java reflection and introspection APIs | 1.11.0 | 2025年05月25日 |
| 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.11.0 | 2025年11月08日 |
| Codec | General encoding/decoding algorithms (for example phonetic, base64, URL) | 1.19.0 | 2025年07月19日 |
| Collections | Extends or augments the Java Collections Framework | 4.5.0 | 2025年04月19日 |
| Compress | Defines an API for working with TAR, ZIP and BZIP2 files | 1.28.0 | 2025年07月26日 |
| Configuration | Reading of configuration/preferences files in various formats | 2.13.0 | 2025年11月21日 |
| 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.1 | 2025年01月13日 |
| 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日 |
| Library for sending e-mails | 1.5 | 2017年08月01日 | |
| Exec | API for dealing with external process execution and environment management | 1.6.0 | 2025年11月25日 |
| FileUpload | File upload capability for servlets and web applications | 1.6.0 | 2025年06月05日 |
| 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-alpha6 | 2025年04月27日 |
| IO | Collection of I/O utilities | 2.21.0 | 2025年11月04日 |
| 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.6.0 | 2025年11月10日 |
| 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.20.0 | 2025年11月12日 |
| 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.12.0 | 2025年07月28日 |
| Numbers | Number types (complex, quaternion, fraction) and utilities (arrays, combinatorics) | 1.2 | 2024年08月12日 |
| Pool | Generic object pooling component | 2.13.0 | 2025年12月06日 |
| 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.2 | 2025年09月17日 |
| Text | Library focused on algorithms working on strings | 1.15.0 | 2025年12月04日 |
| Validator | Framework to define validators and validation rules in an XML file | 1.10.1 | 2025年11月14日 |
| 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
[edit ]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.
| 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
[edit ]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.
| 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
[edit ]References
[edit ]Goyal, Vikram (2003), Using the Jakarta Commons, Part I , retrieved August 13, 2006