Java常见笔试题之JDK&JRE&JVM分别是什么以及三者之间的关系

Java是什么

Java是一门面向对象的编程语言,可以编写应用程序application(简称app);
Java是由C++语言编写,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

Java语言特点

  • 开源(开放源代码)性:开源表示免费,开放源代码
  • 面向对象性:Java语言中非常重要的一种编程理念,万物皆对象
  • 跨平台性:Java语言的使用可以无视操作系统之间的差异性
  • 编译性:Java代码编写完成后,需要经过编译过程,将.java文件编译成.class文件,java文件称为源文件, 计算机无法直接识别java文件, 因此编译成.class字节码文件
  • 动态性:java代码在执行过程中,可以修改内容

在Java语言中,最大的优点就是跨平台性,那么Java是如何实现跨平台的?

Java跨平台的实现

  1. 我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件
  2. Java虚拟机(JVM)就是负责将字节码文件(.class文件)翻译成特定平台下的机器码然后运行。也就是说,只要在不同平台上安装对应的JVM,就可以运行字节码文件,运行我们编写的Java程序。

在这里插入图片描述

注意:跨平台的是Java程序,不是JVM。JVM是用C/C++开发的,不同平台下需要安装不同版本的JVM

  • 特点:一次编译,到处运行
  • 解释:Java语言代码编译一次,代码就可以在不同操作系统中运行,并且还能得到相同的运行结果

Java语言的使用可以无视操作系统之间的差异性

JVM : Java虚拟机,理解成一个软件,模拟计算机实现过程, 一个虚拟机就像是一个小型的计算机,主要功能就是可以运行标准的Java代码, JVM虚拟机为Java代码营造出相同运行环境

所以说,JVM是 Java 能够跨平台的核心

JVM&JRE&JDK简介

  • JVM(Java Virtual Machine): Java虚拟机,是运行所有Java程序的假想计算机,是Java程序的运行环境,是Java 最具吸引力的特性之一.我们编写的Java代码,都运行在 JVM 之上.
  • JRE(Java Runtime Environment): 是Java程序的运行时环境,但是单独的JVM虚拟机不能自己运行,需要支持JVM运行的功能代码,JRE包含 JVM 和运行时所需要的 核心类库
    核心类库:很多功能代码, 代码太多, 为了便于管理, 因此将代码放置到一个库中管理.
    JRE = JVM + JVM运行时需要的核心类库(支持、依赖)功能;
  • JDK (Java Development Kit): 是Java程序开发工具包,包含 JRE 和开发人员使用的工具,例如javac.exe(编译器) 和 javadoc.exe(可以自动为Java的代码生成说明文档)
    JDK : 全称Java开发工具包, 主要功能就是可以进行Java代码的编译(编写), 还有运行
    JDK = JRE + 开发时需要工具包;

三者关系

  1. 首先是JDK,JDK是 Java 语言的软件开发工具包(SDK)
    在JDK的安装目录下有一个jre目录
    如下图所示(以电脑上安装的jdk1.8.0_201为例)
    在这里插入图片描述

  2. 选择jre文件夹打开后,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。如下图:
    在这里插入图片描述

ps:大家可以找到自己电脑上jdk的安装路径看一下是否一样,加深一下印象

综上,三者的关系,下图清晰明朗
在这里插入图片描述

联系与区别

这里的内容是为了加深理解

  1. 我们利用JDK写了自己的JAVA代码程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。
  2. JRE:(Java运行环境)包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器)
  3. JDK和JRE区别:在jdk下的bin文件夹下会发现,JDK有javac.exe而JRE里面没有,javac指令是用来将java文件编译成class文件的,这是开发者需要的,而用户(只需要运行的人)是不需要的。JDK还有jar.exe, javadoc.exe等等用于开发的可执行指令文件。这也证实了jdk是开发环境,jre是运行环境。jdk是给开发人员使用的,jre和jvm是给普通用户使用。
  4. JRE和JVM区别:JVM并不代表就可以执行.class了,JVM执行.class还需要JRE下的lib类库的支持(rt.jar)
    ps:可以结合上面的文件包含关系来理解

总之,JDK、JRE、JVM三者之间的关系非常重要!!!
一定要做到深刻理解并可以用自己的语言来描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸鱼的眼泪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值