Le coroutine Kotlin "sperimentali" possono essere utilizzate nella produzione?


Risposte:


112

AGGIORNAMENTO : le coroutine di Kotlin non sono più sperimentali a partire da Kotlin 1.3.

Le coroutine di Kotlin possono e devono essere utilizzate nella produzione. Questa è stata la ragione principale per rilasciarli ufficialmente in Kotlin 1.1. Dopo averli rilasciati, il team di JetBrains si era impegnato a mantenere la compatibilità con le versioni precedenti rispetto a qualsiasi modifica introdotta nelle versioni minori man mano che si evolvono, consentendo alle persone di provarli in sicurezza in applicazioni di produzione complesse.

In breve, la differenza tra le funzionalità "sperimentali" e "normali" è che per le normali funzionalità di Kotlin non è possibile aggiungere nuove cose negli aggiornamenti minori, perché c'è una garanzia di "piena compatibilità", mentre per le funzionalità sperimentali possono essere aggiunte nuove cose, ma nulla può essere rimosso (a causa della garanzia di compatibilità con le versioni precedenti).

Le coroutine sperimentali utilizzano un kotlin.coroutines.experimentalnome di pacchetto separato , in modo che quando il design delle coroutine è finalizzato e si spostano inkotlin.coroutines pacchetto, il vecchio codice compilato non si interromperà, ma continuerà a funzionare tramite una libreria di supporto separata.

Ulteriori discussioni (di lunga lettura) sul motivo per cui sono "sperimentali" e cosa significa questo possono essere trovate in questo post del forum di Andrey Breslav.

La stessa domanda si applica alle librerie di supporto delle coroutine.

L'attuale versione di kotlinx.coroutinesè progettata per l'uso in produzione. È abbastanza ben coperto di test, molte cose sono già ottimizzate, tutte le modifiche vengono apportate considerando i problemi di retrocompatibilità con il codice precedentemente compilato. Certamente serve come banco di prova per varie cose basate sulla coroutine, quindi ci sono alcune parti che sono chiaramente contrassegnate come "work in progress" o "unstable" nella documentazione delle funzioni e classi corrispondenti. Tuttavia, per impostazione predefinita, tutte le API pubbliche in kotlinx.coroutinessono considerate stabili e vengono evolute, se necessario, con gli opportuni aiuti alla migrazione.


5
Mi preoccupa ancora quando vedo l'avviso evidenziato sulla funzione che utilizziamo, ad esempio lancio, dichiarazione The feature "coroutines" is experimental (see more here)e collegamento a kotlinlang.org/docs/diagnostics/experimental-coroutines.html
Elye

4
È un po 'un Catch-22, non è vero? Come verranno testati in battaglia se nessuno li proverà? D'altra parte, la mia esperienza con le funzionalità "sperimentali" di JetBrains è miglia al di sopra dell'esperienza con le versioni di "qualità di produzione" di molti altri fornitori. Nello specifico, ho avuto assolutamente zero problemi con l'implementazione delle coroutine; gli unici "difetti" che ho visto riguardavano alcuni dettagli nel loro trattamento da parte del sistema di tipi statici, che non hanno ripercussioni sul runtime. Hanno superato prove di stress e benchmark piuttosto seri su Hazelcast Jet, a pieni voti.
Marko Topolnik

Parti di questa risposta sono palesemente sbagliate. L' intero pacchetto è sperimentale, non alcune parti di esso.
Jean de Klerk
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.