【发布时间】:2018-02-24 16:26:51
【问题描述】:
Kotlin 协程可以在生产中使用,它们的实验状态意味着什么?
【问题讨论】:
标签: kotlin coroutine kotlin-coroutines
Kotlin 协程可以在生产中使用,它们的实验状态意味着什么?
【问题讨论】:
标签: kotlin coroutine kotlin-coroutines
更新:从 Kotlin 1.3 开始,Kotlin 协程不再是实验性的。
Kotlin 协程可以而且应该在生产环境中使用。这是在 Kotlin 1.1 中正式发布它们的主要原因。在发布它们之后,JetBrains 团队承诺在次要版本中随着它们的发展而引入的任何更改保持向后兼容性,同时允许人们在复杂的生产应用程序中安全地试用它们。
简而言之,“实验性”和“普通”功能之间的区别在于,对于普通的 Kotlin 功能,新东西不能在次要更新中添加,因为有“完全兼容”保证,而对于实验性功能,新东西可以可以添加,但不能删除任何内容(因为向后兼容保证)。
实验协程使用单独的 kotlin.coroutines.experimental 包名,因此当协程设计完成并移至 kotlin.coroutines 包时,旧编译代码不会中断,但会通过单独的支持库继续工作。
关于为什么它们是“实验性的”以及这意味着什么的进一步讨论(长期阅读)可以在 Andrey Breslav 的 forum post 中找到。
同样的问题也适用于协程支持库。
kotlinx.coroutines 的当前版本专为生产使用而设计。它很好地覆盖了测试,很多东西已经优化,所有的改变都是考虑到与以前编译的代码向后兼容的问题。它确实可以作为各种基于协程的东西的测试平台,因此在相应函数和类的文档中,有一些部分被明确标记为“正在进行中”或“不稳定”。但是,默认情况下,kotlinx.coroutines 中的所有公共 API 都被认为是稳定的,并且会在需要时使用适当的迁移辅助工具进行改进。
【讨论】:
The feature "coroutines" is experimental (see more here) 并链接到kotlinlang.org/docs/diagnostics/experimental-coroutines.html