Hi,

Please review the following webrev that adds support for multi-release jars as 
specified in JEP-238.

Issue: https://bugs.openjdk.java.net/browse/JDK-8132734 
<https://bugs.openjdk.java.net/browse/JDK-8132734>
JEP 238: https://bugs.openjdk.java.net/browse/JDK-8047305 
<https://bugs.openjdk.java.net/browse/JDK-8047305>
Webrev: http://cr.openjdk.java.net/~psandoz/multiversion-jar/jar-webrev/ 
<http://cr.openjdk.java.net/~psandoz/multiversion-jar/jar-webrev/>

A multi-release jar file is a jar file that contains a manifest with a main 
attribute named "Multi-Release", and also contains a directory 
"META-INF/versions" with subdirectories that contain versioned entries 
segregated by the major version of Java platform releases. A versioned entry, 
with a version n, in the "META-INF/versions/{n}" directory overrides the 
unversioned root entry as well as any entry with a version number i  where i < 
n.
 
The changes in this webrev implement an aliasing mechanism in JarEntry so that 
when a JarFile client retrieves a JarEntry, the data from the entry pointed to 
by the alias is returned.  There are methods to configure whether or not 
aliasing is enabled, and if it is, which version of an entry the alias points 
to.

When a JarFile is used by a class loader to load class resources, the default 
version retrieved is the runtime version of the Java platform (i.e. a version 9 
entry is returned when the platform is JDK 9).  This mechanism can be 
configured by System properties.

Thanks,
Steve

Reply via email to