Java编译器和JVM编写的语言是什么?
Java 编译器 ( javac
),虚拟机(JVM)和java
启动器编写的语言是哪种?
这个问题的精确措辞有些误导:它不是“JVM”或“编译器”,因为有多个JVM供应商 (jrockit是IBM的另一个),还有多个编译器 。
-
Sun JVM 是用
C
编写的,尽pipe不一定是这种情况 – JVM在您的机器上运行时是一个依赖于平台的可执行文件,因此可能原本是用任何语言编写的。 例如,最初的IBM JVM是用Smalltalk编写的 -
Java库(
java.lang
,java.util
等,通常被称为Java API )本身是用Java编写的,尽pipe标记为native
方法将用C
或C++
编写。 -
我相信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是一种完全不同的语言,现在已经很老旧了。