Java 编译器 (javac)、虚拟机(JVM)和java启动器是用哪种语言编写的?
javac
java
原则上几乎任何事情,通常C
从Java文档
编译器是用Java编写的,运行时是用ANSI C编写的
这个链接应该回答你的问题
现在编译器似乎是用Java编写的,但运行时是用ANSI C编写的
Jikes区,一个广泛用于研究目的的自托管JVM是用Java编写的。它不是人们在桌面上运行的那种,但它在我的“现在让我们展示一下这种语言的强大功能”列表中名列前茅。
这个问题的精确措辞有点误导人:它不是“JVM”或“编译器”,因为那里有多个JVM供应商 (jrockit是一个,IBM是另一个)和多个编译器。
Sun JVM 是写在C中,尽管这并不需要是这种情况- JVM在您的机器上运行时是一个平台依赖的可执行文件,因此可以最初是用任何语言编写的。例如,最初的IBM JVM是在Smalltalk中编写的
C
Java库(java.lang, java.util等,通常被称为 The Java API)本身是用Java编写的,尽管标记为native的方法将用C或C++编写。
java.lang
java.util
native
C++
我相信Sun提供的Java编译器也是用Java编写的。(尽管有多种编译器)
实际上,Oracle JVM是用c++编写的,而不是C。
看看HotSpot JVM代码:http://openjdk.java.net/groups/hotspot/
第一个Java编译器是由Sun Microsystems开发的,用C语言编写,使用了c++中的一些库。今天,Java编译器是用Java编写的,而JRE是用C编写的。
我们可以想象一下Java编译器是如何用Java编写的:
Java编译器是作为Java程序编写的,然后用C语言编写的Java编译器(第一个Java编译器)进行编译。因此,我们可以使用新编译的Java编译器(用Java编写)来编译Java程序。
(更多信息,你可以检查这个链接:https://docs.oracle.com/javase/specs/jvms/se7/html/)
一如既往的流行语言,用- C、c++编写。