字节码被视为JVM的指令集?

bra*_*orm 3 java jvm bytecode processor instruction-set

我正在读关于instruction set维基和我碰到这一段就来了:

一些支持字节码作为其ISA的虚拟机,如Smalltalk,Java虚拟机和Microsoft的公共语言运行时,通过将常用代码路径的字节码转换为本机机器代码来实现这一点.此外,这些虚拟机通过解释执行不常用的代码路径(请参阅:即时编译).Transmeta以这种方式在VLIW处理器上实现了x86指令集.

这到底是什么意思?是bytecodesARE ISAJVMJVM在转支持ISA的处理器.

Mar*_*nov 10

是的,就像你猜到的那样.JVM/JRE使用Java字节码作为其指令集,并且每个JVM需要在本机/本地硬件(以及本地指令集)上编译并可运行.维基百科的这个图表说明了这一点,我认为:

在此输入图像描述

JRE/JVM需要针对其运行的特定硬件进行编译,尽管JVM本身的Java字节码定义和解释保持不变.正如您所指出的,Java字节码可以看作是Java源代码和本地机器/二进制代码之间的一种抽象层.它确实允许在典型的Java程序员之间分离关注点并且需要知道任何特定于机器的事物,因为几乎所有这些都由JVM/JRE处理.