아키텍처
아키텍처는 플랫폼의 실제적인 동작 구조 또는 형태를 말합니다.
우리가 작성한 소스 코드가 디바이스에 설치되면 이 아키텍처 구조 안에서 모든 동작이 결정됩니다.
빌드
컴파일이란 사람이 읽을 수 있는 형태의 소스 코드를 컴퓨터가 읽을 수 있는 형태의 기계어로
변환해주는 과정입니다.
컴퓨터는 기계어만 이해하고 동작하는데 이 기계어의 구조를 사람이 이해하는 것이 어려워
C, 자바, 코틀린과 같은 언어가 생겨난 것입니다.
새롭게 다루는 것들
■ 젯팩 : 파편화되어 있는 수많은 버전에서 일관되게 동작하는 라이브러리 모음입니다.
■ 뷰 바인딩 : 전통적인 findViewById()에서 코틀린 익스텐션으로 대체되었던 뷰에 대한 접근이
뷰 바인딩이라는 방식으로 대체되었습니다.
■ 코루틴 : 기존의 스레드를 대체하는 새로운 백그라운드 처리 방식입니다.
젯팩
안드로이드는 모든 버전과 기기에서 일관되게 동작하는 젯팩(Jetpack) 라이브러리를 제공합니다.
안드로이드 개발자들은 수많은 파편화로 인해 각각의 버전 및 기기별로 여러 버전의 코드를 작성해 왔습니다.
이런 문제들을 해결하기 위해 젯팩이 개발되었고, 개발자들은 필요한 로직에만 집중할 수 있게 되었습니다.
젯팩을 사용하는 이유
젯팩을 사용하는 이유는 총 3가지로 볼 수 있습니다.
① 하위 버전 호환성 : 최신 설계 방식을 바탕으로 빌드된 젯팩 라이브러리는 이전 버전과의 호환성 기능이 통합되어비정상 종료와 메모리 누수를 줄일 수 있게 해줍니다.
② 반복되는 코드 제거 : 젯팩은 개발자가 비즈니스 로직을 작성하는 데 집중할 수 있도록 백그라운드 작업, 수명 주기 관리 등 반복적이고 지루한 코드를 제거해줍니다.
③ 낮은 복잡도 : 모든 버전 및 기기에서 일관된 동작으로 코드의 복잡도를 낮춰줍니다.
젯팩 라이브러리
젯팩은 약 90개 정도의 라이브러리를 제공합니다.
◆ 컬렉션(Collection)◆ 컨스트레인트 레이아웃(ConstraintLayout)◆ 프래그먼트 (Fragment)◆ 리사이클러뷰 (RecyclerView)◆ 뷰페이저2 (ViewPager2)◆ 프리퍼런스 (Preference)◆ 룸 (Room)
이 외에도 액티비티(Activity), 애너테이션(Annotation), 코어(Core) 등이 사용됩니다.
뷰 바인딩
그간 전통적인 방식의 findViewById()를 대체해서 코틀린 익스텐션을 사용해왔지만,
코틀린 1.4.20부터는 코틀린 익스텐션이 폐기(deprecated) 처리됩니다...
안드로이드 스튜디오 3.6 버전부터는 코틀린 익스텐션을 개선한 뷰 바인딩(View Binding)을 지원하고 있습니다.
뷰 바인딩은 레이아웃 파일이 사용되는 모든 곳에서 코틀린 익스텐션을 대체할 수 있는데,
액티비티(Activity)와 프래그먼트(Fragment), 어댑터(Adapter)에서 각각의 사용법이 조금씩 다릅니다.
액티비티에서 사용하기
val binding by lazy { 레이아웃파일명Binding.inflate(layoutInflater) }
프래그먼트에서 사용하기
// onCreateView() 안에서 다음과 같이 사용됩니다.
var binding = 레이아웃파일명Binding.inflate(LayoutInflater.from(container.context),
container, false)
어댑터에서 사용하기
// onCreateViewHolder() 안에서 다음과 같이 사용됩니다.
var binding = 레이아웃파일명Binding.inflate(LayoutInflater.from(parent.context), parent,
false)
코루틴
백그라운드 처리를 위해 사용되던 스레드(Thread)를 경량화환 코루틴(Coroutine)이 제공됩니다.
동시성 프로그래밍이 가능한 코루틴은 다른 언어에서 이미 사용되고 있는 개념을 코틀린에 도입한 것입니다.
기존의 스레드는 코루틴을 위해 실행 가능한 공간을 제공하는 역할만 하며,
하나의 스레드에 여러 개의 코루틴이 존재할 수 있도록 설계되었습니다.
그래서 2개 이상의 코루틴이 있을 때 프로세스 흐름이 코루틴 1에서 코루틴 2로 변경된다 하더라도 기존 스레드의
변경에서 발생할 수 있었던 성능저하는 더 이상 발생하지 않습니다.
코루틴의 동작 범위를 설정하는 코루틴 스코프(Coroutine Scope)와
코루틴이 동작하는 스레드를 결정하는 디스패처(Dispatcher), 그리고
코루틴의 핵심이라고 할 수 있는 서스펜드(Suspend) 키워드에 대해 공부하겠습니다.
다음 차시에는 코틀린 사용을 위한 기본 문법을 공부하겠습니다. 감사합니다.
이 책은 이것이 안드로이드다 with 코틀린 을 토대로 공부하였습니다.
https://product.kyobobook.co.kr/detail/S000001810460