5

从 Kotlin 1.6.0 开始,对于 Kotlin/JVM 项目,可以指定-jvm-target version最高为 Java 的选项17,请参阅通用Gradle 插件文档。

这样做有什么好处?除了指定默认值之外,我找不到太多关于指定其他内容的好处1.8

我能找到的唯一的东西是:

两者在我看来都微不足道。

特别是因为当指定一个更高的目标时,人们失去了在使用 Java 1.8 的项目中使用生成的工件的能力,这对于库来说似乎是不受欢迎的。

我在这里错过了什么吗?

4

1 回答 1

13

我不知道 Kotlin 积极使用或支持什么。

以后 Java 环境中可用的以下功能可能会为其他编程语言带来好处,即使您没有在应用程序代码中主动使用它们:

  • VarHandle即使您不直接使用此 API ,您的语言的并发构造也可能在内部使用。[JDK 9]

  • 如果您的语言需要它,reachabilityFence允许在执行点之前防止垃圾收集,而不是依赖脆弱或昂贵的解决方法 [JDK 9]

  • 一种将类动态添加到当前环境的官方方法,而不是侵入 JRE 内部 [JDK 9]

  • 您已经提到了字符串连接...... [JDK 9]

  • 当您创建一个声明所需依赖项的模块时,您可以创建一个仅包含所需模块的自定义 JDK,以便与应用程序一起部署(这消除了对 1.8 兼容性的需求)。[JDK 9]

  • 属于嵌套的类可以访问彼此private的成员,而无需辅助方法。您的语言的编译器可以决定哪些类属于嵌套,它不必是 Java 嵌套类的语义。[JDK 11]

  • 自定义动态常量。您可以通过ldc指令加载任意常量,该指令在第一次执行时由引导方法构造并随后重用。这意味着该语言可以使用自己类型的常量,就像 Java 的内置常量一样(想想,字符串实习)。[JDK 11]

  • 使用官方 API创建动态匿名类sun.misc.Unsafe,而不是假设存在专有的[JDK 15]

  • 密封类是JVM直接支持的,所以如果语言有这样的概念,可以直接翻译,而不是模仿。[JDK 17]

  • 也许对特定语言实现有用但对我们来说并不明显的东西,而不是尝试在 JVM 上实现语言

于 2021-12-10T09:45:23.437 回答