我刚刚安装了Kotlin
版本1.7.0
,bin文件夹具有以下可运行文件。
kotlinc
kotlin-jvm
kotlin
快速检查后发现,kotlinc
和kotlin-jvm
用于将代码编译为字节码,就像Java中的javac
一样。为什么kotlin
编译有两个命令。有什么显著差异吗?
并且,我应该使用java
命令来运行字节码还是使用kotlin
命令来运行该字节码。性能方面的任何权衡。
官方文档没有过多地介绍这些命令行工具。虽然您可以用-help
调用它们,但这只是描述了它们接受的其他选项。
然而,我可以告诉你我的系统(macOS,Kotlin是使用HomeBrew安装的(上发生了什么。我不知道下面的内容在多大程度上适用于其他平台,但我怀疑至少Windows和Linux会非常相似。
这些可执行文件是包装脚本,因此可以看到它们的一些功能。(他们最终运行Kotlin程序,这限制了你的视野…(
编译:
kotlinc-jvm
是一个非常简单的包装器脚本,它只调用kotlinc
——所以它们之间显然没有有效的区别!
这表明Kotlin/JVM是默认的编译目标,至少在我的系统上是这样。(kotlinc-js
也调用kotlinc
,但仅在设置了$KOTLIN_COMPILER
环境变量之后,该变量会更改kotlinc
最终运行的程序。(也许kotlinc
在其他系统上有不同的默认值——或者至少他们希望允许这种可能性。
运行:
AIUI,运行kotlin
实际上等同于运行java
,只是kotlin
将Kotlin运行时类添加到类路径中。
当然,您可以在运行java
时手动添加它们(例如在$CLASSPATH
或-cp
参数中(;但你需要知道它们在哪里,或者有办法找到它们。(在我的系统中,它们在…/libexec/lib/
中。唯一重要的是相关的kotlin-stdlib
jar,尽管有些代码也需要kotlin-reflect
,也许其他代码也需要。或者,如果你有一个完整的Kotlin安装,我认为你可以简单地添加kotlin-runner.jar
,它会为你引入其他的。(
我认为使用kotlin
没有任何其他好处。
请注意,如果您构建了一个"fat".jar/.war文件,其中包括Kotlin运行时库,那么大多数系统无论如何都会使用java
来运行它。