home | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Commons Collections example source code file (compatibility.xml)

This example Commons Collections source code file (compatibility.xml) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Commons Collections tags/keywords

apache, as, asf, asf, commons, commons, license, license, see, the, the, two, version, you

The Commons Collections compatibility.xml source code

<?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


   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   See the License for the specific language governing permissions and
   limitations under the License.


  <author email="dev@commons.apache.org">Commons Documentation Team


<section name="Version compatibility of Commons Collections">

This page details the compatibility of different collections releases.

There are two types of compatibility discussed here, source and binary.
 Two versions are source compatible when application code can be compiled
 against either version successfully. The compilation may result in deprecation warnings
 but that is perfectly acceptable.
 When code is source incompatible, it fails to compile, thus this type of incompatibility is easy to find.
 Two versions are binary compatible when application code compiled against
 one version will run using the other version without recompilation.
 This is much more difficult to test for, and follows quite complicated rules from the
 <a href="http://java.sun.com/docs/books/jls/second_edition/html/binaryComp.doc.html">Java language.
Releases of commons collections aim to be source and binary compatible within minor versions,
and to avoid breakages as much as possible between major versions.

Commons collections 3.0 is source compatible with version 2.1 and 2.0 with the exception
of classes previously deprecated in 2.0/2.1 (which were removed in 3.0).

Commons collections 3.0 is binary compatible with version 2.1 and 2.0
<b>except for certain methods on one class.
As the release was a major version, this is permitted, however it was unintentional and an error.
The problem is in the <b>IteratorUtils class (see methods below).
(Strictly speaking, there are some minor incompatibilities on other classes, but these
changes were deliberate and have not caused any known issues.)

It is not possible to make v2.1 and v3.0 compatible without futher binary incompatibility.
The chosen solution is to provide a work around by releasing v2.1.1 and v3.1.
The following deprecations must be resolved in v2.1.1 to allow compatibiilty with v3.1.
<li>Deprecated IteratorUtils.arrayIterator(...) -
     use <code>new ArrayIterator(...) instead
<li>Deprecated IteratorUtils.singletonIterator(...) -
     use <code>new SingletonIterator(...) instead
<li>Deprecated IteratorUtils.emptyIterator() -
     use <code>EmptyIterator.INSTANCE instead
<li>Deprecated IteratorUtils.emptyListIterator() -
     use <code>EmptyListIterator.INSTANCE instead
<li>Deprecated IteratorUtils.EMPTY_ITERATOR -
     use <code>EmptyIterator.INSTANCE instead
<li>Deprecated IteratorUtils.EMPTY_LIST_ITERATOR -
     use <code>EmptyIterator.INSTANCE instead

For the future, a new tool <a href="http://clirr.sourceforge.net">clirr is being developed
to help spot binary incompatibility before release.



Other Commons Collections examples (source code examples)

Here is a short list of links related to this Commons Collections compatibility.xml source code file:

my book on functional programming


new blog posts


Copyright 1998-2019 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.