6

我从这里javac下载了源代码,发现它本身是用 java 语言编写的。但是,我期待它是用 c/c++ 编写的。

无论如何,在没有java编译器的情况下,这个用java编写的java编译器源代码是如何编译的呢?

4

3 回答 3

4

这里

Sun Microsystems 开发的第一个 Java 编译器是使用 C++ 中的一些库用 C 语言编写的

此外,编译后的字节码由用 c++ 编写的 JVM 解释。从这里

名为 HotSpot 的 Oracle JVM 是用 C++ 语言编写的

于 2012-10-07T07:08:05.843 回答
1

用它编译的语言编写的编译器称为引导编译器。

它们的制作方式有点让人头疼,但想想:当原始语言被编写时,没有 java,所以他们不得不用另一种语言创建编译器,实际上,它是用 C/C++ 编写的. 在这里检查一下:Java 编译器和 JVM 是用哪种语言编写的?

此外,我不知道您是否知道,Java 的工作方式是编译器 ( javac) 实际上不生成机器代码文件,它创建然后由 JVM解释的字节码文件。

于 2012-10-07T07:07:17.357 回答
1

您通常需要一个现有的 Java 编译器(和运行时)来引导。但是,还有其他可用的 Java 编译器,例如Jikes,它们是用 C++ 编写的。是否可以使用 Jikes 引导 OpenJDK 是另一回事,但理论上应该是可以的。

于 2012-10-07T07:08:02.020 回答