# Java API Compliance
Checker: History

Version 2.3 (August 30, 2017)
Bug Fixes

- Bumped required API dump version to 2.2

Version 2.2 (August 30, 2017)
Analysis

- Fixed analysis of generic types
- Added compatibility rules:
  - Class_Became_Raw
  - Class_Became_Generic
  - Interface_Became_Raw
  - Interface_Became_Generic
  - Changed_Method_Return
  - Variable_Arity_To_Array
  - Array_To_Variable_Arity
  - Field_Became_NonFinal (Src)
  - NonConstant_Field_Became_Static (Src)
  - Static_Method_Became_Final (Bin)
- Fixed rules:
  - Changed_Field_Type
  - Changed_Method_Return_From_Void
  - *_Added_Abstract_Method*
- Fixed anasysis of added/removed super-classes
- Compare class structure if became generic or raw
- Check for unknown compatibility rules
- Do not list added and removed protected methods in final classes
- Reduced severity of changed super-class
- Added -check-packages option to check packages matched by the regular expression
- Fixed filtering of annotated classes
- Fixed -client option

Report

- Show method return type in the problem description
- Fixed signatures of generic constructors
- Fixed order of methods in the report
- Add noindex meta tag to empty reports
- Fixed styles of the report

Dump

- Added GenericParam attribute
- Fixed Type and BaseType of variable arity parameter
- Show warning for old API dump versions
- Increased ID length
- Fixed methods mangled names in the API dump; old dumps should be recreated
- Bumped dump version

Tests

- Added more test cases
- Show path to the tests journal

Misc

- Properly handle errors of javap
- Fixed number of arguments passed to javap on Linux
- Properly handle errors when creating/extracting tarballs

Version 2.1 (February 12, 2017)
Improvements

- Two times faster

Bug Fixes

- Fixed support for Windows
- Fixed API dumps
- Fixed -debug option
- Fixed -test option

Version 2.0 (January 28, 2017)
Improvements

- Code refactoring
- Improved report style
- Works faster on big libraries
- Added a module with compatibility rules
- Added a module to create API dump from disassembled code
- Added a module to handle XML descriptors
- Added a module to filter API symbols
- Added a module to handle input data
- Added a module for logging
- Added a module to unmangle symbols
- Added a module with regression test suite
- Added a module to find system files
- Added a module to handle type attributes
- Added a module with basic functions

Bug Fixes

- Fixed analysis of template instances
- Fixed error message if modules are not installed

Version 1.8 (July 04, 2016)
Improvements

- New style of the report
- Improved analysis of default methods
- Check if all abstract methods of added super-interface have default implementations in the class
- New documentation
- Code refactoring

New Options

- -old-style: generate old-style report
- -dep1, -dep2: specify API dump of the required dependency archive to resolve overwritten methods

Bug Fixes

- Fixed support for Windows platform
- Fixed -client option on OS X
- Select version numbers automatically ('X' and 'Y') if not set by options
- Fixed -skip-packages option

Version 1.7 (April 14, 2016)
Improvements

- Added numbers of checked methods and types to the meta line of the report
- Skip checking of auto-generated methods

New Options

- -skip-internal-types: skip checking of some data types (classes and interfaces)
- -added-annotations: apply filters by annotations only to new version of the library
- -count-methods: count methods in the API dump

Bug Fixes

- Do not count added methods when calculating compatibility rate
- Fixed filtering of checked methods and classes
- Show number of checked classes instead of number of all classes in the report summary
- Fixed -client option
- Fixed html formatting in the report
- Fixed class-file names in the report

Version 1.6 (April 08, 2016)
Improvements

- Support for Scala
- Fixed IDs of API elements (methods and types) in the API dump, requires Digest::MD5 core Perl module
- Show version of used javac compiler instead of the version of java interpreter in the console output
- Check annotations of methods
- Check for removed classes with public static fields and only private constructor
- Check for removed public static fields in classes with only private constructor
- Show percentage of affected methods in the problem description
- Show compatibility rate instead of affect rate in the console output
- Reduced size of the report
- Added more unit tests

New Options

- -compact: simplify formatting and reduce size of the report for a big set of changes
- -skip-annotations-list: skip checking of some annotated classes and methods
- -external-css: generate CSS styles to external file
- -external-js: generate JS scripts to external file

Bug Fixes

- Fixed analysis of deprecated methods and types
- Fixed detection of methods moved up class hierarchy to java.lang.Object
- Fixed support for annotations in Java 8
- Fixed analysis of template types
- Fixed -short option
- Fixed -client option
- Do not skip checking of com.oracle.*, com.sun.*, COM.rsa.*, sun.* and sunw.* packages
- Fixed problem descriptions in the report
- Fixed style of the report
- Added method usage information to an API dump
- Comparison of API dumps is now equivalent to comparison of JARs

Version 1.5 (March 24, 2016)
Improvements

- Up to 100 times faster on big libraries
- Up to 4 times less RAM usage on big libraries
- Improved design of the report
- Replaced verdict with compatibility rate in the report
- Implemented check for removed annotations
- Do not show Java version in the report
- Limited number of affected methods shown in the report
- Do not show package names in the report by default
- Do not show time stamp in the report
- Do not show warning for added class fields
- Added Makefile
- Removed obsolete options
- Reduced size of the report
- Allowed api, dump and apidump extensions of API dump
- Changed format of API dump
- Changed console output

New Options

- -skip-packages
- -dump-path

Bug Fixes

- Fixed affect descriptions
- Fixed issue with API dumps on OS X
- Fixed -jdk-path option
- Fixed -limit-affected option

Version 1.4.1 (March 12, 2015)
Improvements

- Support for Java 8
- Support for limiting checking based on annotations (for Apache HBase)
- Add support for runtime visible annotations

New Options

- -minimal
- -hide-templates
- -hide-packages

Bug Fixes

- Fixed auto-skipping of internal packages
- Fixed warnings on Solaris
- Fixed -client option

Version 1.3.7 (April 25, 2014)
Improvements

- Show Java version in the report summary
- Mark deprecated methods in the report

New Options

- -jdk-path
- -skip-internal

Bug Fixes

- Improved support for Java 7 templates

Other

- Code cleaning

Version 1.3.6 (January 21, 2014)
Improvements

- Support for Java 7

New Options

- -limit-affected

Bug Fixes

- Corrected formatting of output html reports
- Fixed issue #7: "The command line is too long"
- Improved performance on large input objects (30%)
- Fixed issue #8: "-client option doesn't work"

Other

- Code cleaning
- Corrected Makefile

Version 1.2.1 (October 09, 2012)
New Options

- -show-access

Bug Fixes

- Fixed -open and -browse options

Version 1.2 (September 22, 2012)
New Options

- -skip-deprecated
- -skip-classes

Bug Fixes

- Fixed an issue with spaces in the execution path

Other

- Code cleaning

Version 1.1.2 (June 08, 2012)
New Options

- -sort
- -open

Bug Fixes

- Fixed an issue with -classes-list option
- Fixed an issue with spaces in the path to javap and other commands
- Fixed an issue with escaping of inner class specifier

Other

- Code cleaning

Version 1.1 (April 16, 2012)
Improvements

- Improved design of the compatibility report
- Added compatibility rate in the summary of the report
- Added "Other Changes in Data Types" section of the compatibility report

New Options

- -debug
- -quick
- -browse
- -report-path
- -bin-report-path
- -src-report-path

Other

- Code cleaning

Version 1.0.3 (December 13, 2011)
Improvements

- Add Makefile.pl installer

Other

- Corrected INSTALL file
- Corrected help message
- Changed license to dual GPL and LGPL of any version
- Added check for presence of installed JDK-devel package in the system
- Updated copyrights

Version 1.0 (August 30, 2011)
Initial version of the tool.