在以前的时代,这很容易。我们使用了java和虚拟机这两个词的同义词。
现在我们有了 Hotspot VM (Oracle JDK)、OpenJDK Server VM、Eclipse OpenJ9 VM 和Graal VM。
我有点困惑。OpenJDK 是否拥有或者是一个可以与不同虚拟机实现结合使用的运行时环境?是否有为此的标准接口,或者它只是由 OpenJDK 支持。
我要求作为java -version
两个 OpenJDK 变体的运行输出,并且 Graal VM 在每种情况下都包含OpenJDK rintime
:
> /Library/Java/JavaVirtualMachines/openjdk11-openj9/Contents/Home/bin/java -version
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.1+13)
Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.11.0, JRE 11 Mac OS X amd64-64-Bit Compressed References 20181020_7 (JIT enabled, AOT enabled)
OpenJ9 - 090ff9dc
OMR - ea548a66
JCL - f62696f378 based on jdk-11.0.1+13)
> /Library/Java/JavaVirtualMachines/openjdk11/Contents/Home/bin/java -version
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.1+13)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.1+13, mixed mode)
> /opt/graal/graalvm-ce-1.0.0-rc10/Contents/Home/bin/java -version
openjdk version "1.8.0_192"
OpenJDK Runtime Environment (build 1.8.0_192-20181024123616.buildslave.jdk8u-src-tar--b12)
GraalVM 1.0.0-rc10 (build 25.192-b12-jvmci-0.53, mixed mode)
我知道网上有很多关于这个问题的文件,但我读过的这些文件都没有给出关于这个主题的安全知识状态。