<!--
    ***************************************************************
    * 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.
    ***************************************************************
-->
<html>
<head>
  <title>API Change Report - Apache UIMA uimaFIT</title>
</head>
<body>
<h1>Apache UIMA (Unstructured Information Management Architecture) uimaFIT API Change Report</h1>

<h2>Contents</h2>
<p>
<a href="#description">What is an API change report?</a><br/>
<a target="_blank" href="uimafit-core/api-change-report/japicmp.html">API Changes: uimafit-core</a><br/>
<a target="_blank" href="uimafit-cpe/api-change-report/japicmp.html">API Changes: uimafit-cpe</a><br/>
<a target="_blank" href="uimafit-spring/api-change-report/japicmp.html">API Changes: uimafit-spring</a><br/>
<a href-"#running-more-reports">Running your own custom reports</a>
</p>  
   
<h2><a id="description">What is an API change report?</a></h2>

     <p>
  			Three of the modules in uimaFIT track API changes from version to version.
  			The changes between this current version and the last previously released version are
  			reported below.  Each report includes a summary of Classes that were changed, together with
  			a flag indicating if the change was a source or binary incompatible change.
  			More details about each change are available further down in the report.
  	 </p>
  	 
  	 <p>
  	   Follow the links above to get the report for each of the 3 modules.		
  	 </p>
  	 
 
<h2><a id="running-more-reports">Running additional change reports</a></h2>
<p>The reports are generated by an open source tool, 
<a target="_blank" href="http://siom79.github.io/japicmp/">japicmp</a>, which compares two versions of
a Java Jar and generates the report.  See that website for details on how to run this for arbitrary versions, if you
want to compare other versions.
</p> 
    
</body>
</html>