Thank you Steve. I have only one follow-up then. If the platform version is
*always* a major version, does that imply that minor versions will not add
API? The big benefit of MRJAR :-) is that I can provide separate code for
different targeted runtimes. If 9.1 wouldn't add new API, then I am good.
If that's the policy, great. I just want to confirm it is because I don't
see too much of a technical difference between the two cases (8 to 9 vs 9.0
to 9.1). Does that make sense?

Cheers,
Paul

On Tue, Jul 19, 2016 at 1:41 PM, Steve Drach <steve.dr...@oracle.com> wrote:

> Hi Paul,
>
> > I have some questions. I believe core-lib is the right place. If not
> please
> > let me know.
>
> This is the right place.  First, the name was changed to Multi-Release
> JAR, so it’s MRJAR (or Mr. Jar) instead of MVJAR.
>
> >
> > 1) Given a Java 9 runtime, is there any perceptible difference between a
> > non-multiversion jar, and a versioned jar which has placed all its
> classes
> > under /META-INF/versions/9 ? Pretend each jar has the same identical
> > binaries/resources.
>
> There is probably a small difference in performance although I haven’t
> measured it.  Whether the difference is perceptible or not probably depends
> on the characteristics of the sensor.
>
> >
> > 2) Does the runtime care if the class version does not match what's under
> > /META-INF/versions/9? For example, what if I have targeted a Java 8 class
> > file format under versions/9?
>
> The MRJAR runtime does not care.  However if you put a class file targeted
> for Java 10 in the  /META-INF/versions/9 directory and run it on a Java 9
> platform, you’ll probably get an error.
>
> >
> > 3) Why does the new MVJAR JEP writeup [1] use versions/8 in the example?
>
> Because we don’t have a real example that uses Java 9 and the JEP was
> written when we thought we’d target this feature for Java 8.
>
> > Is
> > it simply for illustration, but I don't see how that's a useful example
> > since it's an impossibility. There is no MVJAR support prior to Java 8 so
> > isn't a better (and realer) example be /9 and /10?
>
> Yes, it would be better, but as I said, we don’t have a real world example
> yet, so anything we do would be a contrived example.  We probably need to
> do something with that part of the JEP.
>
> >
> > 3) The same MVJAR JEP writeup doesn't clearly indicate what is
> considered a
> > "platform version". All the examples show a single digit, but I believe
> > Verona [2] has specificed the platform to include both major and minor
> > versions. For example, Verona says the minor version may include
> "revisions
> > to standard APIs mandated by a Maintenance Release of the relevant
> Platform
> > Specification". Because it mentions platform, it should be possible to do
> > /9, /9.0, and /9.1. Please advise?
>
> Platform versions are major versions, i.e. 8, 9, 10, etc.  They are the
> values derived from Runtime.Version::major
>
> >
> > 4) Although MVJAR JEP writeup says "JAR metadata, such as that found in
> the
> > MANIFEST.MF file and the META-INF/services directory, need not be
> > versioned." The keyword here is "need not" which is not the same as "can
> > not" or "may not”.
>
> Yes, you are right, it’s incorrect.  Perhaps it should say "JAR metadata,
> such as that found in the MANIFEST.MF file and the META-INF/services
> directory, are not versioned.”
>
> > So if it is needed, how does one version different
> > services for different platforms?
>
> It can’t be done.
>
> > Can there be /META-INF under the
> > appropriate versioned folder?
>
> Technically, it can be done but it won’t be interpreted as a “true”
> META-INF directory, it’ll just be a path component for the jar entry.
>
> > Maybe /META-INF/versions/9/META-INF?
>
> You won’t achieve what you expect, depending of course on what you expect.
> ;-)
>
> > I do not
> > see anything in the JEP that says it's supported or non-supported. Please
> > advise.
>
> It’s not supported.
>
> >
> > [1] http://openjdk.java.net/jeps/238
> > [2] http://openjdk.java.net/jeps/223
> >
> > Cheers,
> > Paul
>
>

Reply via email to