Java复习面试指南02JDK和JRE的区别?程序从源代码到运行经历哪几步?

Java虚拟机(Java Virtual Machine)

Java虚拟机(Java Virtual Machine)它是运行所有Java程序的虚拟计算机,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行.Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不专对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同的计算机上运行。

Java运行环境(Java Runtime Environment)

JRE是Java Runtime Environment(java运行环境),光有JVM还不能让class文件执行,因为在解释class的时候JVM需要调用解释所需要的类库lib,JRE录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib和起来就称为jre

Java开发工具包(Java Development Kit)

JDK是java development kit(Java开发工具包),程序员做Java开发时所需要的一些工具Javac.exe/jar.exe Java基础的类库/API

关系:

JDK包含JRE,而JRE包含JVM

 

关系图

Java编译过程

程序员编写好的Java源文件以.java结尾,这些源文件是我们程序员自己编写的,是给程序员看的,所以还要经过javac工具编译后,编译成让JVM能够识别的字节码.编译之后的文件变成了.class结尾的字节码文件,编译好的字节码.class的文件,还要主动调用java.exe程序,让JVM执行编译好的字码,最终我们才能看到执行之后的结果! 下图为执行过程:

 

Java编译执行过程

在执行字节码文件时,JVM类加载器首先加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度会相对 比较慢。有些方法和代码块是经常需要被调用的,也就是所谓的热点代码.后面引进了 JIT 编译器,JIT 属于运行时编译。

当 JIT 编译器完成第一次编译后,其会将字节码对应的机器码保存下来,下次可以直接使用。机器码的运行效率肯定是高于 Java 解释器的,这也解释了我们为什么经常会说 Java 是编译与解释共存的语言。

点击查看详细视频讲解

以下为疯码Java复习面试指南目录

第一阶段Java核心语法整理完毕,视频开始录制中,后续整理第二阶段内容

 
 
 
 
 
 
 
获取课件V: fmjava01
原文地址:https://www.cnblogs.com/myxq666/p/14670571.html