首页 > 编程知识 正文

简述jdk与jre的概念和关系,jdk8新特性

时间:2023-05-03 16:17:59 阅读:153643 作者:1452

其实很多Java程序员写了很多代码后,你就对他说jre和jdk之间有什么关系,jvm又是什么样的,很多人都不知所云。 本章不讨论jvm基础如何与不同的系统交互。 主要阐明三个方面的区别,我们写的xxx.java文件是谁编译的,由谁运行的,为什么可以跨平台运行。

首先,分别论述这三点。

JVM :英文名称(Java Virtual Machine )是我们熟知的Java虚拟机。 它只识别类型为xxx.class的文件,可以识别class文件中的字节码指令,并调用操作系统上的API来完成操作。 也就是说,jvm是Java可以跨平台的核心,具体在下面详细说明。

JRE :英文名称(Java Runtime Environment )称为Java运行时环境。 它主要包括两个部分: jvm标准实现和Java基类库。 那就是相对于jvm,出现较多的是一些Java类库。

JDK :英文名称(Java开发工具包),Java开发工具包。 jdk是Java开发的核心,它将jre与易于使用的小工具集成在一起。 例如javac.exe、java.exe、jar.exe等。

很明显,这三种关系是分层嵌套关系。 JDKJREJVM

接下来,我问一个问题。 为什么我们的电脑在安装jdk后有两个jre版本?

注意的学生可能会注意到,在我们的jdk安装成功后,在C:Program FilesJava目录中会出现以下情况: (在这里,我正在安装jdk1.8的版本。 )

jdk的子目录下也存在jre。

这两个不同版本的jre彼此有什么联系吗?

答案是“没有联系”。 准确地说,那两个人是一样的,用哪一个都行。 只是,很多人习惯单独安装另一个jre。 虽然也没有使用单独安装的jre,但最初不知道jdk和jre之间的关系,所以可能是缺省安装的。

在jdk的狂野吐司下,基本上有一些可执行文件,而且还不大。 实际上,这些可执行文件只是外层的封装。 这样做的目的是避免输入的命令太长。 例如,javac.exe在内部调用了JDK lib目录中tools.jar的com.sun.tools.javac.Main类。 也就是说,这些工具只是入口。 实际上,它们本身是用Java编写的,所以jdk目录中的jre既提供了这些工具的运行环境,也提供了完成的Java程序的运行环境。

因此,显然,jdk是一个与jre集成的开发工具包。 因此,安装jdk时,您也可以直接使用jdk的jre运行Java程序,而不安装jre。 但是,大多数人默认安装两者。 但是,如果你的电脑不是用来开发Java程序的,而只是用来部署和运行Java程序的话,不安装jdk,安装jre就足够了。

下一个问题,为什么Java可以跨平台一次创建并在多个位置运行?

Java可以跨平台运行的核心是JVM。 不是Java可以跨平台,而是jvm可以跨平台。 我知道不同的操作系统有不同的向上API,所以要写代码调用系统的声音设备,必须为系统的每个API写不同的代码来完成操作。

另一方面,Java引入了字节码的概念,jvm只能识别字节码,并将它们解释为系统的API调用。 每个系统都有不同的jvm实现,包括Linux版本的jvm实现和Windows版本的jvm实现,但编译相同代码后的字节码是相同的。 引用以上示例,调用系统声音设备的代码在Java API级别是唯一的,无论系统如何,编译生成的字节码也是唯一的。 但是,不同的jvm实现将相同的字节码映射到不同系统的API调用,这样就可以跨平台运行,而无需更改实现代码。

本文主要介绍了Java相关的最基本概念。 理解了这些基本概念后,后续的学习就有了依据,不会出现混乱。

文章中的所有代码、图片和文件都云存储在我的GitHub上:

请关注微信公众号。 跳进代码的高尔基,所有的文章都与公众号同步。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。