Multi-Release jars intended use cases

Alan Bateman 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:
>
> http://kto.so/2017/09/30/the-practical-truth-about-multi-release-jars/#comment-3563924109
>
> :
>
> 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.

-Alan


More information about the core-libs-dev mailing list