Java 编译器(javac
),虚拟机(JVM)和java
初学者编写的语言是什么?
答案 0 :(得分:159)
问题的精确措辞有点误导:它不是“JVM”或“编译器”,因为有多个JVM供应商(jrockit是一个,IBM另一个)和多个编译器那里。
Sun JVM 用C
编写,虽然不一定是这种情况 - 在您的机器上运行的JVM是平台相关的< / em>可执行文件,因此可能最初是用任何语言编写的。例如,原始IBM JVM是用 Smalltalk
Java库(java.lang
,java.util
等,通常称为 Java API )本身是用Java编写的,尽管标记为{{的方法1}}将使用native
或C
。
我相信Sun提供的Java编译器也是用Java编写的。 (虽然再次,有多个编译器)
答案 1 :(得分:65)
第一个Java编译器是由Sun Microsystems开发的,使用C ++中的一些库用C语言编写。今天,Java编译器是用Java编写的,而JRE是用C语言编写的。
我们可以想象Java编译器是如何用Java编写的:
Java编译器编写为Java程序,然后使用C编写的Java编译器(第一个Java编译器)编译。因此,我们可以使用新编译的Java编译器(用Java编写)来编译Java程序。
答案 2 :(得分:62)
编译器是用Java编写的,运行时是用ANSI C编写的
答案 3 :(得分:15)
实际上,Oracle JVM是用C ++编写的,而不是C语言。
在此处查看HotSpot JVM代码:http://openjdk.java.net/groups/hotspot/
答案 4 :(得分:9)
This link应该回答你的问题
似乎编译器现在用Java编写,但运行时是用ANSI C编写的
答案 5 :(得分:8)
原则上几乎所有东西,通常是C
答案 6 :(得分:3)
Jikes RVM,一个广泛用于研究目的的自托管JVM是用Java编写的。这不是一个人在他们的桌面上运行,但它在我的名单上“现在让我们展示语言的一般力量。”
答案 7 :(得分:3)
假设您在谈论Hotspot JVM,它是由Sun提供的iirc,它是用C ++编写的。有关各种Java虚拟机的更多信息,可以查看link。 与大多数Java编译器一样, javac 是用Java编写的。
答案 8 :(得分:0)
(有关更多信息,您可以检查此链接:https://docs.oracle.com/javase/specs/jvms/se7/html/)
答案 9 :(得分:-2)
在大多数操作系统上,JVM是用ISO C ++编写的。我怀疑是否使用了ANSI C,因为它是一种完全不同的语言,现在相当陈旧。