내가 알고 있는 안드로이드 앱 개발방법은 layout.xml 에 layout 을 정의하고, View컴포넌트의 배치 및 속성을 설정한 후, 액티비티 클래스에서 리소스(layout 및 View컴포넌트)에 해당하는 인스턴스를 생성하여 이벤트처리 로직을 구현하는 방식이다. 근데, 최신 안드로이드 앱 개발기술에 대해서 검색을 하다보니, 젯팩 컴포즈라는 것을 활용하여 xml 없이 코틀린 코드만을 사용하여 쉽고 빠르게 UI 를 선언적으로 구성할수 있다고 한다. (과거의 방식도 여전히 사용할수는 있다)
그래서 최신 기법(?)인 젯팩 컴포즈가 무엇인지 살펴보고, 스터디한 내용을 기록으로 남겨보고자 한다.

아래에 정리할 내용은 다음과 같다.
- 젯팩 컴포즈란?
- 젯팩 컴포즈의 장단점
- 젯팩 컴포즈의 등장배경
1) 젯팩 컴포즈란?

위와 같이 Gemini 에게 질문을 해보았다.
Jetpack Compose는 Android의 사용자 인터페이스(UI)를 구축하기 위한 현대적인 선언형(Declarative) UI 툴킷입니다. 기존의 XML 기반 명령형(Imperative) 방식 대신, Kotlin을 사용하여 UI를 직접 코드로 작성할 수 있게 해줍니다.
2) 젯팩 컴포즈의 장단점
Gemini 가 아래와 같이 장/단점을 잘 작성해주었는데, 내가 생각했을때 직접적으로 느껴지는 장점은 액티비티를 구성하는 다양한 UI 컴포넌트들의 상태 데이터에 대한 관리를 시스템이 알아서 해준다는 점이다. 화면에 보이는 여러개의 텍스트, 버튼들이 모두 완벽하게 동기화되어 동작을 해야 하는데, 이를 위해 각 컴포넌트별 "초기값", "현재값"을 관리하는 것은 꽤 번거로운 일이다.
이런 부분을 시스템이 알아서 처리해준다면, 앱 개발자는 좀더 '비즈니스 로직'에 집중할 수 있게 될 것이다.
단점으로 몇가지를 언급하고 있는데, 하나하나씩 살펴보면.
1) 초기 학습 곡선은... 쓰다보면 해결될 문제라 이건 제외.
2) 젯팩 컴포즈는 구글에서 밀고 있는 차세대 앱 개발 방식인만큼 현재가 아니라 미래를 바라본다면 생태계 및 성숙도 이슈도 미래에는 이슈가 아닐것이라 생각한다.
3) 성능최적화의 경우, 젯팩 컴포즈에 대한 동작방식을 제대로 이해하지 못하고 사용하는 경우 발생하는 이슈로 생각되는데, 젯팩 컴포즈에 국한된 문제가 아니라, 기존 앱 개발방식에서도 동일하다고 생각된다. (라이브러리 사용법을 제대로 숙지하지 못하면 다 발생하는 문제임)
| 장점 |
|
| 단점 |
|
3) 젯팩 컴포즈 등장배경
위에서도 언급을 했지만, 기존 Android 개발에서 UI 컴포넌트를 XML에 분리하여 명시하고, 각 View 컴포넌트의 상태 변경 로직을 수동으로 적용하는 방식은 복잡하고 까다롭다. 점점 더 복잡하고 동적인 앱 화면을 쉽게 구성하기 위해 더 직관적이며 편리한 개발 경험을 제공하기 위한 구글의 솔루션이 Jetpack Compose 인 것이다.
난 써본적없지만, 이미 iOS 의 SwiftUI 나, 웹의 React 는 데이터기반 선언형 UI 패러다임을 채용하고 있다고 하니, 이런 방식을 안드로이드 앱에 적용하는 것이 별로 새로울 것도 아닌것이다.
1) 기존 Android UI 개발의 한계 (XML + View System)
- 명령형(Imperative) UI:
- UI의 상태를 변경할 때마다 개발자가 직접 뷰(View)를 찾아서(e.g., findViewById) 속성을 변경하는 방식이었습니다. 이는 코드의 양을 늘리고, **UI 상태와 실제 데이터 상태 간의 불일치(동기화 문제)**를 야기하기 쉬웠습니다.
- 복잡한 상태 관리:
- 데이터 변화에 따라 UI를 업데이트하는 로직이 복잡해지면서 버그 발생 가능성이 높았습니다.
- 느린 개발 속도와 높은 유지보수 비용:
- XML 파일과 Kotlin/Java 코드를 왔다 갔다 해야 했으며, 미리보기 기능이 제한적이었습니다.
2) 모바일 개발 트렌드의 변화
- 선언형 UI 패러다임의 등장:
- Apple의 SwiftUI나 웹의 React와 같이, 데이터 기반의 선언형 UI 패러다임이 현대 개발의 표준으로 자리 잡았습니다. 이 방식은 UI를 더 예측 가능하고 쉽게 관리할 수 있게 해줍니다.
- Kotlin 채택과 활용:
- Google이 Android 개발의 주 언어로 Kotlin을 채택하면서, Kotlin의 간결함과 안전성을 극대화할 수 있는 UI 툴킷의 필요성이 대두되었습니다.
젯팩 컴포즈를 공부해보자
자 그러면, 5년전에 구입한 안드로이드 앱 개발서적은 잠시 덮어두고..... 젯팩 컴포즈를 공부해봐야겠다.
(요즘 사람들은 유튜브나 온라인 강의부터 들을것 같은데) 난 개발서적부터 검색해봤다.
교보문고 가서 1)최신 서적이면서, 2)표지가 이쁜걸로 골랐다. (에이콘 출판사에는 죄송합니다...)

스터디 계획을 짜기위해 책 목차를 살펴봤다.
- Ch1~9: 안드로이드 스튜디오 설치 및 사용법 및 컴포즈에 대한 간단한 소개
- Ch10~17: 안드로이드 아키텍처 및 코틀린 언어에 대한 설명
- Ch18~52: 젯팩 컴포즈에 대한 모든(?) 것 ← 스터디 해야 할 부분
- Ch53: 머티리얼 디자인3
- Ch54: 안드로이드 앱 배포
- Ch55: 안드로이드 스튜디오의 그레이들(Gradle)
안드로이드 스튜디오는 이미 다른 책보면서 설치해놓기도 했고, 구글링을 해보면 이 부분에 대해서는 워낙에 잘 설명해놓은 블로그가 많았다. 내가 굳이 이 부분을 정리할 필요는 없을것 같다.
코틀린에 대해서는 정리가 한번 필요하긴 한데, 프로그래밍 언어 자체의 특징이나 문법 공부를 하다보면 지루하기도 하고 흥미도 금방 떨어질수 있으니, 젯팩 컴포즈 공부하면서 그때그때 모르는 문법 나오면 정리를 하는게 좋겠다.
이미 코틀린에 대해서는 퀵(?) 하게 보고 있는 중이다.
- 코틀린 퀵하게 살펴보기 (1)
Ch18~52 영역이 젯팻 컴포즈에 대한 부분이니 여기를 집중적으로 공부하고 내용을 정리해놓자.
시작해보자. Spark. Then. Move !
'안드로이드 앱' 카테고리의 다른 글
| 안드로이드 젯팩 컴포즈 (ch22~25) - Slot API, 모디파이어(Modifier), Row/Column 레이아웃 (0) | 2025.11.26 |
|---|---|
| 안드로이드 젯팩 컴포즈 (ch18~21) - 컴포저블 개념, 상태 및 재구성 (0) | 2025.11.26 |
| 안드로이드 앱 개발에 필요한 모든 것 (목차) (0) | 2025.11.22 |
| 안드로이드 앱 3개 따라만들기 (0) | 2025.11.22 |
| 코틀린 퀵하게 살펴보기 (1) (0) | 2025.11.21 |