Java 编译器(javac
),虚拟机(JVM)和java
启动器编写的语言是哪种?
这个问题的精确措辞有点误导:它不是"JVM"或"编译器",因为有多个JVM供应商(jrockit是一个,IBM另一个)和多个编译器.
太阳JVM 是写在C
,虽然这不是必须的情况下-因为它运行在您的机器是在JVM 平台相关的可执行文件,因此可能最初被用任何语言编写.例如,最初的IBM JVM是用Smalltalk编写的
Java库(java.lang
,java.util
等等,通常被称为了Java API)本身是用Java编写的,虽然标注为方法native
将已经写在C
或C++
.
我相信Sun提供的Java编译器也是用Java编写的.(虽然再次,有多个编译器)
第一个Java编译器是由Sun Microsystems开发的,使用C++中的一些库用C语言编写.今天,Java编译器是用Java编写的,而JRE是用C编写的.
我们可以想象Java编译器是如何用Java编写的:
Java编译器编写为Java程序,然后使用C编写的Java编译器(第一个Java编译器)进行编译.因此,我们可以使用新编译的Java编译器(用Java编写)来编译Java程序.
来自Java Docs
编译器是用Java编写的,运行时是用ANSI C编写的
实际上Oracle JVM是用C++编写的,而不是C.
在这里查看HotSpot JVM代码:http://openjdk.java.net/groups/hotspot/
此链接应该回答您的问题
似乎编译器现在用Java编写,但运行时是用ANSI C编写的
原则上几乎任何东西,通常是C.