如何知道计算机上的java或java运行时版本

如何知道计算机上的java或java运行时版本,java,java-8,jvm,Java,Java 8,Jvm,我刚刚开始学习java的基础知识,我的最终目标是学习Android。所以我从安装了最新版本的java。在.Net世界中,我使用了ClrVer等命令来了解当前计算机上当前安装的所有CLR版本 我使用的是Windows7,我检查了我的控制面板以查看安装过程。它显示安装程序版本为8.0.1010.13,如下面的快照所示: 但这样一来,我就更加困惑了,因为我不确定Java版本、JRE版本、Java虚拟机(JVM)版本、Java开发工具包(JDK)版本和安装程序版本(如上面的控制面板快照所示)是否可能相

我刚刚开始学习java的基础知识,我的最终目标是学习Android。所以我从安装了最新版本的java。在.Net世界中,我使用了
ClrVer
等命令来了解当前计算机上当前安装的所有CLR版本

我使用的是Windows7,我检查了我的控制面板以查看安装过程。它显示安装程序版本为
8.0.1010.13
,如下面的快照所示:

但这样一来,我就更加困惑了,因为我不确定Java版本、JRE版本、Java虚拟机(JVM)版本、Java开发工具包(JDK)版本和安装程序版本(如上面的控制面板快照所示)是否可能相同或不同

是否有任何设置、注册表、文件属性或命令可以帮助我了解安装的java的确切或完整版本


此外,在.Net世界中,语言(例如C#)、运行时(CLR)和.Net framework的版本是完全独立的,在任何给定的时间点,它们可能都不相同。这在Java世界中也是一样的吗是不是每个版本都有一个统一的版本来描述它们呢?

我相信您的系统变量包含JAVA\u HOME和JDK\u HOME,它们告诉Windows在哪里查找JAVA。您的JDK和Java可以是不同的版本,甚至可以在您的机器上拥有每个版本的多个版本。它们根据上述变量和PATH系统变量运行


我认为您在上面看到的是Java运行时,而不是SDK。如果您打开Windows提示符并执行“java-v”,它将告诉您运行时版本和JDK版本的“javac-version”。

除了使用
java-version
获取运行时之外,您还可以使用
java.version
(系统属性)获取它。大概

System.out.println(System.getProperty("java.version"));

如果要从代码执行此操作,则应使用
System
class:

System.getProperty("java.version");
如果让我们说你的程序将依赖于给定的版本

您可以在此处了解有关JVM的哪些属性的更多信息: 仅在您的代码输出中,
System.getProperty(wantedProperty)


希望这能澄清您的想法,如果我理解正确,当您下载JDK时,您将得到一个Java语言、JRE、JVM等的捆绑包,所有这些都在一个匹配的版本中。一些技术工件(例如JVM)可能有另一个内部版本号,但这不是您需要关心的,因为通常情况下,对于较新的JVM,没有单独的下载,而是JVM的下一个版本将与下一个JDK版本捆绑在一起

此外,Java编程语言没有次要的版本号。所以在这里,Java语言有版本8,所有具有相同主要版本的JDK都应该按照指定实现该语言。当然,JDK附带的
javac
编译器可能有bug,但下一个JDK更新版本的bug修复版本仍然旨在支持主版本8中的所有jre


请注意,尽管名称不同,更新JDK意味着将其完全替换为新版本。

java--version
javac--version
它还取决于PATH变量指向的java安装可能不止一个JRE(java运行时)和/或JDK(java开发工具包)正如JAVA_HOME所指出的那样安装-使用JAVA--version,javac--version,它将只显示当前运行的JVM的版本。这与“了解当前安装的所有CLR版本”不同。要列出已安装的Java版本,您可能必须查看Windows注册表,记住硬盘上可能有未“安装”的Java版本,因此不会显示在注册表中。对于完整列表,您必须扫描硬盘驱动器,例如查找
java.exe
jvm.dll