怎么做/我可以用GCJ编译Clojure

时间:2015-07-20 23:10:26

标签: java performance clojure leiningen gcj

因为Clojure构建在JVM之上,我猜我可以使用GCJ将其直接编译为机器代码,但我无法找到有关它的任何信息。

如果可能的话,我怎么能"剥离"它至关重要,因此启动时间和内存占用量尽可能小。

我真的很想按照UNIX原则用Clojure编写小型终端程序

2 个答案:

答案 0 :(得分:3)

理论上,您可以将Clojure源代码AOT编译为Java字节码,然后使用gcj将此字节代码编译为本机机器代码。在实践中,我不希望这个工作; gcj具有severe limitations,阻止其用于大多数现代Java应用程序。具体来说,它对语言功能的支持在Java 1.2(Clojure需要Java 1.6)处停止,并且它具有Clojure运行时所需的标准类库的不完整实现。在野外,我看到Clojure应用程序在使用gcj运行时而不是OpenJDK或Oracle JRE意外启动时崩溃并烧毁。

答案 1 :(得分:1)

clojure编译器通常从文件中获取源"表达式"并生成JVM字节码。然后,该字节码由JVM编译为JIT样式到机器代码。 clojure编译器和GCJ都是编译器,虽然对于不同的语言,所以谈论一个接一个地链接是没有意义的。 clojure编译器不生成java源代码,它直接生成字节码。