Java 平台中的 JVM 和 .Net 平台下的 CLR 分别是用什么语言写的?

软件工程师、主攻高级编程语言虚拟机的设计与实现

375 👍 / 21 💬

问题描述

以 JVM 为例,我知道因为 JVM 的存在,使得 Java 语言可以跨平台,可前提是 JVM 本身就必须跨平台啊,否则怎么在 JVM 中运行.class 字节码文件?

前面的回答基本上都覆盖到关键点了:Java Class文件与.NET的Assembly文件格式都是公开的标准,其中的Java字节码与CIL(Common Intermediate Language)也都有公开的标准定义。这便于容纳多种不同的兼容实现。每个平台上的VM实现不需要源自同一份源码,只要它能接受标准格式的输入并相应实现标准中的程序语义即可。

这边来补充点实际例子吧:

JVM

还有用JavaScript实现的

Orto

、用

CoffeeScript

实现(现在用

TypeScript

实现)的

Doppio

之类的。JVM的实现实在太多了无法穷举。

然后跟JVM有深刻渊源的Android系VM中,

Common Language Infrastructure (CLI)

怎样,各种奇葩都有吧。可能性无限多。

之前我整理的一份列表里还有JVM与CLI的许多其它实现,楼主有兴趣的话可以参考:

hllvm.group.iteye.com/g