Multi-Release jars intended use cases
Alan.Bateman at oracle.com
Mon Mar 26 11:41:50 UTC 2018
On 26/03/2018 02:58, James Roper wrote:
> Hi all,
> According to Alan Bateman, MR jars can be used to introduce JDK9 API
> features on classes, such that javac can compile code against them to use
> the JDK9 specific API provided by the JDK9 version of the class, and still
> have the same classes be compatible with (and loadable by) JDK8:
> So it would be nice to have an official statement about whether the above
> use case is using the MR feature as intended, and whether that use case is
> considered a good practice or not.
That blog has been updated since I added the comment. If I recall
correctly, the original blog was using javac with an exploded build, not
a MR JAR.
In any case, the intention is that a specific version of a library
export one API and it shouldn't vary depending on the JDK version. The
implementation may of course have code specific to JDK 9, 10, ... but
the API for consumers of that version of the library should always be
the same. The `jar` tool checks this when creating a MR JAR. I don't
know if the Maven Archiver and other plugins that create JAR files do
the same check yet.
More information about the core-libs-dev