我已经从here下载了javac
源代码,我发现它本身是用java语言编写的。但是,我原以为它是用c / c ++编写的。
无论如何,如果没有java编译器,这个用java编写的java编译器源代码怎么编译?
答案 0 :(得分:3)
来自here:
Sun Microsystems开发的第一个Java编译器是用C语言编写的,用C ++编写的。
除了编译的字节码由JVM解释,它是用c ++编写的。来自here:
名为HotSpot的Oracle JVM是用C ++语言编写的
答案 1 :(得分:1)
用它编译的语言编写的编译器称为自举编译器。
它们的制作方式是一种头脑旅行,但只是想一想:当原始语言被编写时,没有java,所以他们必须用另一种语言创建编译器,实际上,它是用C / C ++。请查看此处:In which language are the Java compiler and JVM written?
此外,Java的工作方式,我不知道你是否知道编译器(javac
)实际上没有生成机器代码文件,它创建的字节码文件是然后由JVM 解释。
答案 2 :(得分:1)
您通常需要现有的Java编译器(和运行时)来进行引导。但是,还有其他可用的Java编译器,如Jikes,它们是用C ++编写的。你是否可以使用Jikes来引导OpenJDK是一个不同的故事,但从理论上讲,它应该是可能的。