В прежние времена это было легко.Мы использовали слова java и виртуальная машина как синонимы.
Теперь у нас есть Hotspot VM (Oracle JDK), OpenJDK Server VM, Eclipse OpenJ9 VM и Graal VM .
Я немного запутался.Есть ли в OpenJDK среда исполнения, которая может использоваться в сочетании с различными реализациями виртуальных машин?Существует ли стандартный интерфейс для этого или он просто поддерживается OpenJDK.
Я спрашиваю в качестве результата выполнения java -version
для двух вариантов OpenJDK, и виртуальная машина Graal содержит в каждом случае 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)
Я знаю, что в Интернете есть много документов по этому вопросу, но ни один из них, которые я прочитал, не обеспечил надежное знание этой темы.