专栏首页Java后端技术栈cwnait面试官:JDK、JRE、JVM 三者什么关系?

面试官:JDK、JRE、JVM 三者什么关系?

这个题目在面试题中基本没怎么出现,但在笔试题中倒是经常见到。所以还是有必要拉出来溜溜~

JDK: java development kit, java开发工具包,用来开发Java程序的,针对java开发者。 JRE: java runtime environment, java运行时环境,针对java用户 JVM: java virtual machine,java虚拟机 用来解释执行字节码文件(class文件)的。

JDK

JDK 即为 Java 开发工具包,包含编写 Java 程序所必须的编译、运行等开发工具以及 JRE。开发工具如:

  • 用于编译 Java 程序的 javac 命令。
  • 用于启动 JVM 运行 Java 程序的 Java 命令。
  • 用于生成文档的 Javadoc 命令。
  • 用于打包的 jar 命令等等。

简单说,就是 JDK 包含 JRE 包含 JVM。

JRE

JRE 即为 Java 运行环境,提供了运行 Java 应用程序所必须的软件环境,包含有 Java 虚拟机(JVM)和丰富的系统类库。系统类库即为 Java 提前封装好的功能类,只需拿来直接使用即可,可以大大的提高开发效率。

简单说,就是 JRE 包含 JVM。

JVM

JVM 即为 Java 虚拟机,提供了字节码文件(.class)的运行环境支持。

JDK > JRE > JVM

扩展题1:为什么 Java 被称作是“平台无关的编程语言”?

Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。

  • Java 源文件( .java )被编译成能被 Java 虚拟机执行的字节码文件( .class )。
  • Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
扩展题2:JDK 各版本的新特性?
  • JDK5 ~ JDK10 ,看: https://www.jianshu.com/p/37b52f1ebd4a 。
  • JDK11 ,看: https://www.jianshu.com/p/81b65eded96c 。

对于大多数面试官,肯定不会问你 JDK 各版本的新特性,更多的会问 JDK8 引入了什么重要的特性?一般上,关键的回答是Lambda 表达式和集合之流式操作,然后说说你在项目中怎么使用的。

扩展题3:Java 和 C++ 的区别?
  • 都是面向对象的语言,都支持封装、继承和多态。
  • Java 不提供指针来直接访问内存,程序内存更加安全。
  • Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。
  • Java 有自动内存管理机制,不需要程序员手动释放无用内存。

本文分享自微信公众号 - Java后端技术全栈(jjs-2018),作者:田老师

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 开发规范:学习资料 PDF 版下载

    现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点,其它维度的知识点也会影响到软件的最终交付质量。

    用户4143945
  • 10 大 Java面试难题,打趴无数面试者!

    这是我收集的10个最棘手的Java面试问题列表。这些问题主要来自 Java 核心部分 ,不涉及 Java EE 相关问题。你可能知道这些棘手的 Java 问题的...

    用户4143945
  • 10个Java开发人员的顶级测试工具、库和框架介绍

    最近,我写了一些关于Java开发人员今年应该学习什么的文章,例如编程语言、库 和 框架,但如果你只有一件事需要改进或学习,那么那必须是你的自动化测试技能。

    用户4143945
  • 如果你不想长期996,看看这个

    导读:马云说996是“修来的福报”;刘强东给你讲了“地板闹钟的故事”;李国庆认为“管理者提高决策科学性比员工加班更有价值”;经济学家林采宜直接怼马云,说“996...

    华章科技
  • 技术开发中一些名词解释

    前言 现在还记得第一次面试的时候,被问HTML全称是什么,这才意识到记住全称并不是无理取闹,而是个人对这项技术的理解程度还没到。当你去了解一个技术的时候,名词...

    Ryan-Miao
  • Java_ 介绍_01

    Java语言为了实现上述所说的目标,使用了下面三个东西 1.Java 虚拟机(JVM) 2.垃圾回收机制 3.Java 运行环境(JRE) 接下来分别讲...

    酷走天涯
  • 【Java】01 初识 Java

       Java 语言的诞生具有一定的戏剧性,它并不是经过精心策划、制作,最后产生的划时代产品,从某个角度来看,Java 语言的诞生完全是一种误会。    19...

    Demo_Null
  • 教妹学Java(一):什么是Java?

    怎么学 Java 是个老生常谈的话题,为此我狠下了一番苦心,专栏名是不是很带劲?力求超凡脱俗。能点进来的小伙伴一定都是绅士,当然也会有妹子。我相信小伙伴们在阅读...

    沉默王二
  • 《Java从入门到失业》第一章:计算机基础知识(1.3):程序语言简介

    我们经常会听到一些名词:低级语言、高级语言、编译型、解释型、面向过程、面向对象等。这些到底是啥意思呢?在正式进入Java世界前,笔者也尝试简单的聊一聊这块东西。

    用户7801119
  • 【程序源代码】《JAVA基础》之Java语言基础

    时令已经过了白露,转眼就快到了中秋佳节,天天渐渐变凉,一派秋天肃杀的景象。2020年注定是一个不平凡的一年。新型肺炎带来的影响还在持续。生活和经济都蒙上了一些不...

    程序源代码

扫码关注云+社区

领取腾讯云代金券