1

具体来说,维基百科指出“JIT 编译是动态编译的一种形式,[...]” [1]。但这两个词不就是同义词吗?两者有什么区别?

是否有任何不是 JIT 编译的动态编译示例?或者如果做不到这一点,是否存在动态编译这个术语比 JIT 编译更合适的情况?

这两个术语似乎都是指在运行时执行编译。这两个术语似乎都描述了源代码编译和字节码编译。这两个术语似乎都涵盖了运行时优化。

我自己的印象是,JIT 编译是一个变得流行的术语,因为这就是 Java VM 中的动态编译的名称。这个概念越来越流行,其他程序运行时开始复制它,并用相同的名称称它为 JIT 编译。动态编译似乎是早于该开发的术语,并且主要出现在较旧的科学出版物中。

4

1 回答 1

3

诚然,维基百科令人困惑。首先它说:

即时(JIT)编译,也称为动态翻译...

然后它说:

JIT编译是动态编译的一种形式,可以进行动态重新编译等自适应优化...

这也说明动态翻译也是动态编译的一种形式,意义不大。

在 1995 年之前,动态编译是标准且唯一的术语,指代在运行时编译代码的技术系列。例如,查看1985 年讨论 Prolog 动态编译的这篇论文。很容易找到许多 1995 年以前的论文使用该术语。

然而,Java 编程语言是在 1995 年左右发布的,Java 文档首先使用术语JIT 编译JIT 编译器。尽管第一个 Java JIT 编译器是在 1996 年开发的,但我能找到的最早的此类文档是

我还记得我读过的一些论文认为 JIT 编译是一种动态编译。

于 2018-03-14T01:10:16.953 回答