我对JVM有一个非常基本的问题:它是编译器还是解释器?
如果它是解释器,那么JVM内部存在的JIT编译器怎么办?
如果两者都不是,那么JVM到底是什么?(我不希望将字节码转换为机器特定的代码等jVM的基本定义。)
首先,让我们对以下术语有一个清晰的认识
Javac
是Java编译器-将Java代码编译为 Bytecode
JVM
是Java虚拟机-运行/解释/将字节码转换为本 机代码
JIT
是即时编译器-在 运行 本机代码之前,将给定的字节码指令序列在 运行时 编译为机器代码。它的主要目的是对性能进行重大优化。
现在,让我们找到您问题的答案。
1)JVM: is it a compiler or an interpreter?
- 答案: 口译员
2)what about JIT compiler that exist inside the JVM?
- 答:
如果您完整阅读了此回复,则可能现在知道了
3)what exactly is the JVM?
- 答:
.class
文件 加载 到RAM中希望这对您有所帮助。
问题内容: PHP是编译还是解释? 问题答案: PHP是一种解释型语言。可以解释PHP的二进制文件已编译,但是您编写的文件却被解释。
请注意,我的问题是关于JVM解释器,而不是JIT编译器。JIT编译器将java字节码转换为本机代码。因此,这必须意味着JVM中的解释器不会将字节码转换为机器码。因此,问题是:从本质上讲,口译员做什么?如果有人能帮我用一个简单的字节码示例来回答这个问题,相当于1 1=2,即解释器在执行这个加法操作时做了什么?(我的隐含问题是,如果解释器不翻译为机器代码,那么哪个CPU执行添加操作,那么该操作是如何执
问题内容: 过去,我使用C 作为编程语言。我知道用C 编写的代码会经过编译过程,直到成为目标代码“机器代码”为止。 我想知道Java在这方面如何工作。用户编写的Java代码如何由计算机运行? 问题答案: Java实现通常使用两步编译过程。Java编译器将Java源代码编译为字节码。字节码由Java虚拟机(JVM)执行。现代JVM使用称为即时(JIT)编译的技术将字节码编译为硬件CPU在运行时即时理
我读过一些关于编译程序和解释器之间差异的答案。他们中的大多数人在解释口译员的工作方式时会说: 它每次执行一行程序,并在运行它之前翻译每一行:它翻译第一行并运行它,然后翻译第二行并运行它,等等。 (来自解释器/编译器的工作原理) 这就是让我困惑的地方——从高级语言到机器代码的翻译被称为编译。根据定义(https://en.wikipedia.org/wiki/Compiler). 那么,说高级语言的
问题内容: 为什么我们说Java是一种编译和解释语言? (编译和解释)这样做有什么好处? 问题答案: Java在编译时被编译为中间的“字节码”。这与像C之类的语言在编译时被编译为机器语言相反。Java字节代码无法像编译的C代码那样直接在硬件上执行。相反,字节码必须在运行时由JVM(Java虚拟机)解释才能执行。像C这样的语言的主要缺点是,当编译该二进制文件时,该二进制文件将仅在一种特定的体系结构(
那么,让我看看我是否明白了这一点。 > 当我们说编译器和解释器之间的区别时,解释器将高级指令翻译成中间形式,然后执行。[我认为编译器也将高级指令翻译成中间形式,但此刻它生成目标代码而不是执行它,对吗?] 解释器一次读取一条指令或一行的源代码,将该行转换为机器代码并执行它。[解释器本身不会将代码转换为机器代码,它会使用ist自己的预编译函数评估指令(在解析之后)。例如,高级语言中的Add表达式将使用