“实验性”的 Kotlin 协程能在生产环境中使用吗?

90

Kotlin协程在生产环境中可用吗?它们的实验状态意味着什么?

1个回答

116

更新: Kotlin 1.3版本起,Kotlin协程不再处于实验阶段。

Kotlin协程可以并且应该在生产环境中使用。这是官方发布Kotlin 1.1时的主要原因。发布后,JetBrains团队承诺在协程逐步发展过程中,会保持向后兼容性,并允许人们在复杂的生产应用程序中安全地尝试使用它们。

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

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

关于为什么它们是“实验性”的以及这意味着什么的进一步讨论(长篇阅读)可以在Andrey Breslav的论坛帖子中找到。

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

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


5
当我看到我们使用的函数(例如launch)上出现突出显示的警告时,仍然会让我感到担忧。该警告声明:“功能“协程”是实验性的(在此处查看更多信息)”,并提供链接 https://kotlinlang.org/docs/diagnostics/experimental-coroutines.html。 - Elye
4
这有点像一个「进退两难」的情况,不是吗?如果没有人试用,它们怎么能进行实战测试呢 :) 另一方面,我使用 JetBrains 的「实验性」功能的经验要比许多其他供应商的「生产质量」版本好得多。具体来说,我对协程的实现没有任何问题;我看到的唯一的「故障」是一些细节在静态类型系统中的处理,但这对运行时没有影响。它们在 Hazelcast Jet 中通过了相当严格的压力测试和基准测试,表现优异。 - Marko Topolnik
这个答案的部分明显是错误的。整个包都是实验性的,而不仅仅是其中的一些部分。 - Jean de Klerk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接