Java编译器(javac)、虚拟机(JVM)和Java启动器是用哪种语言编写的?
当前回答
这个问题的精确措辞有点误导人:它不是“JVM”或“编译器”,因为有多个JVM供应商(jrockit是一个,IBM是另一个)和多个编译器。
The Sun JVM is written in C, although this need not be the case - the JVM as it runs on your machine is a platform-dependent executable and hence could have been originally written in any language. For example, the original IBM JVM was written in Smalltalk The Java libraries (java.lang, java.util etc, often referred to as the Java API) are themselves written in Java, although methods marked as native will have been written in C or C++. I believe that the Java compiler provided by Sun is also written in Java. (Although again, there are multiple compilers out there)
其他回答
来自Java文档
编译器是用Java编写的,运行时是用ANSI C编写的
原则上几乎任何事情,通常C
实际上,Oracle JVM是用c++编写的,而不是C。
看看HotSpot JVM代码:http://openjdk.java.net/groups/hotspot/
Jikes RVM,一个广泛用于研究目的的自托管JVM,是用Java编写的。它不是人们在桌面上运行的那种,但它在我的“现在让我们展示一下这种语言的强大功能”列表中名列前茅。
一如既往的流行语言,用- C、c++编写。
推荐文章
- 一对多、多对一、多对多的区别?
- 从枚举中选择一个随机值?
- 如何从URL获取参数与JSP
- 如何在Eclipse中生成Javadoc注释?
- 找到java类从哪里加载
- 从集合中随机选取一个元素
- 为什么x == (x = y)和(x = y) == x不一样?
- 什么Java 8流。收集等价物可在标准Kotlin库?
- 等待未来的名单
- 如何检查JSON键是否存在?
- 为什么MongoDB Java驱动在条件中使用随机数生成器?
- 即使从未抛出异常,使用try-catch块的代价是否昂贵?
- 什么时候我们应该使用观察者和可观察对象?
- Java中的split()方法对点(.)不起作用。
- Eclipse调试器总是阻塞在ThreadPoolExecutor上,没有任何明显的异常,为什么?