116 lines
4.3 KiB
XML
116 lines
4.3 KiB
XML
<?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>
|
|
|
|
<p>
|
|
<b>Collections 3.3</b> provides more bug fixes and a few enhancements.
|
|
Notably some crucial classes became Serializable.
|
|
</p>
|
|
|
|
</section>
|
|
|
|
</body>
|
|
</document>
|