我可以将Kotlin与Codename One一起使用吗?

Gra*_*ham 7 kotlin codenameone

我是Kotlin的忠实粉丝,并希望将它与Codename One一起使用而不是Java.由于Kotlin与Java无缝连接,我能用它来构建一个带有Codename One的应用程序吗?

Sha*_*mog 4

2017 年 7 月更新:Kotlin 支持的公开测试版现已推出:https ://www.codenameone.com/blog/kotlin-support-public-beta.html

2017 年 6 月更新:我们刚刚宣布将在今年年底前完成此操作: https: //www.codenameone.com/blog/kotlin-wora-ios-iphone-windows-android.html

原答案如下,供参考:

对此没有官方支持。不久前,RoboVM 停产后,我们联系了 Kotlin 团队,并表示愿意帮助集成,但没有取得任何进展。如果他们的团队有兴趣合作,我们会提供帮助。

这可能是您可以自己做的事情,例如 Steve Hannah 在我们将 Mirah(Ruby 的子集)引入我们的团队之前为他编写了支持:https://www.codenameone.com/search ?q=mirah

您可以编辑我们的 Ant 脚本来调用 gradle 脚本,该脚本将在将代码发送到编译器之前对其进行检测。我不确定这会有多难,并且可能无需进一步努力就“有效”。

但是,可能存在两个潜在问题:

  • 字节码的创造性使用在某些情况下可能会失败(例如在 iOS、Windows UWP 翻译上)。这不太可能但有可能,因为我们仅使用 javac 进行测试

  • 使用我们没有的 API - 这是可能的。例如,Kotlin 编译器可能隐式依赖于我们不支持的 Java SE API的部分,在这种情况下,修复可能会更困难,但可以在 Kotlin 或 Codename One 中或在两者之间的某个位置使用字节码的前置后处理器

  • 另外,Kotlin 还有一个需要包含的运行时库。包括这一点需要明确的支持。而且该库本身可能依赖于 Codename One 尚不支持的 JRE 部分。当我添加 Mirah 支持时,我选择了 Mirah,因为它是*唯一*不需要自己的运行时库的 JVM 语言(Java 除外)。 (2认同)