"실험용"Kotlin 코 루틴을 프로덕션에 사용할 수 있습니까?


답변:


112

최신 정보 : Kotlin 코 루틴은 Kotlin 1.3에서 더 이상 실험적이지 않습니다.

Kotlin 코 루틴은 프로덕션에서 사용할 수 있으며 사용해야합니다. 이것이 Kotlin 1.1에서 공식적으로 출시 한 주된 이유입니다. 이들을 출시 한 JetBrains 팀은 사람들이 복잡한 프로덕션 애플리케이션에서 안전하게 시도 할 수 있도록하면서 마이너 릴리스에 도입 된 변경 사항과 관련하여 이전 버전과의 호환성을 유지하기 위해 노력했습니다.

간단히 말해, "실험용"기능과 "일반"기능의 차이점은 일반 Kotlin 기능의 경우 "완전 호환성"보장이 있기 때문에 새로운 기능을 사소한 업데이트에 추가 할 수없는 반면, 실험 기능의 경우 새로운 기능을 추가 할 수 있다는 것입니다. 그러나 제거 할 수있는 것은 없습니다 (이전 호환성 보장으로 인해).

실험적 코 루틴은 별도의 kotlin.coroutines.experimental패키지 이름을 사용하므로 코 루틴 디자인이 완료되면 다음으로 이동합니다.kotlin.coroutines 패키지 이전 컴파일 된 코드가 깨지지 않고 별도의 지원 라이브러리를 통해 계속 작동합니다.

그들이 "실험적"인 이유와 이것이 의미하는 바에 대한 추가 토론 (오래 읽음)은이 포럼 게시물 에서 찾을 수 있습니다. Andrey Breslav .

코 루틴 지원 라이브러리에도 동일한 질문이 적용됩니다.

의 현재 버전은 kotlinx.coroutines프로덕션 용도로 설계되었습니다. 그것은 테스트로 꽤 잘 다루어지고, 많은 것들이 이미 최적화되어 있으며, 모든 변경은 이전에 컴파일 된 코드와의 하위 호환성 문제를 고려하여 이루어집니다. 확실히 다양한 코 루틴 기반 작업에 대한 테스트 베드 역할을하므로 해당 함수 및 클래스의 문서에서 "진행중인 작업"또는 "불안정"으로 명확하게 표시된 부분이 있습니다. 그러나 기본적으로의 모든 공용 API는 kotlinx.coroutines안정적인 것으로 간주되며 필요한 경우 적절한 마이그레이션 지원을 통해 발전되고 있습니다.


5
우리가 사용하는 기능 (예 : kotlinlang.org/docs/diagnostics/experimental-coroutines.html에 대한 시작, 설명 The feature "coroutines" is experimental (see more here)및 링크) 에 대한 강조 표시된 경고를 보면 여전히 걱정이됩니다.
Elye

4
약간의 Catch-22입니다. 아무도 시도해 보지 않는다면 어떻게 전투 테스트를 받게 될까요? :) 반면에 JetBrains의 "실험적"기능에 대한 저의 경험은 다른 많은 공급 업체의 "생산 품질"릴리스 경험보다 훨씬 높습니다. 특히 저는 코 루틴 구현에 전혀 문제가 없었습니다. 내가 본 유일한 "결함"은 런타임에 영향을 미치지 않는 정적 유형 시스템에 의한 처리의 일부 세부 사항에 관한 것입니다. 그들은 Hazelcast Jet에서 매우 심각한 스트레스 테스트와 벤치 마크를 통과했습니다.
Marko Topolnik

이 답변의 일부는 명백히 잘못되었습니다. 전체 패키지는 그것의 실험이 아닌 일부입니다.
Jean de Klerk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.