JDK API Diff Report Generator
Note: This project has been migrated to the AdoptOpenJDK organization (https://github.com/AdoptOpenJDK/jdk-api-diff) and this repository is not actively maintained any longer.
This project creates a report of all API changes between two different JDK versions, e.g. JDK 8 and 9, using JapiCmp.
Report created by this generator can be found here (excluding any unsupported Sun/Oracle/Apple modules):
- comparing JDK 9.0.1 against JDK 1.8.0_151 (it's 16 MB, so loading may take a bit)
- comparing JDK 10-ea (b42) against JDK 9.0.4
To create the report yourself, e.g. with different settings, run
mvn clean install.
The API change report can be found at target/jdk-api-diff.html.
Maven Toolchains are used to locate the different JDKs.
There must be a toolchain of type
jdk for the JDKs to compare.
Provide a file ~.m2/toolchains.xml like this:
<?xml version="1.0" encoding="UTF8"?> <toolchains> <toolchain> <type>jdk</type> <provides> <version>1.8</version> <vendor>oracle</vendor> </provides> <configuration> <jdkHome>/path/to/jdk-1.8</jdkHome> </configuration> </toolchain> <toolchain> <type>jdk</type> <provides> <version>9</version> <vendor>oracle</vendor> </provides> <configuration> <jdkHome>/path/to/jdk-9</jdkHome> </configuration> </toolchain> </toolchains>
Specify two properties,
jdk2 in your pom.xml, identifying the base and target JDK version for the comparison.
The values are comma-separated requirements matched against the
<provides> configurations of the existing toolchain entries.
Both properties must unambiguously identify one toolchain, for example:
If there's no matching toolchain or multiple ones match the given requirements, an exception will be raised.
The report is created via the
ModuleRepackager class which is executed with the Maven exec plug-in.
Adjust the following options passed to that class in pom.xml as needed:
false, depending on whether only exported packages should be compared or all packages; only applies if both compared versions are Java 9 or later
--excluded-packages: a comma-separated listed of package names which should be excluded from the comparison
This project is licensed under the Apache License version 2.0.