Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
引导java和python编译器_Java_Python_Compiler Construction_Bootstrapping - Fatal编程技术网

引导java和python编译器

引导java和python编译器,java,python,compiler-construction,bootstrapping,Java,Python,Compiler Construction,Bootstrapping,上的wikipedia页面列出了python和java这两种编译器已启动的语言。javac和cpython不是用c实现的吗? 为什么这些语言列在那页上 对于Java,Java编译器(javac)和Java虚拟机(Java)之间存在区别。除非操作系统和/或CPU支持本机运行Java应用程序,否则您将需要JVM来运行任何Java应用程序 另一方面,ApacheMaven等工具是用Java编写的,并调用Java编译器。这不是通过调用Java包来实现的。描述如何执行此操作,以及如何配置插件以使用java

上的wikipedia页面列出了python和java这两种编译器已启动的语言。javac和cpython不是用c实现的吗?
为什么这些语言列在那页上

对于Java,Java编译器(
javac
)和Java虚拟机(
Java
)之间存在区别。除非操作系统和/或CPU支持本机运行Java应用程序,否则您将需要JVM来运行任何Java应用程序

另一方面,ApacheMaven等工具是用Java编写的,并调用Java编译器。这不是通过调用Java包来实现的。描述如何执行此操作,以及如何配置插件以使用
javac
可执行文件


总是需要一些本机代码。但是,没有什么能阻止您编写用Java本身生成Java字节码的所有代码。毕竟,它所做的是将文本转换成字节。您可以用任何编程语言(包括Java)实现这一点。

javac
是用Java编写的,并将Java源代码编译成字节码。该来源可在线获取。所以
javac
是自举的。您可能会将
javac
与JVM混淆,因为后者是用C编写的,用于将字节码编译成机器码并运行它


Python也是如此。编译器与执行环境不同。

创建自托管引导版本(我们称之为genesis)的编译器是用另一种语言编写的。这通常是C语言或汇编语言。提供用Java编写的Java编译器。对于JIT编译器,目标是最小化使用的非Java代码。Python有编译器吗?