CodenameOne 是否支持 Java 之外的其他 JVM 语言?
Does CodenameOne support other JVM languages besides Java?
CodenameOne 支持将 Java 代码编译为原生 iOS 二进制文件。它是否支持其他基于 JVM 的语言,例如 Clojure 或 Jruby?
并非开箱即用,但确实可行。在过去,史蒂夫 ported Mirah 是代号一上 运行 的 Ruby 子集。这是我们使用旧 VM 但也应该使用新 VM 的时候。
一位社区成员不久前也能够移植 Haxe,但我不确定那会在哪里结束。
移植 JVM 语言时的主要争论点是 Codename One 不支持反射,因此生成反射代码的鸭子类型语言实现将是 "problematic"。
避免反射的原因很简单,代码大小会大大增加,从而抵消了较小的手写 VM 的许多优势。在 AOT 环境中优化反射代码也非常困难,因此与 JIT 相比,它的性能会很差。
很多反射的使用都可以提前用字节码操作代替,这样 VM 就可以像它的标准 Java 代码一样工作,即使它不是。
我们通常喜欢 运行 在 Codename One 之上使用其他语言的想法,如果您 运行 遇到问题,我们愿意提供帮助。我们自己不在这些事情上投入时间的主要原因是为了保持专注。
CodenameOne 支持将 Java 代码编译为原生 iOS 二进制文件。它是否支持其他基于 JVM 的语言,例如 Clojure 或 Jruby?
并非开箱即用,但确实可行。在过去,史蒂夫 ported Mirah 是代号一上 运行 的 Ruby 子集。这是我们使用旧 VM 但也应该使用新 VM 的时候。
一位社区成员不久前也能够移植 Haxe,但我不确定那会在哪里结束。
移植 JVM 语言时的主要争论点是 Codename One 不支持反射,因此生成反射代码的鸭子类型语言实现将是 "problematic"。
避免反射的原因很简单,代码大小会大大增加,从而抵消了较小的手写 VM 的许多优势。在 AOT 环境中优化反射代码也非常困难,因此与 JIT 相比,它的性能会很差。
很多反射的使用都可以提前用字节码操作代替,这样 VM 就可以像它的标准 Java 代码一样工作,即使它不是。
我们通常喜欢 运行 在 Codename One 之上使用其他语言的想法,如果您 运行 遇到问题,我们愿意提供帮助。我们自己不在这些事情上投入时间的主要原因是为了保持专注。