我对JVM的角色感到困惑。我的理解是正确的,JVM只将字节码转换为机器代码吗?因此,OS,JVM和CPU之间基本上存在通信。我的假设是字节码转换为机器码然后由CPU处理。
答案 0 :(得分:0)
JVM
是一个虚拟机。
就像在VMware或VirtualBox上安装某些操作系统(Linux,Solaris)时那样,它们就是虚拟机。它们运行在主机操作系统之上。
JVM
的不同之处在于它的机器代码为bytecode
。有些机器具有高级语言作为其机器代码。如果JVM要在硬件上而不是在主机操作系统上运行,那么它会期望硬件能够使用bytecode
指令集。
然而,由于它在主机OS之上运行,因此任何字节码指令在转换为机器代码后都会传送给主机。对于VMware / VirtualBox,这些软件会处理它。对于JVM,它由JRE
完成。
答案 1 :(得分:0)
JAVA是一种编译和解释语言,而不仅仅是解释语言。让我们看一步一步执行它的程序。
因此整个java程序由JVM和OS执行。虽然JVM充当java程序的迷你操作系统,但只有当指令不在其范围内时才会涉及操作系统。