Java编译器(javac)、虚拟机(JVM)和Java启动器是用哪种语言编写的?
当前回答
这个链接应该能回答你的问题
现在编译器似乎是用Java编写的,但运行时是用ANSI C编写的
其他回答
Jikes RVM,一个广泛用于研究目的的自托管JVM,是用Java编写的。它不是人们在桌面上运行的那种,但它在我的“现在让我们展示一下这种语言的强大功能”列表中名列前茅。
第一个Java编译器是由Sun Microsystems开发的,用C语言编写,使用了c++中的一些库。今天,Java编译器是用Java编写的,而JRE是用C编写的。
我们可以想象一下Java编译器是如何用Java编写的:
Java编译器是作为Java程序编写的,然后用C语言编写的Java编译器(第一个Java编译器)进行编译。因此,我们可以使用新编译的Java编译器(用Java编写)来编译Java程序。
When Java was introduced by Sun Microsystem, the java compiler was written in C using some libraries from C++. As there is a concept in Compiler Design called Bootstrapping, Mostly it is used in Compiler Development, Bootstrapping is the process of writing a compiler(Or Assembler) In the source programming language which it is intended to compile. It is used to produce a self-hosting compiler. The development of compilers for new Programming languages first developed in an existing language and then rewritten in the new language and compiled by itself. That's why today, Java compiler is written in Java itself. Java Virtual Machine: Java virtual machine is an abstract machine. Like a real computing machine, It has an instruction set and manipulates various memory areas of runtime. Usually, JVM interprets the byte code into Machine code.
(有关更多信息,您可以查看此链接:https://docs.oracle.com/javase/specs/jvms/se7/html/)
这个链接应该能回答你的问题
现在编译器似乎是用Java编写的,但运行时是用ANSI C编写的
来自Java文档
编译器是用Java编写的,运行时是用ANSI C编写的
推荐文章
- Eclipse调试器总是阻塞在ThreadPoolExecutor上,没有任何明显的异常,为什么?
- Java生成两个给定值之间的随机数
- 如何有效地从数组列表或字符串数组中删除所有空元素?
- 比较JUnit断言中的数组,简洁的内置方式?
- codestyle;把javadoc放在注释之前还是之后?
- 如何在Spring中定义List bean ?
- 将Set<T>转换为List<T>的最简洁的方法
- 在JavaScript中,什么相当于Java的Thread.sleep() ?
- 使用Java重命名文件
- URL从Java中的类路径加载资源
- .toArray(new MyClass[0]) or .toArray(new MyClass[myList.size()])?
- Hibernate中不同的保存方法之间有什么区别?
- Java 8流和数组操作
- Java Regex捕获组
- Openssl不被视为内部或外部命令