据我所知,JVM是一个进程虚拟机,这意味着它不会模拟整个现有的计算机架构,只能模拟/模仿主机的CPU。
现在,我的问题是: 为什么.class java文件需要在虚拟CPU(即JVM)中执行而不是在主机的实际CPU内存上执行?
答案 0 :(得分:1)
对于在实际CPU上运行的代码,它必须位于该CPU的指令集中。每个CPU架构都有自己独特的指令集,因此为一个CPU编写的代码不会在另一种类型的CPU上运行。
定义Java虚拟机的目的是让代码在任何类型的计算机上运行,只要它有一个JVM解释器。
答案 1 :(得分:1)
JVM指令不是真正的CPU指令,而是用于抽象CPU。 在JVM字节代码上添加一些安全性证明。 JVM实现的即时编译器将根据需要将抽象指令转换为主机CPU指令,以实现更好的性能。
答案 2 :(得分:1)
JVM实际上将java字节码转换为适用于该特定CPU的指令集。每个CPU都没有类似的指令集。 因此可以生成.class文件,因为它可以在任何CPU上运行。 JVM负责转换为适用于它的机器代码。