본문 바로가기

코틀린 Kotlin

Kotlin (4) - 안드로이드의 코틀린 (Google IO)

최근에 Google의 행사 IO 가 시작되었습니다.

Google 에서 한해 마다 샌스란 시스코에서 개최하는 개발자 지향 레퍼런스 행사입니다. 

 

이번 년도도 역시 Google은 Android 이야기로 뜨거웠습니다.

이번에 발표된 State of Kotlin on Android 라는 영상을 발표했는데 해당 영상의 내용을 참고했습니다. 

과연 2021년에도 안드로이드의 코틀린 사랑이 뜨거운지 확인할 수 있습니다. 

https://youtu.be/etLUpHvhNZw

 

안드로이드 개발 리더인 제프리 반 고흐가 선 발표를 맡았고 그 뒤에 

Dev Rel 를 맡고 있는 분이 추가적으로 얘기를 이어갑니다.

 

1. Kotlin Momentum

Kotlin 은 4년전에 안드로이드 공식언어로 채택되었고 코틀린을 사랑하는 많은 개발자들에 의해서 안드로이드에서 많은 자리를 차지하게 되었습니다. 그리고 2021년 많은 안드로이드 개발자들이 얼마나 코틀린을 애용하는지 알 수 있는 지표가 공개됩니다.

- 구글 플레이 상위 1000개의 앱을 기준으로 통계를 내본 결과 1000개 앱중의 80%가 코틀린 코드로 작성

- 전문 안드로이드 개발자의 60%가 현재 코틀린을 사용

 

- 구글에서 만든 70개의 앱들이 코틀린을 사용함 

- Google Voice, Nest, Google Shopping 등등 큰 앱에서 코틀린을 사용 

그렇다면 어째서 코틀린은 이토록 사랑 받게 된것 일까요?

 

크게 4가지 요인으로 정리를 했습니다. 

1) Expressiveness -> 간결함, 속성,확장 방법 
2) Safety -> null 허용 체크, 문자열 템플릿을 통한 안정성 강화 
3) interoperablility -> 기존 코드와의 상호 운용성
4) Structured concurrency -> 구조적 동시성을 쉽게 지원 

 

이 4가지가 코틀린이 사랑 받는 큰 이유입니다. 특히나 Safety의 경우 Google Play에서 직접적으로 효과를 확인 할 수 있었다고 합니다. 바로 전체적으로 Kotlin을 도입한 앱에서 앱 사용자가 충돌을 경험한 사용자 수가 이전에 비해 10% 절감했다는 걸 확인했다고 합니다.

(이 얼마나 무시무시 함인가.....)

 

그리고 구글에서 코틀린을 얼마나 지원하고 누구든지 쉽게 접근할 수 있도록 도와주는지 아래 링크나 여러가지 이벤트를 보면 확인하실 수 있습니다.

 

https://developer.android.com/kotlin?hl=ko&gclid=CjwKCAjwqcKFBhAhEiwAfEr7zSyAOWmDpN5QJbWlREncMMy5RVqMd6tcC8qSAw0c64g_hun1YTkLdxoC9jYQAvD_BwE&gclsrc=aw.ds 

 

Android 개발자  |  Android Developers

Kotlin으로 Android 앱을 작성할 수 있습니다. Kotlin은 표현력이 뛰어나고 간결하며 강력합니다. 가장 좋은 점은 자바 프로그래밍 언어 및 기존 Android 런타임과 상호 운용이 가능하다는 점입니다.

developer.android.com

 

2. Tools Updates

개인적으로 가장 마음에 들었던 두번째 주제였습니다.

가장 첫번째로 언급한 것은 Gradle에서 Kotlin이 사용이 가능하다는 점이었습니다. 그래서 그레들리를 코틀린 문법으로 쉽게 쓸수 있다고 강조됩니다.

(이전부터 지원을 해줬지만 한번더 언급했네요)

그외 간단한 요약본은

- kotlin과 gradle의 상호작용이 대폭 개선 예정 

- KAPT는 안정화되고 점진적으로 바뀜

- KSP는 (kotlin Symbol processing_ 빌드 타임을 줄여줌 

 

구글 안드로이드팀과 젯브레인스과 긴밀한 협력으로 ide성능 문제를 계속 찾는중이라고 합니다. 

Kotlin 1.5는 대규모 실제 프로젝트에 영향을 미치는 다수 문제를 해결이 가능했고

자동 가져오기 속도는 20배로 빨라졌다고 하네요 

 

그리고 

google 과 젯브레인스는 컴파일러를 다시 제작중 이라고 합니다. 

 

 

컴파일러는 2가지로 나뉩니다. 

1) 프론트엔드 

- 프론트엔드는 실제 문법이 맞는지 확인하는 등등 컴파일 오류를 검토합니다. 

- 프론트엔드에서 검수를 거치고 백엔드로 이동합니다

 

2) 백엔드 

- 백엔드 차례가 오면 코드를 생성합니다.

 

크게 2가지 경우로 나뉘는데 두개 다 더 좋게 개발중이라고 하네요

 우선 Kotlin 1.5 에서 새롭게 출시된 JVM IR로 백엔드를 개발중이라고 합니다. 

이 새로운 백엔드는 차세대 UI 빌드 툴인 Jackpack Compose를 언어확장하도록 지원 할겁니다.

 

그리고 

새로운 백엔드를 사용하면 JVM,JS,네이티브의 컴파일러 프론트엔드를 통합할 수 있습니다.

현재 JetBrains와 Google은 새로운 통합 프론트 엔드를 개발중이라고 합니다. 

새로운 프런트엔드 컴파일러는 컴파일 속도를 2배를 향상 시킬것이고 ide의 성능을 극적으로 개선된다고 예상합니다.

 

3. Libraries and APIs 

Android에서 처음 Kotlin 지원을 발표 했을 때 Android KTX를 시작했었습니다. 초창기에 라이브러리는 하나였고 Kotlin 확장 프로그램이 몇개가 있었을 뿐이었습니다.

하지만 현재 KTX는 다양한 Jetpack Api를 지원하는 수십 개의 아티팩트로 늘어났습니다. 이젠 Kotlin으로 새로운 라이브러리를 만드는중인데 바로 Kotlin 컴파일러 플러그인 기반으로 하는 Compose를 개발하고 있습니다. Compose의 정식버전이 얼른 나왔으면 좋겠습니다. 

 

그리고 안드로이드에서 StateFlow 와 SharedFlow 에 대해 교육자료나 향후 API에 잘 통합할 방법을 찾고 있다고 합니다.
SteteFlow이야기가 나오고 이어서 LiveData에 대한 언급이 나오는데 LiveData는 ui를 편리하게 상태업데이트를 확인하고 자바사용자도 쉽게 하는편입니다. 

 


Kotlin에서 StateFlow가 LiveData와 똑같은 행위를 할 수 있고 연산자에서 중단 함수 기능도 지원해준다고 하네요 

그리고 안드로이드 스튜디오 최신 버전에서 바인딩에서 StateFlow의 직접관찰을 지원한다고 합니다.

-데이터 바인딩 없이 UI FLOW를 관찰하고 싶다면 Lifecycler KTX 라이브러리를 사용하면됨

(LiveData를 대신해서 충분히 사용할 수 있는 상황이 다가오는거 같습니다. )

그외 정리 -

-launchWhenStarted 함수는 독특한 정지 동작이 있어서 UI가 활성상태가 아닐떄 리소스가 낭비되는 경우가 있음 
-지금은 UI에서 안전하게 FLOW를 관찰할 수 있는 새로운 함수 세트를 추가중 

-코루틴 디버깅 라이브러리를 android에서 출시 될 예정임 

-예정된 익스텐션 디프리케이티드가 다가옴 대신 뷰바인딩을 권장함 

 

 

4. Modern language features 

너무 Kotlin 이야기만 나와서 Java 사용자는 마음이 아팠을 법(?)한데 다행히도 Java에 대한 새로인 지원도 추가가 된다고 합니다. 대표적으로 Kotlin의 Data Class와 비슷한 기능할 Java의 Records를 지원해준다고 하네요

그리고 마지막으로...

-ART 안드로이드 12부터 업데이트 가능한 메인라인 모듈이 됨 
-지원되는 언어를 업데이트 할 수 있음
-향후 Android 기기에 직접 새 API를 추가 가능 

이런식으로 추가 이야기가 나왔었습니다. 

 

코틀린 빌드타임이 빨리지기를 기대가 되네요 코틀린의 효율을 더 늘릴 Flow에 대한 지원도 준비중인것 같고,, 무엇보다 jackpack Compose는 잊을만하면 이야기가 나오는 것을 보니 compose 3년 제작기간 동안 칼(?)을 갈아온게 아닐까 생각이 듭니다.

(실은 예전부터 Compose 나오길 기다렸습니다.. xml을 좋아하진 않아서..) 

 

이상 오늘도 활기찬 Kotlin 이야기 였습니다.