> You had mentioned Java 9 introducing changes that were not backward 
> compatible. Does that only apply to the JDK, and not the JRE? Should the Java 
> 9 JRE be able to run stuff made with any earlier Java version?

Compared to previous updates, Java 9 breaks a lot of things and no, a lot of 
things won’t just run unmodified on the 9 JRE. But ensuring the system-default 
JRE is Java 8 won’t really help anything unless you’re going to be running 
`open` on a JAR or JNLP file. The java portgroup (correctly) gets JAVA_HOME 
with /usr/libexec/java_home, which always gives you the newest Java no matter 
what unless you specify a version with -v, so the default Java for building 
will still be 9.

This is why I was talking about having ports self-report their required Java 
version. A properly packaged project will have a launch script or some other 
way of specifying the right Java when running the final product, but it’s 
usually up to the user to use the right Java when building. Making all the 
Javas available doesn’t solve the problem of using the right one when building.

See here for what I did in an older version of Jython that required Java 7 to 
build (would not build on 6 or 8):
https://github.com/macports/macports-ports/commit/8ea9763eb25ca1484a62084e460b87963ba7aed0#diff-68dc98f4ea15b7ea36d6d5d515a327aaR31

I suppose if you want the setup that is most likely to work with the largest 
number of existing ports for the time being, do what you said but skip Java 9.

-Aaron

Reply via email to