Java编译器( javac ),虚拟机(JVM)和 java 起始函是用哪种语言编写的?
javac
java
第一个Java编译器是由Sun Microsystems开发的,是用C语言编写的 . 今天,Java编译器是用Java编写的,而JRE是用C编写的 .
我们可以想象Java编译器是如何用Java编写的:
Java编译器编写为Java程序,然后使用C编写的Java编译器(第一个Java编译器)进行编译 . 因此,我们可以使用新编译的Java编译器(用Java编写)来编译Java程序 .
来自Java Docs
编译器是用Java编写的,运行时是用ANSI C编写的
假设你在谈论Hotspot JVM,它是由Sun提供的iirc,它是用C语言编写的 . 有关各种Java虚拟机的更多信息,可以查看link . 与大多数Java编译器一样,javac是用Java编写的 .
This link应该回答你的问题
看起来编译器现在用Java编写,但运行时是用ANSI C编写的
原则上几乎任何东西,通常是C.
Jikes RVM,一个广泛用于研究目的的自托管JVM是用Java编写的 . 它's not the one people run on their desktops, but it'在我的"now let's show off the general power of the language."列表上
在大多数操作系统上,JVM是用ISO C编写的 . 我怀疑使用ANSI C,因为它是一种完全不同的语言,现在相当陈旧 .
实际上Oracle JVM是用C语言编写的,而不是C.
在这里查看HotSpot JVM代码:http://openjdk.java.net/groups/hotspot/
问题的精确措辞有点误导:它不是"the JVM"或"the compiler",因为有 multiple JVM vendors (jrockit是一个,IBM另一个)和 multiple compilers 那里 .
Sun JVM是用 C 编写的,虽然不一定是这种情况 - 在您的机器上运行的JVM是一个依赖于平台的可执行文件,因此最初可能是用任何语言编写的 . 例如,原始IBM JVM是用 Smalltalk 编写的
C
Java库( java.lang , java.util 等,通常称为Java API)本身是用Java编写的,尽管标记为 native 的方法将用 C 或 C++ 编写 .
java.lang
java.util
native
C++
我相信Sun提供的Java编译器也是用Java编写的 . (虽然再次,有多个编译器)
9 回答
第一个Java编译器是由Sun Microsystems开发的,是用C语言编写的 . 今天,Java编译器是用Java编写的,而JRE是用C编写的 .
我们可以想象Java编译器是如何用Java编写的:
Java编译器编写为Java程序,然后使用C编写的Java编译器(第一个Java编译器)进行编译 . 因此,我们可以使用新编译的Java编译器(用Java编写)来编译Java程序 .
来自Java Docs
假设你在谈论Hotspot JVM,它是由Sun提供的iirc,它是用C语言编写的 . 有关各种Java虚拟机的更多信息,可以查看link . 与大多数Java编译器一样,javac是用Java编写的 .
This link应该回答你的问题
看起来编译器现在用Java编写,但运行时是用ANSI C编写的
原则上几乎任何东西,通常是C.
Jikes RVM,一个广泛用于研究目的的自托管JVM是用Java编写的 . 它's not the one people run on their desktops, but it'在我的"now let's show off the general power of the language."列表上
在大多数操作系统上,JVM是用ISO C编写的 . 我怀疑使用ANSI C,因为它是一种完全不同的语言,现在相当陈旧 .
实际上Oracle JVM是用C语言编写的,而不是C.
在这里查看HotSpot JVM代码:http://openjdk.java.net/groups/hotspot/
问题的精确措辞有点误导:它不是"the JVM"或"the compiler",因为有 multiple JVM vendors (jrockit是一个,IBM另一个)和 multiple compilers 那里 .
Sun JVM是用
C
编写的,虽然不一定是这种情况 - 在您的机器上运行的JVM是一个依赖于平台的可执行文件,因此最初可能是用任何语言编写的 . 例如,原始IBM JVM是用 Smalltalk 编写的Java库(
java.lang
,java.util
等,通常称为Java API)本身是用Java编写的,尽管标记为native
的方法将用C
或C++
编写 .我相信Sun提供的Java编译器也是用Java编写的 . (虽然再次,有多个编译器)