Apache Commons Collections End of Life - Dates and Lifecycle
Apache Commons Collections is a Java library extending the core collections framework with additional data structures, utilities, and functional-style operations, widely used directly and as a transitive dependency across the Java ecosystem.
Last updated 29 July 2026
6
Versions tracked
4
At EOL
2
Supported
All versions
| Version | Released | Security Support | Latest |
|---|---|---|---|
|
4.5.0
|
19 Apr 2025 | — | — |
|
4.4
|
05 Jul 2019 |
19 Apr 2025
Ended 1 year, 3 months ago
|
— |
|
4.3
|
21 Dec 2018 |
05 Jul 2019
Ended 7 years ago
|
— |
|
4.2
|
11 Jul 2018 |
21 Dec 2018
Ended 7 years, 7 months ago
|
— |
|
4.1
|
28 Nov 2015 |
11 Jul 2018
Ended 8 years ago
|
— |
|
3.2.2
|
15 Nov 2015 | — | — |
About Apache Commons Collections
Apache Commons Collections is a Java library that extends the core Java Collections Framework with additional data structures, decorators, and utility methods, functionality like bags, bidirectional maps, and functional-style transformations that aren't part of the standard library. It's used directly by many Java applications and pulled in transitively by other widely used libraries, including Apache Commons BeanUtils, which is how it often ends up in a dependency tree without a team realizing it.
Apache Commons Collections Lifecycle Explained
Commons Collections exists as two separate, differently versioned lines that both trace back to the same codebase. The original line, packaged as org.apache.commons.collections, topped out at version 3.2.2 in November 2015 and has had no release since, it's fully end of life. The current line, packaged as org.apache.commons.collections4 starting at version 4.0 in 2013, remains the actively maintained one, though its own release cadence is slow, nearly six years passed between 4.4 (2019) and 4.5.0 (2025).
The reason both lines converged on a release in the same two-week window in November 2015 is a major security event. Several functor classes in the library, most notably InvokerTransformer, could be exploited through Java's object deserialization mechanism to achieve remote code execution in applications that deserialized untrusted data, even if the application never directly called the vulnerable classes itself. This became one of the most consequential Java library vulnerabilities of that era, affecting numerous products across the ecosystem that used Commons Collections somewhere in their dependency tree. Commons Collections 3.2.2 and 4.1 both shipped fixes for it, removing or restricting the dangerous serialization behavior.
The practical risk that follows from this history isn't really about the actively maintained 4.x line, it's about 3.x lingering as an invisible transitive dependency. Apache Commons BeanUtils, for example, has historically pulled in Commons Collections 3.x by default, meaning a project that never directly chose to depend on the old, end-of-life 3.x line can still end up shipping it, and by extension carrying its unpatched risk, simply by using BeanUtils. Development discussions around projects like JasperReports have explicitly flagged this exact situation as a reason to migrate away from BeanUtils versions that still require Collections 3.x.
Frequently Asked Questions
Is Apache Commons Collections 3.x end of life?
Yes. The 3.x line (package org.apache.commons.collections) reached its final release, 3.2.2, in November 2015, and has had no updates since. Downstream projects have explicitly described it as end of life in their own issue trackers.
What was the Commons Collections deserialization vulnerability?
In late 2015, security researchers found that several functor classes in the library, including InvokerTransformer, could be chained together through Java's object deserialization process to execute arbitrary code, even in applications that never directly used those classes. It became one of the most widely discussed Java library vulnerabilities of that period, since Commons Collections was such a common transitive dependency. Both the 3.x and 4.x lines shipped fixes within about two weeks of each other.
Why does my project still depend on Commons Collections 3.x?
Most commonly through Apache Commons BeanUtils, which has historically pulled in Commons Collections 3.x as a dependency. This means a project can end up shipping an end-of-life, previously RCE-vulnerable library without ever having added it directly, worth checking your dependency tree specifically for this rather than assuming your own direct dependencies tell the whole story.
Is Apache Commons Collections 4.x still maintained?
Yes, though releases are infrequent. Version 4.5.0 shipped in April 2025, but the gap between it and the previous release, 4.4 from 2019, was nearly six years. There's no formal support schedule, it's simply the actively maintained line, in contrast to the fully retired 3.x.