[ 
https://issues.apache.org/jira/browse/KAFKA-1880?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15263372#comment-15263372
 ] 

Grant Henke commented on KAFKA-1880:
------------------------------------

I actually did not use the compatibility checker in the current description 
(Java API Compliance Checker).  Instead I choose to use 
[japicmp|https://siom79.github.io/japicmp/]. I will update the description when 
things are more concrete. 

I evaluated the options with the following criteria:

1. Able to be plugged into our existing build process (That means it needed to 
be a java dependency I can resolve and use from Gradle)
2. Able to detect source, binary, serialization and annotation incompatibilities
3. Able to filter the checked classes by package (Since we don't use 
annotations all over already)
4. Able to provide a clear and concise report/overview
5. Bonus: Works with Scala too. (I need to test this yet)

Here are some explanations for tools I considered but didn't choose (mostly 
taken from https://siom79.github.io/japicmp/) 
- *Java API Compliance Checker*: A Perl script. This approach cannot compare 
annotations and you need to have Perl installed. Only filters by annotation.
- *Clirr*: Tracking of API changes is implemented only partially, tracking of 
annotations is not supported. Development has stopped around 2005.
- *JDiff*: A Javadoc doclet that generates an HTML report of all API changes. 
The source code for both versions has to be available, the differences are not 
distinguished between binary incompatible or not. Comparison of annotations is 
not supported.
- *revapi*: An API analysis and change tracking tool that was started about the 
same time as japicmp. It ships with a maven plugin and an Ant task, but the 
maven plugin currently (version 0.4.1) only reports changes on the command line.




> Add support for checking binary/source compatibility
> ----------------------------------------------------
>
>                 Key: KAFKA-1880
>                 URL: https://issues.apache.org/jira/browse/KAFKA-1880
>             Project: Kafka
>          Issue Type: New Feature
>            Reporter: Ashish K Singh
>            Assignee: Grant Henke
>         Attachments: compatibilityReport.html
>
>
> Recent discussions around compatibility shows how important compatibility is 
> to users. [Java API Compliance 
> Checker|http://ispras.linuxbase.org/index.php/Java_API_Compliance_Checker] is 
> a tool for checking backward binary and source-level compatibility of a Java 
> library API. Kafka can leverage the tool to find and fix existing 
> incompatibility issues and avoid new issues from getting into the product.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to