Kotlin 即将失去的脚本功能及其影响
Kotlin 即将失去的脚本功能及其影响
2024年12月8日修改
Kotlin 作为一种在编程领域备受关注的语言,近日传来了一些重要的消息。JetBrains 计划从 Kotlin 语言中移除一些与脚本相关的技术,这一举措引起了广泛的关注。
据了解,Kotlin 中的脚本功能并没有像 JetBrains 预期的那样受到广泛欢迎。尽管如此,Gradle Kotlin DSL 和自定义脚本 API 将继续得到支持。
JetBrains 打算从 Kotlin 中删除的脚本技术包括 REPL 功能、用于 Java 脚本的过时 API、KotlinScriptMojo Maven 插件以及用于实现代码完成功能的 kotlin-scripting-ide-services 库。在 11 月 19 日的博客文章中,JetBrains 表示,由于研究表明用户的需求可以通过其他已支持的技术来满足,因此决定删除这些脚本技术。
具体来说,Kotlin 编译器和 IntelliJ IDEA 插件中的默认 REPL 实现将被淘汰。JetBrains 认为该功能有限,且改进它并非优先事项。不过,公司将继续推广 Kotlin Notebook 插件和 IDE Scratch 文件,作为交互式 Kotlin 开发的解决方案。并且,计划在编译器和自定义脚本 API 中保留一些与 REPL 相关的功能。但随着最终切换到 K2 编译器,这部分功能的很大一部分将被删除或更改。
对于 Java Specification Request 223,它为 Java 平台提供了脚本功能。由于原始规范已被撤回,JetBrains 认为支持一个事实上已过时的 API 是没有意义的。现有的实现将在语言版本 1.9 兼容模式下继续运行,直到 Kotlin 2.3 发布。
KotlinScriptMojo,一个在 Maven 构建过程中支持脚本执行的 Maven 插件,由于 JetBrains 没有发现足够的使用证据来继续维护它,因此计划在即将发布的 Kotlin 版本中删除它。
kotlin-scripting-ide-services 是一个用于实现代码完成功能的库,主要用于 REPL 实现。由于它严重依赖于预 K2 编译器的基础设施,因此无法轻松移植到 K2 版本。因此,它很可能在 Kotlin 2.3 发布前后停止工作,并将从代码库中删除。不过,JetBrains 可能会考虑在未来基于 K2 重新实现类似的功能。
尽管如此,JetBrains 强调,Kotlin 脚本仍然是 Kotlin 基础设施的重要组成部分,公司将继续以实验状态支持它。Kotlin 脚本能够在没有事先编译或打包成可执行文件的情况下将 Kotlin 代码作为脚本执行。虽然 JetBrains 将继续为 Kotlin 中的脚本提供一般性支持,包括对基本.kts 文件的编译和评估,以及自定义脚本,但 JetBrains 并不准备将 Kotlin 脚本推荐为一种普遍适用的脚本解决方案,或作为 Bash 或 Python 的替代品。
Kotlin 脚本的引入早在很久以前,当时是作为一种实验,以探索使用该语言的方式。从那时起,Kotlin 的发展一直受到外部和内部采用者的需求以及 Kotlin 团队实验的推动。
总的来说,JetBrains 的这一决定是基于对用户需求和技术发展的综合考虑。虽然一些脚本功能将被移除,但这并不意味着 Kotlin 的发展会受到阻碍。相反,这一举措可能会促使 Kotlin 在其他方面更加完善和优化,以更好地满足开发者的需求。对于开发者来说,需要密切关注这些变化,并根据自己的需求和项目情况做出相应的调整。