본문 바로가기
Coding/Android

jetpack compose 개요 및 구성

by 루민즈 2023. 2. 18.
반응형

Jetpack compose

안녕하세요 

몇 달 전에 구글에서 메일이 왔습니다. Jetpack compose를 써보라는 메일이었고 간단한 튜토리얼을 조금 맛보았습니다. 

 

안드로이드 앱을 개발하기 위해서는 여러 가지 방법이 있습니다. 

기본적으로 안드로이드 스튜디오 + 자바/코틀린 + android:xml이 있습니다. 아마 현재까지 개발자들이 가장 많이 사용했던 프레임워크일 거라 봅니다. 하지만 이러한 방식은 굉장히 불편합니다. 예를 들어 Button을 누르면 Toast가 뜨는 앱을 만든다고 했을 때 

activity_main.xml에서 Button을 추가한 다음 id를 입력해 주고 MainActivity.java파일에서 findViewById를 선언하여 버튼을 가져와서 Toast 코드를 작성해 줘야 됩니다.  실제로 구글에서도 findViewById를 언급하면서 뷰를 수동으로 조작하면 오류를 발생할 가능성이 커진다고 나와있습니다. 

 

즉 xml파일과 java파일을 왔다갔다 해야 된다는 거죠 이러한 번거로움을 해결하기 위해 새로운 프레임워크인 Jetpack compose를 구글에서 개발했습니다. 

 

지난 2019년 구글에서 jetpack compose라는 선언형 프로그래밍 방식을 처음 발표했습니다. 그리고 2021년 7월 안정화된 버전이 1.0.0이 출시되면서 많은 사람들이 쓰기 시작했습니다. 

 

jetpack compose 예시

선언형 프로그래밍

선언형 프로그래밍이란 프로그램이 어떤일을 수행해야 하는지를 명시하는 것이 아니라 원하는 결과를 명시하는 방식으로 코딩하는 것입니다. 다시 말해 작성한 코드가 어떻게 동작하는지를 상세히 설명해야 되는 게 아니라 원하는 결과를 나타내는 코드를 작성하는 기법입니다. 

 

선언형 프로그래밍과 대비되는 개념이 바로 아주 익숙한 개념인 명령형 프로그래밍입니다. Jetpack Compose가 아닌 일반적인 안드로이드 스튜디오 + 자바/코틀린으로 작성했거나 VS랑 c로 작성했다면 다 명령형 프로그래밍입니다. 물론 선언형도 일부 들어가 있습니다. 일반적으로 처음 배울 때 그리고 지금 많이 쓰이는 프로그래밍 기법이죠 

 

python으로 작성한 코드를 예시로 들자면

명령형 프로그래밍은 

 

# 리스트에서 짝수만 추출하는 함수
def get_even_numbers(numbers):
    result = []
    for num in numbers:
        if num % 2 == 0:
            result.append(num)
    return result

# get_even_numbers 함수 호출
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = get_even_numbers(numbers)
print(even_numbers)

이런식으로 반복문을 통해 순회하며, 짝수인 경우 리스트에 추가하는 작업을 수행합니다. 

반면에 선언형 프로그래밍은 

 

 

# 리스트에서 짝수만 추출하는 함수
def get_even_numbers(numbers):
    return filter(lambda x: x % 2 == 0, numbers)

# get_even_numbers 함수 호출
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(get_even_numbers(numbers))
print(even_numbers)

 

명령형과 똑같은 결과물을 출력하는데 차이점은 

명령형은 변수를 선언하고 for문을 선언해서 결과물을 리턴합니다. 반면에 선언형은 

filter라는 함수를 통해 바로 넘겨주죠 이렇듯 명령형은 코드가 복잡해서 유지보수가 어렵지만 선언형은 간결하고 유지보수가 쉽다는 장점이 있습니다. 

 

Jetpack compose vs 기존 안드로이드 스튜디오(java) 

이번엔 jetpack compose랑 기존 안드로이드 스튜디오 java랑 비교를 해봅시다. 

간단하게 TextView에 hello라는 문자열을 표시하는 코드를 작성해 봅시다. 

 

먼저 자바입니다.

자바에서 hello를 출력할려면 먼저 activity_main.xml파일에 TextView를 입력해 줘야 됩니다.

 

 

그런 다음 자바파일로 다시 넘어가서 

 

 

 

이렇게 작성 줘야 됩니다. TextView 뿐만 아니라 다른 위젯들도 마찬가지입니다. 먼저 xml파일에서 해당 위젯 코드를 입력한 다음 id를 설정하고 또 그걸 자바파일로 넘어가서 findviewById로 가져온 다음 관련 메서드를 써서 설정을 해줘야 됩니다. 

 

이번엔 JetPack Compose 봅시다. 

끝입니다. 위 자바코드와 동일한 코드입니다. 

어때요 느낌왔죠?


Post

다음글 무직자 대출 알아보기 >