代码之家  ›  专栏  ›  技术社区  ›  Justin L.

clojure程序/编译器/解释器实际上是如何“工作”的?

  •  13
  • Justin L.  · 技术社区  · 15 年前

    ruby program.rb ,而ruby是一个从一个地方执行的程序,放在文件中(我知道这与java、python等的工作原理类似)。

    clojure“解释器”仅仅是一个编译过的Java文件,它将.clj文件作为参数,并对其进行处理?

    1 回复  |  直到 14 年前
        1
  •  30
  •   Michał Marczyk    15 年前

    首先,Clojure没有翻译。所有Clojure代码在加载时都被编译成JVM字节码。我强调这一点,因为这是Clojure出色的表演故事的开始。

    第二,你并没有真正“安装”Clojure,就像你安装Ruby一样。Clojure是一个 jar 文件,它只是一堆Java类;如果你把 在类路径上,可以运行这些类的方法。在这些课程中, clojure.main 提供 main 运行REPLs和“脚本”的方法。因此,运行REPL实际上是在运行Java(即JVM)程序;和经营一家 clj 文件等于问 是入口点)。顺便说一句,这与JRuby完全相同。

    每一个JVM程序最终都“仅仅是一个编译过的Java文件”,或者可能是一堆这样的文件。要运行它,需要有一个JVM实例加载它并运行适当的 主要的 ruby 主要的 函数(相当于Java的类路径的工作原理也非常不同,但主要概念是相同的)。对于JVM程序,您需要使用操作系统友好的可执行文件( java java.exe )开始工作。