我可以将 Kotlin 与代号一一起使用吗?

Can I use Kotlin with Codename One?

我是 Kotlin 的忠实粉丝,我想将它与代号一一起使用,而不是 Java。由于 Kotlin 与 Java 无缝互操作,我能否使用它来构建代号为 One 的应用程序?

2017 年 7 月更新:Public 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 团队并提出帮助进行集成,但这并没有取得任何进展。如果他们的团队有兴趣一起工作,我们会提供帮助。

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

您可以编辑我们的 Ant 脚本以调用 gradle 脚本,该脚本将在将代码发送到编译器之前检测代码。如果不进一步努力,我不确定这会有多难,也可能 "just work"。

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

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

  • 进行测试
  • 我们没有使用 API - 这是可能的。例如。 Kotlin 编译器可能隐含地依赖 Java SE API we don't support 的部分,在这种情况下,修复可能更难,但在 Kotlin 或代号一中或介于两者之间的字节码 pre-post 处理器中是可行的