Могут ли сопрограммы Kotlin использоваться в производственной среде и что означает их экспериментальный статус?
Могут ли сопрограммы Kotlin использоваться в производственной среде и что означает их экспериментальный статус?
Ответы:
ОБНОВЛЕНИЕ : сопрограммы Kotlin больше не являются экспериментальными, начиная с версии Kotlin 1.3.
Сопрограммы Kotlin можно и нужно использовать в продакшене. Это было главной причиной их официального выпуска в Kotlin 1.1. Выпустив их, команда JetBrains обязалась поддерживать обратную совместимость в отношении любых изменений, которые вносятся в них в второстепенных выпусках по мере их развития, позволяя при этом безопасно опробовать их в сложных производственных приложениях.
Короче говоря, разница между «экспериментальными» и «обычными» функциями заключается в том, что для обычных функций Kotlin нельзя добавлять новые элементы в незначительные обновления, потому что существует гарантия «полной совместимости», а для экспериментальных функций можно добавлять новые элементы, но ничего нельзя удалить (из-за гарантии обратной совместимости).
Экспериментальные сопрограммы используют отдельное kotlin.coroutines.experimental
имя пакета, поэтому, когда дизайн сопрограмм будет завершен и они будут перемещены в kotlin.coroutines
пакет, старый скомпилированный код не сломается, но продолжит работать через отдельную библиотеку поддержки.
Дальнейшее обсуждение (долгое чтение) того, почему они «экспериментальные» и что это означает, можно найти в этом сообщении на форуме Андрея Бреслава.
Тот же вопрос относится к библиотекам поддержки сопрограмм.
Текущая версия kotlinx.coroutines
предназначена для промышленного использования. Он довольно хорошо покрыт тестами, многое уже оптимизировано, все изменения внесены с учетом вопросов обратной совместимости с ранее скомпилированным кодом. Он определенно служит испытательной площадкой для различных вещей, основанных на сопрограммах, поэтому есть некоторые части, которые четко помечены как «незавершенные» или «нестабильные» в документации соответствующих функций и классов. Однако по умолчанию все общедоступные API-интерфейсы kotlinx.coroutines
считаются стабильными и при необходимости развиваются с соответствующими средствами миграции.
The feature "coroutines" is experimental (see more here)
и ссылку на kotlinlang.org/docs/diagnostics/experimental-coroutines.html