为什么javac源代码是用java编写的?

时间:2012-10-07 07:03:24

标签: java compiler-construction javac

我已经从here下载了javac源代码,我发现它本身是用java语言编写的。但是,我原以为它是用c / c ++编写的。

无论如何,如果没有java编译器,这个用java编写的java编译器源代码怎么编译?

3 个答案:

答案 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是一个不同的故事,但从理论上讲,它应该是可能的。