解答JVM、JDK、JRE是什么?
JVM理解
JVM全称就叫java虚拟机是运行java字节码的一个东西(虚拟机),JVM针对不同的操作系统会有不用的特定实现(Windows,Linux,macOS),目的是为了将相同的字节码在不同的平台上面解释出相同的结果。所以,java的跨平台特性离不开JVM的支持!!!
“字节码”又是什么?
在java中,JVM可以识别的代码就是字节码,它也就是我们经常见到的以“.class”为扩展名的文件。它不面向任何特定的机器或者平台,只单纯的面向虚拟机。java通过字节码的方式,从一定程度上解决了传统解释性语言效率低的问题,并且还保持了解释性语言可移植的特点。
在.class文件这一步JVM类加载器首先加载字节码文件,然后通过解释器逐行解释执行,这样一来执行的速度就会比较慢。有的时候一个程序中有些方法和代码块需要被经常调用,所以后面也就引入了JIT编译器,也就是“运行时编译器”,当JIT编译器第一次编译后,会将字节码对应的机器码记录下来,下次可以直接使用,而机器码的运行效率是高于java解释器的(原因有兴趣的话可以自行百度)。
总结:
Java虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在
JRE和JDK理解
为什么会直接将JRE和JDK放在一起写,学过java的小伙伴应该也是知道的,JDK中是包含有JRE的。
简单套用一下搜索引擎中的解释:
JDK是Java Development Kit,它是功能齐全的Java SDK。它拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb)。它能够创建和编译程序。
JRE 是 Java运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java虚拟机(JVM),Java类库,java命令和其他的一些基础构件。但是,它不能用于创建新程序。
你知道吗?JDK有两种版本,OpenJDK和OracleJDK。
对于Java 7,没什么关键的地方。OpenJDK项目主要基于Sun捐赠的HotSpot源代码。此外,OpenJDK被选为Java 7的参考实现,由Oracle工程师维护。
这类知识作为小彩蛋来看就好,不用过于深究。
*本文涉及内容为小编自己从网上学习后的记录。如果有错请勿喷,可以联系我讨论,本文不作为商业用途,转载请注明出处。*