Sent: Monday, December 13, 2021 at 12:18 AM
From: "Gerben Wierda"

> Which means that MacPorts solr8 runs using macOS native java and not one from 
> MacPorts itself. I thought the MacPorts stuff was supposed to be fully 
> independent (except for Xcode).

The JDK ports are an exception in that they install to the usual system-wide 
location of /Library/Java/JavaVirtualMachines rather than in the MacPorts 
prefix. Presumably this is an unavoidable requirement for them to be usable 
system-wide on macOS.


> $ java -version
> java version "12.0.2" 2019-07-16
> Java(TM) SE Runtime Environment (build 12.0.2+10)
> Java HotSpot(TM) 64-Bit Server VM (build 12.0.2+10, mixed mode, sharing)
>  
> $ ls -l /usr/bin/java
> lrwxr-xr-x  1 root  wheel  74 Aug 10  2019 /usr/bin/java -> 
> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
> 
> $ ls -l 
> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
> -rwxr-xr-x  1 root  wheel  58336 Jul 11 07:48 
> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
> 
> That java is starting to get old, the last update was the last Security 
> Update from macOS Mojave

Your Java 12 installation comes from somewhere else. Apple has not shipped Java 
with/for macOS for a long time. The java, javac, etc. commands present in 
system paths are merely wrappers which require a separately-installed Java 
runtime to do anything useful.


> I also have Oracle Java SE 8 installed:
> 
> $ /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java 
> -version
> java version "1.8.0_311"
> Java(TM) SE Runtime Environment (build 1.8.0_311-b11)
> Java HotSpot(TM) 64-Bit Server VM (build 25.311-b11, mixed mode)
> 
> Basically, I am rather confused about java numbering. I know I have the 
> latest Oracle Java install and that my macOS Mojave version had its last 
> update in the summer of 2021. I am also somewhat confused about MacPorts 
> using the standard macOS Java which has a higher number but is an older 
> version.
> 
> Can somebody enlighten me?

macOS will reportedly pick the installation with the latest Java version, 
unless a specific Java version/installation is requested e.g. by the JAVA_HOME 
environment variable.


> And shouldn’t ports that use java not depend on a java that comes with (old, 
> outdated) java’s in macOS? But install and use an open source version 
> instead? Or use the one from Oracle if available?

Because JDK is not a lightweight dependency, it seems somewhat desirable for 
ports to be flexible when specifying a Java requirement, and allow using an 
already-installed JDK/JRE if compatible (including one not provided by 
MacPorts). The Java PortGroup allows specifying a required Java version (either 
a minimum version or an exact version), and a fallback JDK port to install if a 
compatible version isn’t already present (hopefully an LTS version: e.g. 8, 11, 
or 17 from OpenJDK; other vendors may have LTS for other versions).


Christopher A. Chavez

Reply via email to