一、JDK\JRE\JVM
JDK: 全称 "Java Development Kit" ,Java 开发工具包,提供 javac 编译器、jheap、jconsole 等监控工具;
JRE: 全称"Java Runtime Environment",Java 运行环境,提供Class Library 核心类库 + JVM ;
JVM: 全称"Java Virtual Machine", Java虚拟机,用于运行Java 应用程序;
二、Java程序执行过程
1.编译: 通过 javac 命令,调用 JDK 编译器,将 *.java 源文件编译成 *.class 字节码文件。
2.执行: 通过 java 命令,调用 JVM 虚拟机,执行 *.class 字节码文件。
三、Java实现跨平台的原因
1.不同平台,通用的字节码文件
2.不同的平台的JVM虚拟机版本,用于将字节码翻译成当前平台可以执行的机器码指令。
四、JVM执行方式
JVM 以解释+编译的混合模式,执行字节码文件(解释为主,编译为辅)。
1. 一方面,以解释执行为主,即JVM将字节码文件中的每个指令通过解释器转换成当前平台可识别的机器码后交 CPU 执行。
2. 另一方面,为提高执行效率,在运行期间通过热点代码统计分析,识别高频的方法调用、循环体、公共模块等。当超过阈值时,基于 JIT 即时编译器将热点代码转换成机器码交 CPU 执行。
其中,在 client 模式下默认阈值是 1500 次,Server 模式下是 10008 次
五、JVM组成结构
JVM 由类加载器、运行时数据区、 JVM 解释器、 JIT 即时编译器、垃圾回收器、本地方法库等部分组成。
由类加载器完成字节码文件的加载验证和解析,存储至运行时数据区,并由执行引擎中的解释器,完成字节码到机器码的解释执行。同时进行热点代码的统计分析,调用 JIT 即时编译器将字节码直接编译成机器码,提高执行效率。JVM运行期间的方法调、数据对象统存放至运行时数据区。