<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="Changelog for Java API Compliance Checker" />
<title>Java API Compliance Checker: History</title>
<style type="text/css">
body {
margin-top: 1.0em;
background-color: #deeef7;
font-family: Helvetica, Arial, FreeSans, san-serif;
color: #000000;
}
#container {
margin: 0 auto;
width: 700px;
}
h1 { font-size: 3.8em; color: #211108; margin-bottom: 3px;margin-top:0px;padding-top:0px;}
h1 .small { font-size: 0.4em; }
h1 a { text-decoration: none }
h2 { font-size: 1.5em; color: #211108; }
h3 { text-align: center; color: #211108; }
a { color: #211108; }
.description { font-size: 1.2em; margin-bottom: 30px; margin-top: 30px; font-style: italic;}
.download { float: right; }
pre {padding: 0px;margin: 0px;padding-left: 10px;word-wrap:break-word;white-space: pre-wrap;}
hr { border: 0; width: 80%; border-bottom: 1px solid #aaa}
.footer { text-align:center; padding-top:30px; font-style: italic; }
.code {border: dashed 1px gray; background-color: #f0f0f0;}
.listing {padding: 10px;border: 1px solid black;width: 70%;font-family:"DejaVu Sans Mono", "Monaco", "Courier New", monospace;font-size:14px;}
.summary {border:1px solid black;border-collapse:collapse;}
table.summary td, table.summary th {border:1px solid black;padding:2px;}
</style>
</head>
<body>
<a href="https://github.com/lvc/japi-compliance-checker"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a>
<div id="container">
<h1>Java API Compliance<br/>Checker: History</h1>
<p/>
<br/>
<b>Version 2.4 (January 20, 2018)</b><br/>
<b>Improvements</b>
<ul>
<li>
Support for Java 9
</li>
<li>
Check for changes in annotation elements
</li>
<li>
Dump default values of annotation elements
</li>
<li>
Added -non-impl option to specify interfaces that should not be implemented by users
</li>
<li>
Added -non-impl-all option to tell the tool that all interfaces should not be implemented by users
</li>
<li>
Added -check-annotations option to check for changes in annotation types like in other interfaces
</li>
<li>
Added more regression tests
</li>
</ul>
<b>Other</b>
<ul>
<li>
Changed license to LGPL-2.1+
</li>
<li>
Bumped API dump version to 2.4
</li>
</ul>
<br/>
<b>Version 2.3 (August 30, 2017)</b><br/>
<b>Bug Fixes</b>
<ul>
<li>
Bumped required API dump version to 2.2
</li>
</ul>
<br/>
<b>Version 2.2 (August 30, 2017)</b><br/>
<b>Analysis</b>
<ul>
<li>
Fixed analysis of generic types
</li>
<li>
Added compatibility rules:
<ul>
<li>
Class_Became_Raw
</li>
<li>
Class_Became_Generic
</li>
<li>
Interface_Became_Raw
</li>
<li>
Interface_Became_Generic
</li>
<li>
Changed_Method_Return
</li>
<li>
Variable_Arity_To_Array
</li>
<li>
Array_To_Variable_Arity
</li>
<li>
Field_Became_NonFinal (Src)
</li>
<li>
NonConstant_Field_Became_Static (Src)
</li>
<li>
Static_Method_Became_Final (Bin)
</li>
</ul>
</li>
<li>
Fixed rules:
<ul>
<li>
Changed_Field_Type
</li>
<li>
Changed_Method_Return_From_Void
</li>
<li>
*_Added_Abstract_Method*
</li>
</ul>
</li>
<li>
Fixed anasysis of added/removed super-classes
</li>
<li>
Compare class structure if became generic or raw
</li>
<li>
Check for unknown compatibility rules
</li>
<li>
Do not list added and removed protected methods in final classes
</li>
<li>
Reduced severity of changed super-class
</li>
<li>
Added -check-packages option to check packages matched by the regular expression
</li>
<li>
Fixed filtering of annotated classes
</li>
<li>
Fixed -client option
</li>
</ul>
<b>Report</b>
<ul>
<li>
Show method return type in the problem description
</li>
<li>
Fixed signatures of generic constructors
</li>
<li>
Fixed order of methods in the report
</li>
<li>
Add noindex meta tag to empty reports
</li>
<li>
Fixed styles of the report
</li>
</ul>
<b>Dump</b>
<ul>
<li>
Added GenericParam attribute
</li>
<li>
Fixed Type and BaseType of variable arity parameter
</li>
<li>
Show warning for old API dump versions
</li>
<li>
Increased ID length
</li>
<li>
Fixed methods mangled names in the API dump; old dumps should be recreated
</li>
<li>
Bumped dump version
</li>
</ul>
<b>Tests</b>
<ul>
<li>
Added more test cases
</li>
<li>
Show path to the tests journal
</li>
</ul>
<b>Misc</b>
<ul>
<li>
Properly handle errors of javap
</li>
<li>
Fixed number of arguments passed to javap on Linux
</li>
<li>
Properly handle errors when creating/extracting tarballs
</li>
</ul>
<br/>
<b>Version 2.1 (February 12, 2017)</b><br/>
<b>Improvements</b>
<ul>
<li>
Two times faster
</li>
</ul>
<b>Bug Fixes</b>
<ul>
<li>
Fixed support for Windows
</li>
<li>
Fixed API dumps
</li>
<li>
Fixed -debug option
</li>
<li>
Fixed -test option
</li>
</ul>
<br/>
<b>Version 2.0 (January 28, 2017)</b><br/>
<b>Improvements</b>
<ul>
<li>
Code refactoring
</li>
<li>
Improved report style
</li>
<li>
Works faster on big libraries
</li>
<li>
Added a module with compatibility rules
</li>
<li>
Added a module to create API dump from disassembled code
</li>
<li>
Added a module to handle XML descriptors
</li>
<li>
Added a module to filter API symbols
</li>
<li>
Added a module to handle input data
</li>
<li>
Added a module for logging
</li>
<li>
Added a module to unmangle symbols
</li>
<li>
Added a module with regression test suite
</li>
<li>
Added a module to find system files
</li>
<li>
Added a module to handle type attributes
</li>
<li>
Added a module with basic functions
</li>
</ul>
<b>Bug Fixes</b>
<ul>
<li>
Fixed analysis of template instances
</li>
<li>
Fixed error message if modules are not installed
</li>
</ul>
<br/>
<b>Version 1.8 (July 04, 2016)</b><br/>
<b>Improvements</b>
<ul>
<li>
New style of the report
</li>
<li>
Improved analysis of default methods
</li>
<li>
Check if all abstract methods of added super-interface have default implementations in the class
</li>
<li>
New documentation
</li>
<li>
Code refactoring
</li>
</ul>
<b>New Options</b>
<ul>
<li>
-old-style: generate old-style report
</li>
<li>
-dep1, -dep2: specify API dump of the required dependency archive to resolve overwritten methods
</li>
</ul>
<b>Bug Fixes</b>
<ul>
<li>
Fixed support for Windows platform
</li>
<li>
Fixed -client option on OS X
</li>
<li>
Select version numbers automatically ('X' and 'Y') if not set by options
</li>
<li>
Fixed -skip-packages option
</li>
</ul>
<br/>
<b>Version 1.7 (April 14, 2016)</b><br/>
<b>Improvements</b>
<ul>
<li>
Added numbers of checked methods and types to the meta line of the report
</li>
<li>
Skip checking of auto-generated methods
</li>
</ul>
<b>New Options</b>
<ul>
<li>
-skip-internal-types: skip checking of some data types (classes and interfaces)
</li>
<li>
-added-annotations: apply filters by annotations only to new version of the library
</li>
<li>
-count-methods: count methods in the API dump
</li>
</ul>
<b>Bug Fixes</b>
<ul>
<li>
Do not count added methods when calculating compatibility rate
</li>
<li>
Fixed filtering of checked methods and classes
</li>
<li>
Show number of checked classes instead of number of all classes in the report summary
</li>
<li>
Fixed -client option
</li>
<li>
Fixed html formatting in the report
</li>
<li>
Fixed class-file names in the report
</li>
</ul>
<br/>
<b>Version 1.6 (April 08, 2016)</b><br/>
<b>Improvements</b>
<ul>
<li>
Support for Scala
</li>
<li>
Fixed IDs of API elements (methods and types) in the API dump, requires Digest::MD5 core Perl module
</li>
<li>
Show version of used javac compiler instead of the version of java interpreter in the console output
</li>
<li>
Check annotations of methods
</li>
<li>
Check for removed classes with public static fields and only private constructor
</li>
<li>
Check for removed public static fields in classes with only private constructor
</li>
<li>
Show percentage of affected methods in the problem description
</li>
<li>
Show compatibility rate instead of affect rate in the console output
</li>
<li>
Reduced size of the report
</li>
<li>
Added more unit tests
</li>
</ul>
<b>New Options</b>
<ul>
<li>
-compact: simplify formatting and reduce size of the report for a big set of changes
</li>
<li>
-skip-annotations-list: skip checking of some annotated classes and methods
</li>
<li>
-external-css: generate CSS styles to external file
</li>
<li>
-external-js: generate JS scripts to external file
</li>
</ul>
<b>Bug Fixes</b>
<ul>
<li>
Fixed analysis of deprecated methods and types
</li>
<li>
Fixed detection of methods moved up class hierarchy to java.lang.Object
</li>
<li>
Fixed support for annotations in Java 8
</li>
<li>
Fixed analysis of template types
</li>
<li>
Fixed -short option
</li>
<li>
Fixed -client option
</li>
<li>
Do not skip checking of com.oracle.*, com.sun.*, COM.rsa.*, sun.* and sunw.* packages
</li>
<li>
Fixed problem descriptions in the report
</li>
<li>
Fixed style of the report
</li>
<li>
Added method usage information to an API dump
</li>
<li>
Comparison of API dumps is now equivalent to comparison of JARs
</li>
</ul>
<br/>
<b>Version 1.5 (March 24, 2016)</b><br/>
<b>Improvements</b>
<ul>
<li>
Up to 100 times faster on big libraries
</li>
<li>
Up to 4 times less RAM usage on big libraries
</li>
<li>
Improved design of the report
</li>
<li>
Replaced verdict with compatibility rate in the report
</li>
<li>
Implemented check for removed annotations
</li>
<li>
Do not show Java version in the report
</li>
<li>
Limited number of affected methods shown in the report
</li>
<li>
Do not show package names in the report by default
</li>
<li>
Do not show time stamp in the report
</li>
<li>
Do not show warning for added class fields
</li>
<li>
Added Makefile
</li>
<li>
Removed obsolete options
</li>
<li>
Reduced size of the report
</li>
<li>
Allowed api, dump and apidump extensions of API dump
</li>
<li>
Changed format of API dump
</li>
<li>
Changed console output
</li>
</ul>
<b>New Options</b>
<ul>
<li>
-skip-packages
</li>
<li>
-dump-path
</li>
</ul>
<b>Bug Fixes</b>
<ul>
<li>
Fixed affect descriptions
</li>
<li>
Fixed issue with API dumps on OS X
</li>
<li>
Fixed -jdk-path option
</li>
<li>
Fixed -limit-affected option
</li>
</ul>
<br/>
<b>Version 1.4.1 (March 12, 2015)</b><br/>
<b>Improvements</b>
<ul>
<li>
Support for Java 8
</li>
<li>
Support for limiting checking based on annotations (for Apache HBase)
</li>
<li>
Add support for runtime visible annotations
</li>
</ul>
<b>New Options</b>
<ul>
<li>
-minimal
</li>
<li>
-hide-templates
</li>
<li>
-hide-packages
</li>
</ul>
<b>Bug Fixes</b>
<ul>
<li>
Fixed auto-skipping of internal packages
</li>
<li>
Fixed warnings on Solaris
</li>
<li>
Fixed -client option
</li>
</ul>
<br/>
<b>Version 1.3.7 (April 25, 2014)</b><br/>
<b>Improvements</b>
<ul>
<li>
Show Java version in the report summary
</li>
<li>
Mark deprecated methods in the report
</li>
</ul>
<b>New Options</b>
<ul>
<li>
-jdk-path
</li>
<li>
-skip-internal
</li>
</ul>
<b>Bug Fixes</b>
<ul>
<li>
Improved support for Java 7 templates
</li>
</ul>
<b>Other</b>
<ul>
<li>
Code cleaning
</li>
</ul>
<br/>
<b>Version 1.3.6 (January 21, 2014)</b><br/>
<b>Improvements</b>
<ul>
<li>
Support for Java 7
</li>
</ul>
<b>New Options</b>
<ul>
<li>
-limit-affected
</li>
</ul>
<b>Bug Fixes</b>
<ul>
<li>
Corrected formatting of output html reports
</li>
<li>
Fixed issue #7: "The command line is too long"
</li>
<li>
Improved performance on large input objects (30%)
</li>
<li>
Fixed issue #8: "-client option doesn't work"
</li>
</ul>
<b>Other</b>
<ul>
<li>
Code cleaning
</li>
<li>
Corrected Makefile
</li>
</ul>
<br/>
<b>Version 1.2.1 (October 09, 2012)</b><br/>
<b>New Options</b>
<ul>
<li>
-show-access
</li>
</ul>
<b>Bug Fixes</b>
<ul>
<li>
Fixed -open and -browse options
</li>
</ul>
<br/>
<b>Version 1.2 (September 22, 2012)</b><br/>
<b>New Options</b>
<ul>
<li>
-skip-deprecated
</li>
<li>
-skip-classes
</li>
</ul>
<b>Bug Fixes</b>
<ul>
<li>
Fixed an issue with spaces in the execution path
</li>
</ul>
<b>Other</b>
<ul>
<li>
Code cleaning
</li>
</ul>
<br/>
<b>Version 1.1.2 (June 08, 2012)</b><br/>
<b>New Options</b>
<ul>
<li>
-sort
</li>
<li>
-open
</li>
</ul>
<b>Bug Fixes</b>
<ul>
<li>
Fixed an issue with -classes-list option
</li>
<li>
Fixed an issue with spaces in the path to javap and other commands
</li>
<li>
Fixed an issue with escaping of inner class specifier
</li>
</ul>
<b>Other</b>
<ul>
<li>
Code cleaning
</li>
</ul>
<br/>
<b>Version 1.1 (April 16, 2012)</b><br/>
<b>Improvements</b>
<ul>
<li>
Improved design of the compatibility report
</li>
<li>
Added compatibility rate in the summary of the report
</li>
<li>
Added "Other Changes in Data Types" section of the compatibility report
</li>
</ul>
<b>New Options</b>
<ul>
<li>
-debug
</li>
<li>
-quick
</li>
<li>
-browse
</li>
<li>
-report-path
</li>
<li>
-bin-report-path
</li>
<li>
-src-report-path
</li>
</ul>
<b>Other</b>
<ul>
<li>
Code cleaning
</li>
</ul>
<br/>
<b>Version 1.0.3 (December 13, 2011)</b><br/>
<b>Improvements</b>
<ul>
<li>
Add Makefile.pl installer
</li>
</ul>
<b>Other</b>
<ul>
<li>
Corrected INSTALL file
</li>
<li>
Corrected help message
</li>
<li>
Changed license to dual GPL and LGPL of any version
</li>
<li>
Added check for presence of installed JDK-devel package in the system
</li>
<li>
Updated copyrights
</li>
</ul>
<br/>
<b>Version 1.0 (August 30, 2011)</b><br/>
Initial version of the tool.
<br/>
<div class="footer">
get the source code on GitHub : <a href="https://github.com/lvc/japi-compliance-checker">lvc/japi-compliance-checker</a>
</div>
<br/>
<br/>
</div>
</body>
</html>