제이슨의 개발이야기

코틀린 코루틴이란 무엇인가?? 꼭 배워야 할까?? 코루틴 vs rx자바 본문

안드로이드

코틀린 코루틴이란 무엇인가?? 꼭 배워야 할까?? 코루틴 vs rx자바

제이쓰은 2021. 3. 25. 00:29
728x90
반응형

구글이 first kotlin 을 외친 후 최근 새로운 프로젝트에 대부분은 아마 코틀린으로 작업 하고 있습니다 그만큼 이제 안드로이드 개발이 자바에서 코틀린으로 넘어오는 추세입니다 코틀린을 공부하다보면 코루틴이라는 단어는 분명 들어 보셨을겁니다 

코루틴이 무엇일까요? 

코루틴은 비동기적으로 실행되는 코드를 간소화 하기 위해 Android에서 사용할 수 있는 동시 실행 설계패턴입니다

 

코루틴은 Android의 비동기 프로그래밍에 권장되는 솔루션입니다. 주목할 만한 기능은 다음과 같습니다.

  • 경량: 코루틴을 실행 중인 스레드를 차단하지 않는 정지를 지원하므로 단일 스레드에서 많은 코루틴을 실행할 수 있습니다. 정지는 많은 동시 작업을 지원하면서도 차단보다 메모리를 절약합니다.
  • 메모리 누수 감소구조화된 동시 실행을 사용하여 범위 내에서 작업을 실행합니다.
  • 기본으로 제공되는 취소 지원: 실행 중인 코루틴 계층 구조를 통해 자동으로 취소가 전달됩니다.
  • Jetpack 통합: 많은 Jetpack 라이브러리에 코루틴을 완전히 지원하는 확장 프로그램이 포함되어 있습니다. 일부 라이브러리는 구조화된 동시 실행에 사용할 수 있는 자체 코루틴 범위도 제공합니다.

출처 : developer.android.com/kotlin/coroutines?hl=ko&gclid=CjwKCAjwxuuCBhATEiwAIIIz0e8glyoBtREsCf8sMWJMTaXCz_KgnD7zpJj5TWqvJ-KxBP92DzmRuBoCHxgQAvD_BwE&gclsrc=aw.ds 

 

Android의 Kotlin 코루틴  |  Android 개발자  |  Android Developers

코루틴은 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴입니다. 코루틴은 Kotlin 버전 1.3에 추가되었으며 다른 언어에서 확립된 개념을 기반으로

developer.android.com

 

그렇다면 코루틴을 꼭 배워야 할까요?

현재 앱이나 웹이나 비동기처리가 핵심인 클라이언트 프로그래밍에서 가장 핫한 키워드는 rx라고 합니다 

그러나 안드로이드 개발 언어가 자바에서 코틀린으로 넘어 오면서 상당수 프로젝트 에서 비동기 처리를 코루틴으로 처리 하는 경우가 많아지고 있습니다 물론 아직 rx를 쓰고 있는 프로젝트도 있고 코루틴이 rx에 비해 월등히 좋다라고 말할 수 없습니다! 

코루틴은 rx에 비해서 비동기 처리 를 할때 상대적으로 훨씬 쉽게 이루어젔습니다 물론 개인마다 차이가 있을 수 있다고 생각합니다 

그러나 저 역시도 rx에 비해서 코루틴이 좀 더 쉽게 느껴젔습니다 

 

앞서 코루틴이 무엇인가에 대해 간략하게 썼는대 코루틴에는 3가지 키워드가 있습니다

 

1. 협력형 멀티 테스킹

2. 동시성 프로그래밍 지원

3. 비동기 처리를 쉽게 도와줌

 

1. 협력형 멀티 테스킹 이란 

Co(협력, 같이) 라는 뜻과 Routine(특정한 일을 실행하기 위한 일련의 명령) 이라는 두 단어의 합성어이고 하나의 쓰레드가 끝날 때까지 계속되는 것과는 달리 코루틴은 실행 중간에 다른 작업을 하러 갔다가 돌아와서 작업을 다시 할 수 있습니다

 

2.동시성 프로그래밍 지원 은

함수를 중간에 빠져나왔다가, 다른 함수에 진입하고, 다시 원점으로 돌아와 멈추었던 부분부터 다시 시작하는 이 특성은 동시성 프로그래밍을 가능하게 한다.

함수를 실행 하는 중 딜레이 되는 시간에 다른 함수에 진입해 실행하는 것으로 왔다 갔다 하는 시간이 빨라 마치 사용자가 보기에는 동시에 진행되는거 처럼 보인다 

 

이 3가지 키워드는 밑에 설명이 잘 되어있는 블로그를 참고 해주세요 설명이 너무 잘되어있습니다!

wooooooak.github.io/kotlin/2019/08/25/코틀린-코루틴-개념-익히기/

 

코틀린 코루틴(coroutine) 개념 익히기 · 쾌락코딩

코틀린 코루틴(coroutine) 개념 익히기 25 Aug 2019 | coroutine study 앞서 코루틴을 이해하기 위한 두 번의 발악이 있었지만, 이번에는 더 원론적인 코루틴에 대해서 알아보려 한다. 코루틴의 개념이 정확

wooooooak.github.io

 

코루틴 인가 ? RX 인가?

 

둘중에 어떤걸 사용하는 것이 좋을까요??

 

Fabio Collini 는 다음과 같은 “알고리즘”을 제안했습니다.

  • 이미 RxJava를 사용하고 있고 잘 동작 한다면 RxJava 를 사용하세요.
  • 아키텍처가 Reactive Stream 을 기반으로 하는 경우 RxJava 를 사용하세요.
  • 프로젝트가 Kotlin Native 를 사용한 멀티플랫폼 인 경우 코루틴을 사용하세요.
  • 코드 베이스가 Java / Kotlin 인 경우 RxJava를 사용하세요.
  • 이외에는, 코루틴 을 사용하세요.

RxJava 는 학습 곡선이 가파르지만 코루틴 은 RxJava 보다 이해하기 쉽습니다.

따라서 앞서 말한 경우를 제외하고 대부분의 상황에는 코루틴이 바람직하다고 합니다 

위에 내용은 밑에 블로그에서 참고 한 내용이고 자세한 내용은 블로그에서 확인해주세요 

GM.Lim

카카오 안드로이드 소프트웨어 엔지니어, gm.lim.kr@gmail.com, https://github.com/GMLim

medium.com/@limgyumin/코틀린에서-비동기-코드-구현-코루틴-vs-rxjava-e4ea7820540e

 

 

 

 

728x90
반응형