【发布时间】:2017-12-30 18:30:14
【问题描述】:
好久没用Android了,现在发现了一个新名词,Kotlin,所以我的疑问是,Kotlin需要JDK吗?
如果 Kotlin 将替换为 Java,那么 JDK 就没有必要了,因为在我看来 JDK 是用于在 Java 上开发的,对吗?
如果它是正确的,那么我还有其他疑问(这已经很旧了)为什么 JDK 用于 Android,如果这已经包含一个 Android SDK?
P。 D. 我快疯了,我需要一个解释。
【问题讨论】:
好久没用Android了,现在发现了一个新名词,Kotlin,所以我的疑问是,Kotlin需要JDK吗?
如果 Kotlin 将替换为 Java,那么 JDK 就没有必要了,因为在我看来 JDK 是用于在 Java 上开发的,对吗?
如果它是正确的,那么我还有其他疑问(这已经很旧了)为什么 JDK 用于 Android,如果这已经包含一个 Android SDK?
P。 D. 我快疯了,我需要一个解释。
【问题讨论】:
【讨论】:
如前所述,Kotlin JVM 需要 JVM 才能工作。 Kotlin 编译为 JVM 字节码,这意味着它具有与 Java 相同的要求(运行时和开发工具包)。这也是 Kotlin 具有 Java 互操作性的原因。此外,这是您最有可能在 Android 上使用的版本。
但是,有Kotlin Native。 SDK 本身与 Kotlin JVM 略有不同,它仍然是 WIP,但它无需 JVM 即可编译。具体来说,它使用 LLVM 编译为本机目标。此版本的 Kotlin 支持 C 互操作。
Kotlin Native 还为 Kotlin Multiplatform 打开了大门,它可以编译为您想要的任何内容(移动目标、桌面目标,并将它们打包成一个,并包括与本机编程语言的互操作)。 注意:我不确定 Kotlin Native with Multiplatform 编译成什么。一些演示项目在 Android 模块中使用 Kotlin JVM,这表明它不使用 NDK 风格的本机代码。多平台,如 Native,是实验性的。我也没有过多地接触 Multiplatform,但它似乎使用了声明函数和平台声明函数的组合。我不确定互操作在这里如何工作(就语言而言 - 不是模块互操作)。
虽然多平台不需要 Native,但它支持更多的平台。如果您使用的是跨平台 Java 库(例如 LibGDX),或者在具有核心和平台的模块上构建,您也可以在此处使用 Multiplatform。但是请注意,这可能需要 JDK,尽管它确实取决于您的项目。
除了这些,还有Kotlin.JS,顾名思义,就是编译成JavaScript。与 Kotlin JVM 不同,它自然不需要 JVM。但是,它需要与 JavaScript 相关的 API。正如您所料,Kotlin.JS 支持 JavaScript 互操作。
TL;DR:
JDK 并不总是必需的。 Kotlin Native 和 Kotlin JS 不需要 JDK,因为它们编译的目标不在 JVM 上。
【讨论】:
是的! Kotlin 1.1.2(及更高版本)需要 JDK。
另外,非常重要的是,不支持 Kotlin 以“替代”Java。这是另一个非常常见的错误观念。 Kotlin 只是被添加到支持编写 Android 应用程序的语言列表中。
您可以查看以下链接以了解该语言的历史: https://en.wikipedia.org/wiki/Kotlin_(programming_language)
【讨论】:
Kotlin 编译为 jvm 字节码。它需要一个jvm。它可以用来代替Java语言
【讨论】: