1. Java程序执行过程
一个 Java 程序,首先经过 javac 编译成 .class 文件,然后 JVM 将其加载到方法区,执行引擎将会执行这些字节码。执行时,会翻译成操作系统相关的函数。JVM 作为 .class 文件的翻译存在,输入字节码,调用操作系统函数。
JIT编译成会直接将热点代码编译成与本地平台相关的机器码。
2. JVM跨平台性与语言无关性
JVM跨平台性是指Java代码编译成字节码后,可以在Windows、Linux等平台直接执行,不需要重新编译,且运行效果是一致的。JVM跨平台性是通过不同平台上有对应版本的JVM实现的。
JVM语言无关性是指JVM只识别字节码,不只有Java编写的代码可以在JVM上运行,像scala、kotlin等都可以编译成字节码在JVM上运行。
3. 常见的虚拟机
常见的JVM实现有:Hotspot、Jrocket、J9、TaobaoVM、LiquidVM、zing。