首页 文章

Java编译器和JVM用哪种语言编写?

提问于
浏览
175

Java编译器( javac ),虚拟机(JVM)和 java 起始函是用哪种语言编写的?

9 回答

  • 14

    第一个Java编译器是由Sun Microsystems开发的,是用C语言编写的 . 今天,Java编译器是用Java编写的,而JRE是用C编写的 .

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

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

  • 3

    来自Java Docs

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

  • 3

    假设你在谈论Hotspot JVM,它是由Sun提供的iirc,它是用C语言编写的 . 有关各种Java虚拟机的更多信息,可以查看link . 与大多数Java编译器一样,javac是用Java编写的 .

  • 150

    This link应该回答你的问题

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

  • 58

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

  • -2

    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."列表上

  • 9

    在大多数操作系统上,JVM是用ISO C编写的 . 我怀疑使用ANSI C,因为它是一种完全不同的语言,现在相当陈旧 .

  • 56

    实际上Oracle JVM是用C语言编写的,而不是C.

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

  • 8

    问题的精确措辞有点误导:它不是"the JVM"或"the compiler",因为有 multiple JVM vendors (jrockit是一个,IBM另一个)和 multiple compilers 那里 .

    • Sun JVM是用 C 编写的,虽然不一定是这种情况 - 在您的机器上运行的JVM是一个依赖于平台的可执行文件,因此最初可能是用任何语言编写的 . 例如,原始IBM JVM是用 Smalltalk 编写的

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

    • 我相信Sun提供的Java编译器也是用Java编写的 . (虽然再次,有多个编译器)

相关问题