[Compose] Jetpack Compose란?

Choi Sang Rok·2022년 1월 13일
1

compose

목록 보기
5/5

Compose에 대해 알아보기 전에, 왜 Compose가 등장했고 사용해야 하는지에 대해 말해보려 한다.


명령형 프로그래밍


이전에 사용하던 안드로이드 UI 제작 방식은,
먼저 xml에서 UI를 선언하고, 그 후 xml에서 UI 속성을 조작하거나, Class에서 findViewById나 ViewBinding을 통해 속성을 조작하였다. 이러한 방식을 "명령형 프로그래밍" 이라고 부른다.

<TextView
        android:id="@+id/resultText"
        ...
resultText = findViewById(R.id.resultText);
resultText.setText(resultStr);

명령형 프로그래밍을 사용하여 UI를 제작하게 되면 다음과 같은 단점이 발생한다.


1. 보일러 플레이트 코드의 증가

예를 들어 뷰를 100개 만들었다고 하자, 이렇게 되면 findViewById 코드를 100개 만들고 그에 대한 이벤트도 각각 처리해야 한다. 즉, 보일러 플레이트 코드 가 많아지게 된다는 의미이다. 뿐만 아니라, 의도하지 않는 UI를 만들거나 정의하게 될 수도 있다.

보일러 플레이트 코드? 최소한의 변경으로 여러 곳에서 재 사용되며, 반복적으로 비슷한 형태를 띄는 코드

2. 생산속도의 저하

액티비티와 xml을 오가면서 작업하게 되면 효율성이 떨어질 수 밖에 없다. 또한, 개발자가 getter와 setter을 통해 내부 동작을 만들고, 그 과정에서 실수가 발생하거나 불필요한 코드가 발생하게 될 수도 있다.

Jetpack Compose Library


https://developer.android.com/jetpack/compose?hl=ko
"Jetpack Compose는 네이티브 UI를 빌드하기 위한 Android의 최신 도구 키트입니다. Jetpack Compose는 Android에서 UI 개발을 간소화하고 가속화합니다. 적은 수의 코드, 강력한 도구 및 직관적인 Kotlin API를 사용하여 앱을 빠르고 생동감 있게 구현하세요."

위를 해결하기 위해 나온것이 Jetpack Compose Library 이다.
Kotlin으로 제작되었기 때문에 선언형 프로그래밍의 특징을 UI를 코드 레벨에서 구현할 수 있다.

선언형 프로그래밍? 필요한 것을 달성하는 과정을 하나하나 기술하는 것보다 필요한 것이 어떤 것인지 기술하는 데 방점을 두고 애플리케이션의 구조를 세워 나가는 프로그래밍 구조

XML 레이아웃을 수정하거나, Layout Editor를 사용하지 않고 단지 Jetpack Compose 함수를 호출하여 원하는 요소를 말하면 Compose 컴파일러에서 나머지 작업을 완료한다.

장점)

  • Less Code : 적은 수의 코드로 더 많은 작업을 하고 버그 클래스를 방지함으로써 코드가 간단하고 유지 관리가 쉽다.
  • Intuitive : 원하는 요소를 말하면 Compose 컴파일러에서 처리하고, 앱 상태가 변경되면 UI가 자동 업데이트 된다.
  • Accelerate Developement : 기존 코드와 호환되고, Android Studio에서 실시간 미리보기를 지원한다.
  • Powerful : Android 플랫폼 API에 직접 액세스하고, 머터리얼 디자인, 테마, 애니메이션 등을 지원하는 앱을 만들 수 있다.

Compose를 활용한 프로젝트 세팅

https://developer.android.com/jetpack/compose/setup?hl=ko#kts

Jetpack Compose는 프로젝트 템플릿을 지원하기 때문에, File > New > New Project 에서 Emptry Compose Activity로 프로젝트를 생성하면 된다. Compose는 Kotlin으로 작성되었기 때문에 언어는 Kotlin으로 제한되어 있고 API는 21 이상을 선택한다.

생성하면 다음과 같이 종속 항목과 의존성 설정이 추가되어 있다는 것을 확인할 수 있다.

profile
android_developer

3개의 댓글

comment-user-thumbnail
2022년 1월 13일

다음 글 언제 올라오나요~~ 기대가 됩니다 :)

1개의 답글
comment-user-thumbnail
2022년 1월 18일

역시 최록상 선배님... 코틀린을 뒤집어 놓으셨다.. 와 ...글,운율,문단 모든게 완벽하다..

답글 달기