JVM 就是一个虚拟机(或者说就是一个程序),用来解释和运行编译好的 .class
字节码文件。
因为字节码文件不能直接执行,因此需要 JVM 虚拟机将字节码解释成机器码并运行。
同时,JVM 还能够自动分配内存和垃圾回收,同时还能够对热点代码进行优化,即时编译,提高运行效率。
主要是为了支持跨平台特性,「一次编译,到处运行」
Java 统计代码中的热点代码,将字节码解释为机器码并保存到内存,下次运行的时候直接调用就可以了。
《Java虚拟机规范》由 Oracle 制定,内容主要包含了 Java 虚拟机在设计和实现时需要遵守的规范,主要包含class字节码文件的定义、类和接口的加载和初始化、指令集等内容。
《Java 虚拟机规范》是对虚拟机设计的要求,而不是对 Java 设计的要求,也就是说虚拟机可以运行在其他的语言比如 Groovy、Scala 生成的 class 字节码文件之上。