【发布时间】:2016-04-02 20:09:55
【问题描述】:
CodenameOne 支持将 Java 代码编译为原生 iOS 二进制文件。它是否支持其他基于 JVM 的语言,例如 Clojure 或 Jruby ?
【问题讨论】:
-
嗯,来自您提供的链接:“[..] 将 Java 字节码转换为 C 代码。”我假设它们的意思是 JVM 字节码,这反过来意味着它支持所有编译成字节码的语言。虽然我不确定如何处理运行时编译(clojure)之类的事情。既然它是开源的:你为什么不试试呢? (注意:我完全没有关于代号的经验)
-
Ivar,@DanielJour,预编译 Clojure 并不难,例如在 Leiningen project.clj 文件中使用 Leiningen 的
uberjar参数和:aot选项。然而,在很快浏览了链接页面和其他一些页面后,如果在 CodenameOne 中使用大量惯用的 Clojure 代码很容易,我会感到惊讶。如果您使用 Clojure 的 Java 互操作功能来生成 Java 类,它可能会相当容易地工作(尽管完全使用 Clojure 的 Java 互操作并不总是那么容易)。 -
@Mars 我知道,我更多的是考虑 REPL 中的交互式开发。从下面的答案我猜这将很难实现(见
*warn-on-reflection*) -
对于 REPL,您可以编写避免反射的代码,同时提供与 REPL 的已知“固定”子集类似的功能。例如。如果语言 X 支持函数调用 A、B 和 C,你可以有一个调用 A、B 和 C (等)的大字符串 switch case。这段特定的代码可以作为构建过程的一部分动态生成。请注意,也可以更改 VM 本身以支持反射,如果存在这样的好补丁,我们可能会接受它。它应该很容易添加。
标签: ios clojure jvm jruby codenameone