kotlin - "experimental"Kotlin协程可以在生产中使用吗?

Kotlin 协程可以在生产中使用,它们的实验状态意味着什么?

最佳答案

更新:从 Kotlin 1.3 开始,Kotlin 协程不再是实验性的。

Kotlin 协程可以而且应该在生产环境中使用。这是在 Kotlin 1.1 中正式发布它们的主要原因。在发布它们后,JetBrains 团队 promise 在次要版本中随着它们的发展而引入的任何更改保持向后兼容性,同时允许人们在复杂的生产应用程序中安全地试用它们。

简而言之,“实验性”和“普通”功能的区别在于,对于普通的 Kotlin 功能,新东西不能在次要更新中添加,因为有“完全兼容”的保证,而对于实验性功能,新东西可以可以添加,但不能删除任何内容(因为向后兼容保证)。

实验协程使用单独的 kotlin.coroutines.experimental 包名,因此当协程设计完成并移至 kotlin.coroutines 包时,旧的编译代码将不会中断,但会通过单独的支持库继续工作。

关于为什么它们是“实验性的”以及这意味着什么的进一步讨论(长期阅读)可以在 forum post 中找到安德烈·布雷斯拉夫(Andrey Breslav)。

同样的问题也适用于协程支持库。

kotlinx.coroutines 的当前版本专为生产使用而设计。它很好地覆盖了测试,很多东西已经优化,所有的改变都是考虑到与以前编译的代码向后兼容的问题。它确实可以作为各种基于协程的东西的测试平台,因此在相应的函数和类的文档中,有一些部分被明确标记为“正在进行中”或“不稳定”。但是,默认情况下,kotlinx.coroutines 中的所有公共(public) API 都被认为是稳定的,并且会在需要时使用适当的迁移辅助工具进行改进。

关于kotlin - "experimental"Kotlin协程可以在生产中使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46240236/

相关文章:

android - Kotlin Android 启动新 Activity

kotlin - 覆盖 Kotlin 数据类的 getter

java - Kotlin:等效于 KClass 的 getClass()

generics - Kotlin 泛型中 "*"和 "Any"之间的区别

unit-testing - 如何在 Kotlin 中管理单元测试资源,例如启动/停止数据库连接或嵌

list - Kotlin:如何使用列表强制转换:未经检查的强制转换:kotlin.collecti

string - Kotlin - 如何正确连接字符串

syntax - Kotlin 中的变量名或扩展运算符之前的 Kotlin 星号运算符

kotlin - 我们何时应该在 Kotlin 上使用 run、let、apply、also 和 w

generics - 通用扩展类 AND 在 Kotlin 中实现接口(interface)