如何/可以使用 GCJ 编译 Clojure
How do / Can I compile Clojure with GCJ
因为 Clojure 是建立在 JVM 之上的,我想我可以使用 GCJ 将它直接编译成机器代码,但我找不到任何关于它的信息。
如果可能的话,我怎么能"strip"它是最基本的,所以启动时间和内存占用尽可能小。
我真的很想用 Clojure 编写遵循 UNIX 原则的小型终端程序
clojure 编译器通常从文件中获取源 "expressions",并生成 JVM 字节码。这个字节码然后被 JVM 编译成 JIT 风格的机器代码。 clojure 编译器和 GCJ 都是编译器,虽然针对的是不同的语言,因此谈论一个接一个地链接是没有意义的。 clojure 编译器不生成 java 源代码,它直接生成字节码。
理论上,您可以将 Clojure 源代码 AOT 编译为 Java 字节码,然后使用 gcj
将此字节码编译为本机机器码。实际上,我不希望这会起作用; gcj
有 severe limitations that prevent its use for most modern Java applications. Specifically, its support for language features stops at Java 1.2 (Clojure requires Java 1.6),并且它有 Clojure 运行时所需的标准 class 库的不完整实现。在野外,我曾看到 Clojure 应用程序在使用 gcj
运行时而不是 OpenJDK 或 Oracle JRE 意外启动时崩溃和燃烧。
因为 Clojure 是建立在 JVM 之上的,我想我可以使用 GCJ 将它直接编译成机器代码,但我找不到任何关于它的信息。
如果可能的话,我怎么能"strip"它是最基本的,所以启动时间和内存占用尽可能小。
我真的很想用 Clojure 编写遵循 UNIX 原则的小型终端程序
clojure 编译器通常从文件中获取源 "expressions",并生成 JVM 字节码。这个字节码然后被 JVM 编译成 JIT 风格的机器代码。 clojure 编译器和 GCJ 都是编译器,虽然针对的是不同的语言,因此谈论一个接一个地链接是没有意义的。 clojure 编译器不生成 java 源代码,它直接生成字节码。
理论上,您可以将 Clojure 源代码 AOT 编译为 Java 字节码,然后使用 gcj
将此字节码编译为本机机器码。实际上,我不希望这会起作用; gcj
有 severe limitations that prevent its use for most modern Java applications. Specifically, its support for language features stops at Java 1.2 (Clojure requires Java 1.6),并且它有 Clojure 运行时所需的标准 class 库的不完整实现。在野外,我曾看到 Clojure 应用程序在使用 gcj
运行时而不是 OpenJDK 或 Oracle JRE 意外启动时崩溃和燃烧。