Kotlin是否需要JDK?

12

我已经很久没用过Android了,现在发现有一个新术语Kotlin,那么我的疑问是,Kotlin需要JDK吗?

如果Kotlin将取代Java,那么JDK就不再必要了,因为据我所知,JDK是为了在Java上开发的,这样正确吗?

如果是正确的,那么我有另一个疑问(这已经很老了),为什么Android需要使用JDK,如果它已经包含了Android SDK?

P. D. 我快要疯了,我需要一个简单的解释。

4个回答

13

是的,在JVM上开发Kotlin需要JDK。

历史上,Kotlin适用于JDK 1.6+目标。从Kotlin 1.5开始,Kotlin需要JDK 1.8(即Java 8)或更高版本。


1
请提供更详细的解释。 - kcire_eae
1
"Explications"是一个真正的单词。 - admin
Kotlin现在需要JVM目标>=1.8(即Java 8)。低于此版本将导致弃用警告:JVM目标1.6已被弃用,并将在未来的版本中删除。请迁移到JVM目标1.8或更高版本 - Sebastian A.

6
如前所述,Kotlin JVM 需要 JVM 才能工作。Kotlin 编译为 JVM 字节码,这意味着它与 Java 具有相同的要求(运行时和开发工具包)。这也是 Kotlin 具有 Java 互操作性的原因。此外,这也是您最有可能在 Android 上使用的选项。
但是,还有Kotlin Native。该 SDK 与 Kotlin JVM 稍有不同,并且仍在进行中,但它可以编译而无需 JVM。具体来说,它使用 LLVM 编译为本机目标。此版本的 Kotlin 支持 C 互操作性。
Kotlin Native还为Kotlin Multiplatform打开了大门,它可以编译成任何你想要的目标(移动端、桌面端),并将其全部打包在一起,并与本地编程语言进行交互。 注意:我不确定Kotlin Native与Multiplatform编译到何处。一些演示项目在Android模块中使用Kotlin JVM,这表明它没有使用NDK风格的本机代码。像Native一样,Multiplatform是实验性的。我也没有深入研究过Multiplatform,但它似乎是使用声明函数和平台声明函数的组合。我不确定交互是如何工作的(就语言而言-不是模块交互)。

Multiplatform不需要Native,但它可以支持更多的平台。如果您正在使用跨平台Java库(例如LibGDX),或者以核心和平台模块构建,则也可以在此处使用Multiplatform。但是,请注意,这可能需要JDK,尽管这取决于您的项目。

除此之外,还有 Kotlin.JS,顾名思义,它可以编译成JavaScript。与Kotlin JVM不同,它自然而然地不需要JVM,但是它需要JavaScript相关的API。并且,正如您所期望的那样,Kotlin.JS支持JavaScript互操作。
简而言之,JDK并非必需。Kotlin Native和Kotlin JS不需要JDK,因为它们编译的目标不在JVM上。

1

是的!Kotlin 1.1.2(及以上版本)需要JDK。

另外,非常重要的是,Kotlin并不是为了“替代”Java而存在的。这是另一个非常普遍的错误观念。Kotlin只是被添加到支持编写Android应用程序的语言列表中。

您可以查看下面的链接,了解该语言的历史: https://en.wikipedia.org/wiki/Kotlin_(programming_language)


1
更广泛地说,Kotlin被添加到支持使用JVM的语言列表中,与Groovy、Scala和Clojure一起。 Kotlin恰好在Android中拥有一流的支持。 - OzzyTheGiant

-3

Kotlin 可以编译成 jvm 字节码。它需要一个 jvm。可以将其用于替代 Java 语言。


1
这并没有回答问题。进行Kotlin开发是否需要JDK? - Oliver Charlesworth
我不知道你怎么能在没有JVM的情况下进行调试。但是操作者可以尝试一下 :-} - efekctive
1
但问题是关于JDK而不是JVM。 - Oliver Charlesworth
请解释一下如何在没有 IDK 调试器的情况下进行调试。 - efekctive

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接