Java编译器和JVM编写的语言是什么?

Java 编译器javac ),虚拟机(JVM)和java启动器编写的语言是哪种?

这个问题的精确措辞有些误导​​:它不是“JVM”“编译器”,因为有多个JVM供应商 (jrockit是IBM的另一个),还有多个编译器

  • Sun JVM C编写的,尽pipe不一定是这种情况 – JVM在您的机器上运行时是一个依赖平台的可执行文件,因此可能原本是用任何语言编写的。 例如,最初的IBM JVM是用Smalltalk编写的

  • Java库( java.langjava.util等,通常被称为Java API )本身是用Java编写的,尽pipe标记为native方法将用CC++编写。

  • 我相信Sun提供的Java编译器也是用Java编写的。 (虽然同样有多个编译器)

从Java文档

编译器用Java编写,运行时用ANSI C编写

第一个Java编译器是由Sun Microsystems开发的,使用C ++库编写的。 今天,Java编译器是用Java编写的,而JRE是用C编写的。

我们可以想象Java编译器是如何用Java编写的:

Java编译器被编写为Java程序,然后用C编写的Java编译器(第一个Java编译器)进行编译。 因此,我们可以使用新编译的Java编译器(用Java编写)来编译Java程序。

实际上,Oracle JVM是用C ++编写的,而不是C

看看这里的HotSpot JVM代码: http : //openjdk.java.net/groups/hotspot/

这个链接应该回答你的问题

看起来编译器现在用Java编写,但运行时是用ANSI C编写的

原则上几乎任何东西,通常是C.

Jikes RVM ,一种广泛用于研究目的的自托pipeJVM,是用Java编写的。 这不是一个人在他们的桌面上运行,但是它的名单上的“现在让我们炫耀语言的总体力量”的方式。

假设你正在谈论的是由Sun提供的iirc的热点JVM,它是用C ++编写的。 有关用于Java的各种虚拟机的更多信息,可以查看此链接 。 像大多数Java编译器一样, javac是用Java编写的。

大多数操作系统,JVM都是用ISO C ++编写的。 我怀疑ANSI C是一种完全不同的语言,现在已经很老旧了。