25

使用 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 ?

4

4 回答 4

16

我认为您正在使用 OracleJDK。

正如我在谷歌搜索中看到的,openJDK --version 输出是这样的:

java版本

openjdk 版本“1.8.0-内部”

OpenJDK 运行时环境(构建 1.8.0-internal-0)

OpenJDK 64 位零 VM(构建 25.0-b20-internal,解释模式)

见: http: //mail.openjdk.java.net/pipermail/jdk8-dev/2013-July/002840.html

于 2015-11-24T13:41:26.830 回答
9

在 debian、jessie-backports、openjdk-8 上:

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”。

于 2015-11-24T14:00:59.440 回答
2

调用sun.misc.Version#printlnjava 代码会将版本信息转储到 stderr。如果要从 java 代码中获取 JDK 版本。

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)
于 2019-04-05T10:19:08.437 回答
1

根据我使用 Oracle JDK 和 OpenJDK 在我的系统上进行的实际测试:

选项1

  • 您可以执行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)

选项 2

  • 您可以使用java.vm.namejava.runtime.name系统属性。
  • 我认为,由于 Oracle 仍然是 OpenJDK 项目的主要贡献者/负责人,所以如果您使用java.vm.vendorjava.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
于 2022-01-23T20:38:24.373 回答