【问题标题】:Bootstrapping java and python compilers引导 java 和 python 编译器
【发布时间】:2018-04-22 08:31:52
【问题描述】:

compiler bootstrapping 上的维基百科页面将 python 和 java 列为编译器被引导的语言之一。 javac和cpython不是用c实现的吗? 为什么该页面上列出了这些语言?

【问题讨论】:

  • 创建自托管引导版本(我们称之为创世纪)的东西是用另一种语言编写的。这通常是 C 或汇编程序。
  • JikesRVM 提供了一个用 Java 编写的 Java 编译器。对于 JIT 编译器,project metropolis 旨在尽量减少使用的非 Java 代码。

标签: java python compiler-construction bootstrapping


【解决方案1】:

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

Python 也是如此。编译器和执行环境不是一回事。

【讨论】:

  • Python 有编译器吗?
【解决方案2】:

对于 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)来执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 2012-09-23
    • 2020-12-25
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    相关资源
    最近更新 更多