compiler bootstrapping上的维基百科页面列出了python和java等语言,它们的编译器都是自举的。javac和cpython不是用c实现的吗?为什么这些语言会列在该页面上?
发布于 2018-04-22 17:14:00
javac是用Java编写的,它将Java源代码编译成字节码。源代码可以在网上找到。所以javac是自举的。您可能会将javac与JVM混淆,因为后者是用C编写的,用于将字节码编译为机器码并运行它。
Python也是如此。编译器和执行环境不是一回事。
发布于 2018-04-22 17:11:18
对于Java,在Java编译器(javac)和Java虚拟机(java)之间有区别。除非操作系统和/或CPU支持本机运行Java应用程序,否则您将需要JVM来运行任何Java应用程序。
另一方面,像Apache Maven这样的工具是用Java编写的,它们也会调用Java编译器。这不是通过调用Java包来完成的。The page on the Maven Compiler Plugin描述了如何做到这一点,以及如何将插件配置为使用javac可执行文件。
总是需要一些本机代码。但是,没有什么可以阻止您使用Java本身编写生成Java字节码的所有代码。毕竟,它所做的就是将文本转换成字节。您可以在任何编程语言中做到这一点,包括Java。
https://stackoverflow.com/questions/49964017
复制相似问题