乐趣区

关于java:面试官JDKJREJVM-三者什么关系

关注Java 后端技术全栈”**

回复“面试”获取全套大厂面试材料

这个题目在面试题中根本没怎么呈现,但在口试题中倒是常常见到。所以还是有必要拉进去溜溜~

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/37b…。

  • JDK11,看:

    https://www.jianshu.com/p/81b…。

对于大多数面试官,必定不会问你 JDK 各版本的新个性,更多的会问 JDK8 引入了什么重要的个性?个别上,要害的答复是 Lambda 表达式和汇合之流式操作,而后说说你在我的项目中怎么应用的。

扩大题 3:Java 和 C++ 的区别?
  • 都是面向对象的语言,都反对封装、继承和多态。
  • Java 不提供指针来间接拜访内存,程序内存更加平安。
  • Java 的类是单继承的,C++ 反对多重继承;尽管 Java 的类不能够多继承,然而接口能够多继承。
  • Java 有主动内存管理机制,不须要程序员手动开释无用内存。

举荐浏览

腾讯面试官:如何进行一个正在运行的线程?我一脸蒙……

这 10 道 Spring 常见面试题,你能搞定吗?

面试问你 Spring 如何解决循环依赖的时候,不要一脸懵逼了!

退出移动版