2017-09-15 55 views

Odpowiedz

63

Koroniny Kotlina mogą i powinny być używane w produkcji. To był główny powód oficjalnego wydania ich w Kotlin 1.1. Po wydaniu ich zespół JetBrains zobowiązał się do zachowania wstecznej kompatybilności w odniesieniu do wszelkich zmian, które zostały wprowadzone do nich w niewielkich wydaniach w miarę ich ewolucji, a jednocześnie pozwala ludziom bezpiecznie wypróbować je w złożonych aplikacjach produkcyjnych.

W skrócie, różnica między funkcjami "eksperymentalnymi" i "normalnymi" polega na tym, że w przypadku normalnych funkcji Kotlin nowe rzeczy nie mogą być dodawane w niewielkich aktualizacjach, ponieważ istnieje gwarancja "pełnej zgodności", natomiast w przypadku funkcji eksperymentalnych nowe rzeczy można dodać, ale nic nie można usunąć (z powodu gwarancji zgodności wstecznej).

Eksperymentalne coroutines używają oddzielnej nazwy pakietu kotlin.coroutines.experimental, dzięki czemu po sfinalizowaniu projektowania konturu i przejściu na pakiet kotlin.coroutines stary skompilowany kod nie zostanie złamany, ale będzie nadal działał przez oddzielną bibliotekę pomocy.

Dalsza dyskusja (przeczytane) o tym, dlaczego są "eksperymentalne" i co to oznacza, można znaleźć w tym forum post przez Andrey Breslav.

To samo pytanie dotyczy bibliotek obsługi Coroutines.

Aktualna wersja kotlinx.coroutines została zaprojektowana do użytku produkcyjnego. Jest dość dobrze pokryty testami, wiele rzeczy jest już zoptymalizowanych, wszystkie zmiany są dokonywane z uwzględnieniem problemów wstecznej zgodności z wcześniej skompilowanym kodem. Z pewnością służy jako miejsce testowania różnych rzeczy opartych na schematach, więc niektóre części są wyraźnie oznaczone jako "praca w toku" lub "niestabilna" w dokumentacji odpowiednich funkcji i klas. Jednak domyślnie wszystkie publiczne interfejsy API w wersji kotlinx.coroutines są uważane za stabilne i ewoluują w razie potrzeby dzięki odpowiednim pomocom migracji.

+1

Ciągle niepokoi mnie, gdy widzę podświetlone ostrzeżenie o funkcji, której używamy, np. Uruchomienie, stwierdzenie "funkcja" coroutines "jest eksperymentalna (zobacz więcej tutaj) i link do https://kotlinlang.org/docs/diagnostics/experimental-coroutines.html – Elye

+0

To trochę Catch-22, nie jest to? Jak zostaną przetestowane w walce, jeśli nikt ich nie wypróbuje? Z drugiej strony, moje doświadczenia z "eksperymentalnymi" funkcjami JetBrains są o wiele lepsze od doświadczeń z "jakością produkcji" wydaną przez wielu innych dostawców. W szczególności miałem absolutnie zero problemów z wdrażaniem Coroutines; Jedyne "usterki", jakie widziałem, dotyczyły szczegółów w ich traktowaniu przez system typu statycznego, który nie ma reperkusji w środowisku wykonawczym. Przeszli dość poważne testy stresu i testy porównawcze w Hazelcast Jet, z latałymi kolorami. –