[Jetpack Compose] Compose # 1 - 기본
Jetpack Compose 란?
Jetpack 컴포스는 구글이 제시한 최신 선언형 UI 프레임워크이다.
기존 레거시 뷰 체계는 앞으로 등장하게 될 다양한 기기들의 화면(폴더블, 플렉서블, 테블릿 등) 형태에 대응하기 어렵고, 이러한 레거시 라이브러리의 업데이트는 안드로이드 엔지니어들이나 이를 이용하여 개발하는 개발자 둘 다에게 비효율적이다. 따라서 구글에서는 완전히 새로운 Android UI 설계 프레임워크를 지난 21년 5월에 출시하였다.
본 포스트는 Jetpack Compose 1.0 버전 기준으로 작성하였다.
Jetpack Compose 의 특징
- API Level 21 부터 호환하여, 대부분의 안드로이드 OS 버전에 호환
- 특정 OS에 의존하지 않아 업데이트가 매우 빠름
- 선언형 프로그래밍 패러다임 적용 ( XML 을 사용하지 않음 )
기존 뷰 체계의 문제점
기존 명령형/Event 중심 UI 구조의 문제는 뷰가 많고 뷰의 계층구조가 복잡해질 때, 개발자가 항상 XML 과 Activity/Fragment의 상태(State)를 일치시키는데 면밀한 집중을 요구했다. 때문에 개발자가 놓치는 부분에서 오류가 발생할 가능성이 늘 존재했고 이로인한 유지관리의 복잡성이 증가했었다.
* 여기서 상태(State)의 예시 : TextView 내의 text 값이나 Visibillity 값과 같은 것
Jetpack Compose 가 제시하는 기존 뷰 체계의 해법
컴포스는 XML없이 프로그래밍적으로 UI를 구현해 개발자가 코드 하나에만 집중할 수 있도록 하였고, 상태에 따라 UI를 업데이트 하는 구조이기에 개발자는 상태의 표현 방법에만 집중하면 된다. 프레임워크는 상태의 변화가 발생하는 부분에 대해서 즉각적으로 업데이트를 수행한다.
이 부분은 문서에 설명이 잘 되어있다.
Jetpack Compose 를 바로 적용해야하는가?
아직은 기존 View가 가진 강점(ExoPlayer, Map 등)을 전부 대체하진 못하기에, 당장 전부 전환할 필요는 없다. 이후 좀 더 많은 기능을 제공할 때 수행해도 충분하다. 그리고 아래와 같이 뷰와 컴포서블 컴포넌트는 혼용이 가능하다. 따라서 지금부터 부분적으로 적용해도 매우 잘 작동한다. 따라서 지금 시기에는 각 UI 프레임워크가 가지는 장점에 따라 선택적으로 사용하는게 좋을 것 같다.
참조
'Mobile : Android > Jetpack' 카테고리의 다른 글
[Jetpack AAC] 뷰모델(ViewModel) #1 : MVVM (0) | 2022.06.13 |
---|---|
[Jetpack AAC] Data Binding 기본 #2 : ObservableField (0) | 2022.04.30 |
[Jetpack AAC] Data Binding 기본 #1 (0) | 2022.04.12 |
[Jetpack AAC] View Binding 정리 (0) | 2021.11.15 |
댓글