簡體   English   中英

如何知道我使用的是 Open JDK 還是 Oracle JDK?

[英]How to know if I am using Open JDK or Oracle JDK?

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

正如我在google搜索中看到的那樣,openJDK --version輸出如下:

java -version

openjdk版本“1.8.0-internal”

OpenJDK運行時環境(build 1.8.0-internal-0)

OpenJDK 64位零虛擬機(構建25.0-b20內部,解釋模式)

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

關於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 for 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”。

在java代碼中調用sun.misc.Version#println會將版本信息轉儲到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)

根據我使用 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM