Können Kotlin-Coroutinen in der Produktion verwendet werden und was bedeutet ihr experimenteller Status?
quelle
Können Kotlin-Coroutinen in der Produktion verwendet werden und was bedeutet ihr experimenteller Status?
UPDATE : Kotlin-Coroutinen sind ab Kotlin 1.3 nicht mehr experimentell.
Kotlin-Coroutinen können und sollten in der Produktion verwendet werden. Dies war der Hauptgrund, sie offiziell in Kotlin 1.1 zu veröffentlichen. Nach der Veröffentlichung hatte sich das JetBrains-Team verpflichtet, die Abwärtskompatibilität in Bezug auf alle Änderungen aufrechtzuerhalten, die in den kleineren Versionen während ihrer Entwicklung vorgenommen werden, und es den Mitarbeitern zu ermöglichen, sie in komplexen Produktionsanwendungen sicher zu testen.
Kurz gesagt, der Unterschied zwischen "experimentellen" und "normalen" Funktionen besteht darin, dass für normale Kotlin-Funktionen in geringfügigen Updates keine neuen Inhalte hinzugefügt werden können, da eine "vollständige Kompatibilitätsgarantie" besteht, während für experimentelle Funktionen neue Funktionen hinzugefügt werden können. Es kann jedoch nichts entfernt werden (aufgrund der Abwärtskompatibilitätsgarantie).
Experimentelle Coroutinen verwenden einen separaten kotlin.coroutines.experimental
Paketnamen, sodass der kotlin.coroutines
alte kompilierte Code nach Abschluss des Coroutine-Designs und dem Wechsel zum Paket nicht beschädigt wird, sondern weiterhin über eine separate Support-Bibliothek funktioniert.
Weitere (lange gelesene) Diskussionen darüber, warum sie "experimentell" sind und was dies bedeutet, finden Sie in diesem Forumsbeitrag von Andrey Breslav.
Die gleiche Frage gilt für Coroutinen-Unterstützungsbibliotheken.
Die aktuelle Version von kotlinx.coroutines
ist für den Produktionsbetrieb konzipiert. Es ist ziemlich gut mit Tests abgedeckt, viele Dinge sind bereits optimiert, alle Änderungen werden unter Berücksichtigung der Probleme der Abwärtskompatibilität mit zuvor kompiliertem Code vorgenommen. Es dient sicherlich als Prüfstand für verschiedene Coroutine-basierte Dinge, daher gibt es einige Teile, die in der Dokumentation der entsprechenden Funktionen und Klassen eindeutig als "in Arbeit" oder "instabil" gekennzeichnet sind. Standardmäßig gelten jedoch alle öffentlichen APIs in kotlinx.coroutines
als stabil und werden bei Bedarf mit geeigneten Migrationshilfen weiterentwickelt.
The feature "coroutines" is experimental (see more here)
und Link zu kotlinlang.org/docs/diagnostics/experimental-coroutines.html