关注“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 如何解决循环依赖的时候,不要一脸懵逼了!