Java编译器(javac)、虚拟机(JVM)和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编译器是由Sun Microsystems开发的,用C语言编写,使用了c++中的一些库。今天,Java编译器是用Java编写的,而JRE是用C编写的。
我们可以想象一下Java编译器是如何用Java编写的:
Java编译器是作为Java程序编写的,然后用C语言编写的Java编译器(第一个Java编译器)进行编译。因此,我们可以使用新编译的Java编译器(用Java编写)来编译Java程序。
来自Java文档
编译器是用Java编写的,运行时是用ANSI C编写的
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/)
实际上,Oracle JVM是用c++编写的,而不是C。
看看HotSpot JVM代码:http://openjdk.java.net/groups/hotspot/
Jikes RVM,一个广泛用于研究目的的自托管JVM,是用Java编写的。它不是人们在桌面上运行的那种,但它在我的“现在让我们展示一下这种语言的强大功能”列表中名列前茅。
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?
- Recyclerview不调用onCreateViewHolder
- 将JSON字符串转换为HashMap