【问题标题】:Can I use Kotlin with Codename One?我可以将 Kotlin 与 Codename One 一起使用吗?
【发布时间】:2017-07-08 20:47:37
【问题描述】:

我是 Kotlin 的忠实粉丝,我希望将它与 Codename One 一起使用,而不是 Java。由于 Kotlin 与 Java 无缝互操作,我是否可以使用它来构建具有 Codename One 的应用程序?

【问题讨论】:

  • 是的,你可以,为什么不呢?
  • 我不太确定。 Codename One 不允许本地构建,除非您有企业支持。 Kotlin 必须与构建过程联系起来才能工作。有没有办法在他们需要您使用的服务器上自定义构建过程?
  • 如果他们使用 Gradle - 你可以使用 Kotlin。它只是一个gradle插件+标准库,不是单独的编译器
  • 我不认为我们在同一页上。 Kotlin 确实有一个编译器可以编译成 Java 类文件。这就是 Grade 在其构建过程中所称的。即使他们使用 Maven,我也可以让它工作。但是他们是否允许你在他们的服务器上自定义是我想知道的。
  • 刚刚根据我们发布的新公告编辑了我的答案。我们将在今年晚些时候推出 Kotlin 支持:codenameone.com/blog/…

标签: codenameone kotlin


【解决方案1】:

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 团队,并提供帮助进行集成,但这并没有带来任何结果。如果他们的团队有兴趣一起工作,我们会提供帮助。

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

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

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

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

  • 使用我们没有的 API - 这是可能的。例如。 Kotlin 编译器可能隐式依赖 Java SE API we don't support 的部分内容,在这种情况下,修复可能会更难,但在 Kotlin 或 Codename One 中或在字节码的前置后处理器之间的某个地方是可行的

【讨论】:

  • 另外,Kotlin 有一个运行时库需要包含在内。包括这将需要明确的支持。并且该库本身可能依赖于 Codename One 尚不支持的 JRE 部分。当我添加 Mirah 支持时,我选择了 Mirah,因为它是 唯一 不需要自己的运行时库的 JVM 语言(Java 除外)。
猜你喜欢
  • 2014-01-22
  • 2018-02-16
  • 1970-01-01
  • 2023-01-18
  • 2021-06-22
  • 2023-03-25
  • 2020-08-04
  • 2018-10-23
  • 2011-02-22
相关资源
最近更新 更多