【Java基础】JVM、JDK、JRE区别

JVM、JDK、JRE

【Java基础】JVM、JDK、JRE区别
参考:JDK与JRE区别

JVM

JVM(Java虚拟机)是运行Java字节码的虚拟机,有针对不同系统的特定实现(Window、Linux、macOS等),目的是使用相同的字节码,给出相同的结果。字节码和不同系统的JVM实现是Java语言“一次编译、处处运行”的关键。

什么是字节码?字节码有什么好处?
概念:在Java中,JVM可以理解的代码就叫做字节码文件,即.class文件,不面向任何特定的处理器,只面向虚拟机
优点:1、由于字节码文件只面向虚拟机,不面向任何处理器,因而Java程序无需重新编译便可在不同的操作系统中运行
2、解决了传统解释型语言执行效率低的问题——JVM类加载器加载字节码文件,然后通过解释器逐行解释执行,当有些方法和代码块经常被调用,便会通过JIT编译器编译后保存对应的机器码,下次可以直接使用
3、保留了解释型语言可移植的特点(Java使用字节码文件可以跨平台运行)。

【Java基础】JVM、JDK、JRE区别

JRE

Java Runtime Environment(Java运行环境),是运行已编译Java程序所需的所有内容的集合,包括JVM、Java类库、Java命令和其他的基础构件。不能创建新程序。

JDK

java Developement Kit(Java开发工具包),拥有JRE所拥有的一切,包括编译器(javac)和工具,可以创建和编译程序。

总结:

  • 有jvm可以解释执行字节码文件.class
  • jvm解释执行字节码文件需要调用类库,如果没有类库JVM不能正常执行字节码文件,JVM+类库 = JRE
  • 有了JRE可以执行Java程序,但不能开发程序,因此JRE+开发工具 = JDK