Kotlin协同程序可用于生产,他们的实验状态是什么意思?生产中是否可以使用“实验性”Kotlin协同程序?
44
A
回答
63
Kotlin协同程序可以也应该用于生产。这是在Kotlin 1.1正式发布它们的主要原因。在发布它们之后,JetBrains团队承诺保持后向兼容性,以适应在次要版本中引入的任何变化,同时允许人们在复杂的生产应用程序中安全地尝试它们。
简而言之,“实验性”和“正常”功能的区别在于,对于正常的Kotlin功能,新功能无法在次要更新中添加,因为存在“完全兼容性”保证,而对于实验性功能,新功能可以添加,但没有东西可以删除(因为向后兼容性保证)。
实验协程使用单独的kotlin.coroutines.experimental
程序包名称,这样当协程设计完成并且它们移动到kotlin.coroutines
程序包时,旧的编译代码不会中断,但会通过单独的支持库继续工作。
Andrey Breslav在forum post中找到关于他们为什么是“实验性”的进一步讨论(长篇阅读),这是什么意思。
同样的问题适用于协程支持库。
当前版本的kotlinx.coroutines
是专为生产使用而设计的。它很好地覆盖了测试,很多东西已经被优化,所有的改变都是考虑到与以前编译的代码向后兼容的问题。它当然可以作为各种基于协程的事物的测试平台,因此在相应的函数和类的文档中有一些部分明确标记为“正在进行中”或“不稳定”。但是,默认情况下,kotlinx.coroutines
中的所有公共API都被认为是稳定的,并且在适当的移植帮助下正在发展,如果需要的话。
相关问题
- 1. kotlin协同程序是否使用定时器进行异步调用?
- 2. Red5是否可以生产?
- 3. 是否可以使用Kotlin Liferay portlet?
- 4. 是否可以仅使用LISP基元来实现协程?
- 5. Kotlin&Anko协同程序:返回异步
- 6. 是否有它可以产生一个有效的C程序
- 7. 是否可以在生产环境中使用tuleap
- 8. 原则迁移是否可用于生产应用程序?
- 9. 在生产应用程序中使用ASP.NET MVC 2 Preview 1是否可行?
- 10. 是否可以选择性地生成程序集?
- 11. Kotlin/Native是否可用?
- 12. 是否有人使用ComponentOne XAPOptimizer进行实际生产Silverlight应用程序?
- 13. 是否有可能在生产规则中引用事实?
- 14. 是否可以使用MySql V5.1进行生产?
- 15. 是否可以使用Python /协同例程将负载并行化到Oracle?
- 16. 程序总是产生相同的值?
- 17. 如何在Kotlin协同程序中使用依赖ThreadLocal的代码
- 18. Kotlin并行协程
- 19. Kotlin:跳过协程
- 20. 是否可以在Windows中实现/运行Java实时程序?
- 21. Kotlin Annotation Processing:是否可以生成扩展方法?
- 22. 是否可以验证xmlns:fb(Facebook)属性?
- 23. 是否可以在Android应用程序中实现Flex状态
- 24. 是否可以实时从移动应用程序中刮取?
- 25. 是否可以从ILAsm文件中删除.property语句以供生产使用?
- 26. 是否可以在控制台应用程序中使用AzureAD身份验证?
- 27. 生产可以排序
- 28. 是否可以从Windows 8 Metro Style App产生子进程?
- 29. 什么是协同程序?
- 30. 是否可以在Objective-C中动态实现协议?
当我在我们使用的功能上看到突出显示的警告时,仍然让我感到担忧。启动,声明'功能'协同程序“是实验性的(参见更多此处)'并链接到https://kotlinlang.org/docs/diagnostics/experimental-coroutines.html – Elye
这是一个Catch-22,不是它?如果没有人试用它们,他们将如何进行战斗测试:)另一方面,我对JetBrains的“实验性”功能的体验远高于许多其他供应商发布的“产品质量”体验。具体来说,我在执行协程时完全没有问题;我看到的唯一“故障”是关于静态类型系统处理的一些细节,它们对运行时没有影响。他们在Hazelcast Jet中通过了非常严肃的压力测试和基准测试,并且色彩鲜艳。 –