属性java.runtime.version和java.version有什么区别

时间:2019-03-28 13:36:50

标签: java system-properties

出于记录目的,我将在Java程序运行时将Java版本写入日志。

我发现可以使用该版本

System.getProperty("java.runtime.version") -> 1.8.0_202-b08

System.getProperty("java.version") -> 1.8.0_202

结果显然缺少其他“构建”信息,但是除了结果之外还有其他区别吗?在某些情况下,我应该使用第一个选项而不是第二个选项?

3 个答案:

答案 0 :(得分:5)

System Property Name | System Property Content  | Where Displayed in java version Output
---------------------|--------------------------|---------------------------------------
java.version         | product version          | Line one displays the product version
---------------------|--------------------------|---------------------------------------
java.runtime.version | product version          | Line one displays the product version
                     | product build identifier | Line two displays the build identifier

摘自J2SE SDK/JRE Version String Naming Convention文档:

  
      
  • 可以扩展java.runtime.version系统属性的内容(超出java.version系统属性的内容)以包含构建ID。
  •   

因此,似乎属性值可以等于java.runtime的内容,也可以通过问题中已经指出的内部编号来区分。

无论如何,如先前在a comment to the question中所述,java.runtime.version属性不会出现在当前记录的system properties中。

答案 1 :(得分:5)

java.version是Java运行时环境(JRE)的产品版本信息。 JRE是实际上执行Java程序的Java虚拟机的实现。

java.runtime.version是产品版本以及JRE的内部版本标识符。

答案 2 :(得分:4)

一个是JDK版本java.version,顾名思义,另一个是JRE版本,R是运行时