On Feb 26, 2018, at 23:55, Aaron Madlon-Kay wrote: >> Thanks, you've cleared up another misconception I had. I had read that Java >> 7 installations were being automatically upgraded to Java 8, so I thought >> there was no point to trying to install Java 7. > > The system-default Java will prompt for updates, but I don't think I've seen > it replace an existing installation without prompting, at least on Mac (it > should require administrator privileges, so I don't think it can). > Regardless, it doesn't prevent you from having multiple JDKs installed. > >> I guess I still don't understand what JRE or JVM are. You mentioned >> /Library/Java/JavaVirtualMachines, which looks like it contains folders with >> names like jdk1.8.0_144.jdk. So does this mean that a JDK is a JVM? Or that >> a JDK includes a JVM? > > - JRE is the Java Runtime Environment; this is what you need to run a > compiled Java program. > - /Library/Internet Plug-Ins/JavaAppletPlugin.plugin is where the blessed > system-default JRE lives. This path is an artifact of the fact that Java's > raison d'ĂȘtre used to be browser applets, but at this point it's just kind of > confusing. This JRE is used to run raw JARs or JNLPs you open in the Finder. > > - JDK is the Java Development Kit; this is what you need to compile Java > source. The JDK includes a JRE, so if you are a developer you can just > install the JDK and not worry about anything else. > - /Library/Java/JavaVirtualMachines is where JDKs live > > - JVM is the Java Virtual Machine; this is a binary included in the JRE (and > therefore in the JDK as well). This is not a separate package at all, but I > appreciate that the alphabet soup is confusing. For our purposes you can > ignore this word. > >>> any properly packaged program will come with its own JRE >> Does this include Java-using ports in MacPorts? > > No, sorry, that was misleading. I was talking more about large, suite-style > applications like IntelliJ IDEs, where the JRE is included in the binary > distfile, inside the .app bundle. Though I suppose it's not impossible that a > piece of software available in MacPorts might have a distribution that > includes a JRE. > >> You mentioned /Library/Internet Plug-Ins/JavaAppletPlugin.plugin. [...] is >> this plugin also involved somehow in any part of the MacPorts Java >> experience? > > Per above, you should think of this less as a plugin and more as the > poorly-named default JRE. > > A user who has only installed the JRE will have this plugin, and will be able > to *run* Java programs compatible with that JRE. > > A user who has installed the JDK will have this plugin in addition to a JDK > at /Library/Java/JavaVirtualMachines, and will be able to *build and run* > Java programs compatible with that JDK, or any other installed JDK with > proper configuration. > > Allow me to preemptively confuse you with one more thing: You may notice > java, javac, javaws etc. in /usr/bin; these are symlinks to binaries in > /System/Library/Frameworks/JavaVM.framework, which in turn are stubs that > forward to the proper Java installation (if available; otherwise it guides > users to download from Oracle). This allows you to invoke /usr/bin/java > without caring where the "real" java binary is. When multiple Javas are > available you should specify the one you want by setting the JAVA_HOME envar, > usually with the output of /usr/libexec/java_home.
Ok. Then my plan is to install the Apple Java 6 JDK and the Oracle Java 7, 8 and maybe 9 JDK, and the Oracle Java 8 JRE. Does that cover all the bases for now?