Java编译器(javac)、虚拟机(JVM)和Java启动器是用哪种语言编写的?
当前回答
来自Java文档
编译器是用Java编写的,运行时是用ANSI C编写的
其他回答
第一个Java编译器是由Sun Microsystems开发的,用C语言编写,使用了c++中的一些库。今天,Java编译器是用Java编写的,而JRE是用C编写的。
我们可以想象一下Java编译器是如何用Java编写的:
Java编译器是作为Java程序编写的,然后用C语言编写的Java编译器(第一个Java编译器)进行编译。因此,我们可以使用新编译的Java编译器(用Java编写)来编译Java程序。
原则上几乎任何事情,通常C
来自Java文档
编译器是用Java编写的,运行时是用ANSI C编写的
这个问题的精确措辞有点误导人:它不是“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)
实际上,Oracle JVM是用c++编写的,而不是C。
看看HotSpot JVM代码:http://openjdk.java.net/groups/hotspot/
推荐文章
- 如何获得具有已知资源名称的资源id ?
- 在Android上将字符串转换为整数
- 为什么“System.out。”println“工作在Android?
- 在Java中什么时候使用可变参数?
- Mockito的argumentCaptor的例子
- 我如何告诉Spring Boot哪个主类用于可执行jar?
- 如何将Java8流的元素添加到现有的列表中
- 在Java 8中是否可以转换流?
- 不区分大小写的字符串作为HashMap键
- 什么是maven中的“pom”打包?
- 在Java中创建一个自定义事件
- 创建正则表达式匹配数组
- 我如何在Java中初始化一个全零的数组列表?
- 主体、使用者和主体之间的意义和区别是什么?
- 将字节转换为十六进制