2017-09-15 69 views

回答

63

Kotlin协同程序可以也应该用于生产。这是在Kotlin 1.1正式发布它们的主要原因。在发布它们之后,JetBrains团队承诺保持后向兼容性,以适应在次要版本中引入的任何变化,同时允许人们在复杂的生产应用程序中安全地尝试它们。

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

实验协程使用单独的kotlin.coroutines.experimental程序包名称,这样当协程设计完成并且它们移动到kotlin.coroutines程序包时,旧的编译代码不会中断,但会通过单独的支持库继续工作。

Andrey Breslav在forum post中找到关于他们为什么是“实验性”的进一步讨论(长篇阅读),这是什么意思。

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

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

+1

当我在我们使用的功能上看到突出显示的警告时,仍然让我感到担忧。启动,声明'功能'协同程序“是实验性的(参见更多此处)'并链接到https://kotlinlang.org/docs/diagnostics/experimental-coroutines.html – Elye

+0

这是一个Catch-22,不是它?如果没有人试用它们,他们将如何进行战斗测试:)另一方面,我对JetBrains的“实验性”功能的体验远高于许多其他供应商发布的“产品质量”体验。具体来说,我在执行协程时完全没有问题;我看到的唯一“故障”是关于静态类型系统处理的一些细节,它们对运行时没有影响。他们在Hazelcast Jet中通过了非常严肃的压力测试和基准测试,并且色彩鲜艳。 –

相关问题