我从这里javac
下载了源代码,发现它本身是用 java 语言编写的。但是,我期待它是用 c/c++ 编写的。
无论如何,在没有java编译器的情况下,这个用java编写的java编译器源代码是如何编译的呢?
我从这里javac
下载了源代码,发现它本身是用 java 语言编写的。但是,我期待它是用 c/c++ 编写的。
无论如何,在没有java编译器的情况下,这个用java编写的java编译器源代码是如何编译的呢?
用它编译的语言编写的编译器称为引导编译器。
它们的制作方式有点让人头疼,但想想:当原始语言被编写时,没有 java,所以他们不得不用另一种语言创建编译器,实际上,它是用 C/C++ 编写的. 在这里检查一下:Java 编译器和 JVM 是用哪种语言编写的?
此外,我不知道您是否知道,Java 的工作方式是编译器 ( javac
) 实际上不生成机器代码文件,它创建然后由 JVM解释的字节码文件。
您通常需要一个现有的 Java 编译器(和运行时)来引导。但是,还有其他可用的 Java 编译器,例如Jikes,它们是用 C++ 编写的。是否可以使用 Jikes 引导 OpenJDK 是另一回事,但理论上应该是可以的。