【发布时间】:2016-05-18 08:24:53
【问题描述】:
这可能吗?我认为部署到 Android 和桌面应该不会太难(因为 Java 已经可以做到)。我了解到 Kotlin 也可以转译为 JavaScript。这是否意味着我可以将相同的代码库部署到所有三个目标,或者我需要为浏览器使用不同的代码? (在使用 Kotlin 定位浏览器时甚至可以使用 libgdx 吗?)
【问题讨论】:
这可能吗?我认为部署到 Android 和桌面应该不会太难(因为 Java 已经可以做到)。我了解到 Kotlin 也可以转译为 JavaScript。这是否意味着我可以将相同的代码库部署到所有三个目标,或者我需要为浏览器使用不同的代码? (在使用 Kotlin 定位浏览器时甚至可以使用 libgdx 吗?)
【问题讨论】:
这取决于您的代码库。首先,Kotlin2JS 没有正式发布,它有很多问题,所以为 JVM 编译的代码将无法在 JavaScript 中运行。其次,您的代码库不应依赖于 Java 类库(即java.lang、java.util、java.io 等),因为 Kotlin2JS 是源到源代码转换器,它对 Java 和 Java 库一无所知。 LibGDX 是用 Java 编写的,因此您无法在 Kotlin 上编写您的 libGDX 游戏并将其转换为 JavaScript。
目前,要转译任何 Kotlin/Java/Scala 代码库,您可以使用 TeaVM(它与 Kotlin 团队或 JetBrains 无关)。唯一的问题是当前在 Maven (0.4.3) 中找到的稳定版本不能正确处理 swap 指令,所以你应该下载 TeaVM 的 master 分支(有适当的修复)并自己构建它。另一个问题是 TeaVM 不知道 Kotlin2JS 支持的 dynamic 关键字和 @native 注解。
【讨论】: