web-dev-qa-db-fra.com

Peut-on utiliser des coroutines de Kotlin "expérimentales" dans la production?

Les coroutines Kotlin peuvent-elles être utilisées en production et que signifie leur statut expérimental?

73
Roman Elizarov

[~ # ~] update [~ # ~] : les routines Kotlin ne sont plus expérimentales à partir de Kotlin 1.3.

Les coroutines Kotlin peuvent et doivent être utilisées dans la production. C'était la raison principale pour les libérer officiellement dans Kotlin 1.1. Après les avoir publiées, l’équipe de JetBrains s’était engagée à maintenir une compatibilité amont avec toutes les modifications qui leur sont apportées dans les versions mineures au fur et à mesure de leur évolution, tout en permettant aux utilisateurs de les essayer en toute sécurité dans des applications de production complexes.

En bref, la différence entre les fonctionnalités "expérimentales" et "normales" est que, pour les fonctionnalités normales de Kotlin, aucune nouveauté ne peut être ajoutée dans les mises à jour mineures, car il existe une garantie de "compatibilité totale", alors que pour les fonctionnalités expérimentales, de nouvelles fonctionnalités peuvent être ajoutées. mais rien ne peut être supprimé (en raison de la garantie de compatibilité ascendante).

Les coroutines expérimentales utilisent un kotlin.coroutines.experimental nom du paquet, de sorte que lorsque la conception des coroutines est finalisée et qu’elles passent à kotlin.coroutines package, l’ancien code compilé ne se cassera pas, mais continuera à fonctionner via une bibliothèque de support séparée.

Une discussion plus longue (longue lecture) sur la raison pour laquelle ils sont "expérimentaux" et ce que cela signifie peut être trouvée dans ceci message du forum par Andrey Breslav.

La même question s'applique aux bibliothèques de support de coroutines.

La version actuelle de kotlinx.coroutines est conçu pour une utilisation en production. Il est assez bien couvert de tests, beaucoup de choses sont déjà optimisées, toutes les modifications ont été apportées compte tenu des problèmes de compatibilité avec les versions antérieures du code compilé. Il sert certainement de banc d’essai pour diverses choses à base de coroutine, de sorte que certaines parties sont clairement identifiées comme "travaux en cours" ou "instables" dans la documentation des fonctions et des classes correspondantes. Cependant, par défaut, toutes les API publiques de kotlinx.coroutines sont considérés comme stables et évoluent, si nécessaire, avec des aides à la migration appropriées.

98
Roman Elizarov