| <?xml version="1.0" encoding="ISO-8859-1"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <document> |
| |
| <properties> |
| <title>History</title> |
| <author email="dev@commons.apache.org">Commons Documentation Team</author> |
| </properties> |
| |
| <body> |
| |
| <section name="History of Commons Collections"> |
| |
| <p> |
| Commons-Collections is a classic example of an open-source project evolving over time. |
| This page documents some of the key stages. |
| </p> |
| |
| <p> |
| <b>Collections 1.0</b> was a gathering of different Collection, Comparator, Iterator and |
| Utility classes written elsewhere in Jakarta. |
| At this stage, the component focussed mainly on getting re-use of code by making |
| everything available together. |
| </p> |
| <p> |
| All classes were placed in one package except the comparators, which had their own subpackage. |
| </p> |
| |
| <p> |
| <b>Collections 2.0</b> started the process of growth. The Bag interface was added with |
| various implementations. Also added were additional collections implementations. |
| </p> |
| <p> |
| All classes were placed in one package except the comparators, which had their own subpackage. |
| </p> |
| |
| <p> |
| <b>Collections 2.1</b> increased the growth again. The Buffer interface was added, unifying |
| various previous implementations. Numerous decorators were added as inner classes that |
| behave like the unmodifiable or synchronized JDK decorators. |
| </p> |
| <p> |
| As the size of the component increased, the iterators were broken out into their own subpackage. |
| Thus there were now three packages, main, comparator and iterator. |
| </p> |
| |
| <p> |
| <b>Collections 3.0</b> represented a re-birth of collections after an 18 month absence. |
| Many, many classes were added to CVS but not released including primitive and |
| event-generating classes. In order to control the size of the collections distribution, |
| these became two new projects - primitives and events. |
| </p> |
| <p> |
| New interfaces BidiMap, MapIterator, ResettableIterator and KeyValue were added. |
| Also added were many new implementations of existing collections, especially Maps. |
| </p> |
| <p> |
| As more decorators were added the decision was taken to create a new subpackage for |
| the decorators (no more inner classes). However, it became clear that whether a class was |
| a decorator or not was not the most important division in finding a collection. |
| As a result of this, and the general ongoing growth in the component, a full subpackage |
| layout was chosen - one subpackage for each principal collections interface. |
| </p> |
| <p> |
| Essentially the 3.0 release represented the result of changing from a 'dumping ground' |
| of re-used collections to a component <b>designed</b> for the purpose. |
| Of course, backwards compatibility has been retained during all transitions using deprecation. |
| </p> |
| |
| <p> |
| <b>Collections 2.1.1</b> was a patch release to v2.1. |
| Unfortunately, v3.0 created a <a href="compatibility.html">binary incompatibility</a> in the IteratorUtils class. |
| This patch was created as a work around, enabling v2.1.1 to be compatible with v3.1. |
| </p> |
| |
| <p> |
| <b>Collections 3.1</b> fixed some bugs in v3.0 and adds a few new enhancements. |
| The most notable change is a new list implementation, TreeList, that is well balanced for insertions and removals at any index. |
| Other changes included more classes implementing Serializable and a ReferenceIdentityMap. |
| </p> |
| |
| <p> |
| <b>Collections 3.2</b> combined bug fixes and some new features. |
| Notably MultiValueMap is a new more flexible implementation of MultiHashMap. |
| </p> |
| |
| <p> |
| <b>Collections 3.2.1</b> Re-packaged v3.2 release which is OSGi enabled. |
| </p> |
| |
| </section> |
| |
| </body> |
| </document> |