使用 java -version 命令会显示如下结果。
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
是 OpenJDK 还是 OracleJDK?
使用 java -version 命令会显示如下结果。
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
是 OpenJDK 还是 OracleJDK?
我认为您正在使用OracleJDK。
通过谷歌搜索可以看到,openJDK --version 的输出如下:
java -version
openjdk版本"1.8.0-internal"
OpenJDK Runtime环境(构建1.8.0-internal-0)
OpenJDK 64位Zero虚拟机(构建25.0-b20-internal,解释模式)
请参见:http://mail.openjdk.java.net/pipermail/jdk8-dev/2013-July/002840.html
openjdk version "1.8.0_66-internal"
OpenJDK Runtime Environment (build 1.8.0_66-internal-b17)
OpenJDK 64-Bit Server VM (build 25.66-b17, mixed mode)
使用Ubuntu PPA安装Oracle Java 8:
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
我认为,字符串"java"开头表示Oracle Java,而OpenJDK则使用"openjdk"。
根据我在我的系统上使用Oracle JDK和OpenJDK进行的实际测试:
java –version
命令,在OpenJDK的情况下,您将在输出中清楚地看到“openjdk”,而在Oracle JDK的情况下,您将在输出中看到“Hotspot”。这就是您可以区分它们的方法。C:\Users\himanshu.agrawal>"C:\E_Drive\Softwares\OpenJDK-java-se-7u75-ri\jre\bin\java" -version
openjdk version "1.7.0_75"
OpenJDK Runtime Environment (build 1.7.0_75-b13)
OpenJDK Client VM (build 24.75-b04, mixed mode)
C:\Users\himanshu.agrawal>java -version
java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)
java.vm.name
或java.runtime.name
系统属性。java.vm.vendor
或java.specification.vendor
,您仍将获得Oracle作为供应商。// when using OpenJDK
java.vm.name = OpenJDK 64-Bit Server VM
java.runtime.name = OpenJDK Runtime Environment
java.vm.vendor = "Oracle Corporation"
java.specification.vendor = Oracle Corporation
// when using Oracle JDK
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
java.runtime.name = Java(TM) SE Runtime Environment
java.vm.vendor = Oracle Corporation
java.specification.vendor = Oracle Corporation
在Java代码中调用sun.misc.Version#println
将会把版本信息输出到stderr。如果你想从Java代码中获取JDK的版本号。
最初的回答:
Call System.getProperty("java.version")
.
package bj.tmp;
import sun.misc.Version;
public class Foo {
public static void main(String[] args) {
Version.println();
}
}
就像这样:
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)
java -version
命令的输出结果。如果是 OpenJDK,那么输出中将会显示 "openjdk"。 - hagrawal7777