似乎要在每个新IDE中安装Clojure,我必须完全重新安装它并创建它的副本。运行REPL似乎正在运行Java程序。
我来自Ruby背景,其中Ruby程序由ruby program.rb
运行,而ruby是从一个地方执行到程序的程序(我知道这与它的工作方式类似)对于java,python等也是如此。
clojure“解释器”仅仅是一个编译的Java文件,它将.clj文件作为参数,并对其进行处理吗?
答案 0 :(得分:29)
首先,Clojure没有翻译。所有Clojure代码在加载时都会编译成JVM字节码。我强调这一点,因为这是Clojure出色的表演故事。
其次,在你做Ruby的意义上,你并没有真正“安装”Clojure。 Clojure是一个jar
文件,它只是一堆Java类;如果将jar
文件放在类路径上,则可以运行这些类的方法。在这些类中,clojure.main
提供了运行REPL和“脚本”的main
方法。因此,运行REPL确实运行了Java(即JVM)程序;并且运行clj
文件相当于要求clojure.main
加载并运行它(实际工作将交给Clojure实现中的其他类,但clojure.main
是入口点)。顺便说一句,这与JRuby完全相同。
每个JVM程序最终“仅仅是一个已编译的Java文件”,或者可能是一堆这样的文件。要运行它,您需要让JVM实例加载它并运行相应的main
方法。请注意,C程序(例如ruby
- 命令)的不同之处仅在于操作系统知道如何为您找到它们的main
函数(嗯,相当于Java的类路径的工作方式也大不相同) ,但主要概念是相同的)。使用JVM程序,您需要使用操作系统友好的可执行文件(java
/ java.exe
)来启动。