카테고리 없음

[시청 후기] State of Kotlin on Android | Session

0. 서론

 안드로이드와 관련되어 코틀린의 변화에 대해서 설명해주는 발표영상이었다. 생각보다 많은 내용을 짧은 시간 동안에 전달을 해줬다. 이전에 Desgaring을 통해서 각종 API를 사용할 것에 대해서는 알고 있었지만, 안드로이드12에서는 새로운 JAVA API가 추가 되고, 기존에 잘 사용하고 있던 LiveData가 코틀린에서는 필요가 없다는 것을 듣고, 공부를 더 많이 해야겠다는 생각이 들었다.

 그리고, 코틀린 기반으로 개발 생태계가 만들어지고 있으며, IDE가 더 빠른 속도로 사용될 수 있도록 코틀린이 잘 사용되길 기대한다.

https://www.youtube.com/watch?v=etLUpHvhNZw 

1. 코틀린

Android와 관련해 Kotlin에 대한 새로운 소식을 전달합니다.

코틀린은 안정적이고, 오픈 소스이며 많이 사용하고 있다.

Top 1000등 안의 앱 80프로, 안드로이드 개발자가 60프로가 코틀린을 사용하고 있다.

구글 앱도 코틀린으로 마이그레이션 진행하고 있다. 앱 및 서버에 코틀린 코드를 도입하고 있고, 이는 점차 증가하는 추세이다.

코틀린은 큰 프로덕션에서 사용되고 있다.

2. 코틀린의 장점

표현력 - 속성 및 확장에 용이하다.

안정성 - 널 허용

상호운용성 & 구조적 동시성 - 코루틴을 통해서 기존 코드와 함께 어울리도록 제공하고 있다.

 

구글에서도 코틀린을 사용을 통해서 10% 크래시를 감소시킨 효과를 얻었다.

 3. 코틀린 스크립트

 Groovy를 따로 배울 필요가 없고, 코틀린 코드를 이용해서 Kotlin DSL을 작성할 수 있다. 얼마 전, Gradle관련 developer내용이 추가 되었다. KSP는 Kotlin 에코시스템을 1급 기능으로 만드는 거이다. Room을 사용하는 것에 있어 KAPT와 비교했을 때, KSP에서 2배 빨라졌다. 기존 주석프로세서를 KSP로 변경하는 것에 있어서 개발자의 도움이 필요하다.

 KSP와 같은 것을 통해서 빌드 시간이 단축될 것이다.

더보기

 여기에서 Kapt는 Annotation Processing Tool이라고 한다. 코틀린은 자체적으로 어노테이션 프로세싱 시스템을 갖추고 있지 않은데, 이는 코틀린의 컴파일 속도에 지대한 영향을 끼쳤다. 그 이유는 Java Stubs를 생성하기 때문이다.

 KSP는 기존에 사용하는 kapt를 대체할 수 있는 APT가 될 것이고, KSP는 코틀린 상에서 적합하게 어노테이션을 처리해줄 것이다. 위에서 말한 것과 같이 Room에서 2배이상 빠르게 컴파일 되는 결과를 기대할 수 있을 것이다.

 아래의 developer 블로그를 통해서 자세한 내용을 확인하길 바랍니다.

 

https://developers-kr.googleblog.com/2021/02/announcing-kotlin-symbol-processing-ksp.html

 

KSP(Kotlin Symbol Processing) 알파를 소개합니다

작성자: Ting-Yuan Huang(소프트웨어 엔지니어), David Winer(제품 관리자) 이 글의 원문은 여기서 확인 가능하며, 블로그 리뷰에는 김태호(Google)님이 참여해주셨습니다.  오늘 드디어 Kotlin으로 가벼운

developers-kr.googleblog.com

4. IDE 개선

IDE 성능도 중요하다. Jetbrain과 함께 IDE를 개선하고 있고, 최신 IDE에서는 더 빠른 속도를 체감할 수 있을 것이다.

빌드 속도와 IDE 반응성이 아직도 큰 우려 사항으로 남아있고, 구글과 Jetbrain은 컴파일러를 다시 만들고 있다.

컴파일러는 2가지로 나뉘어진다. 프론트엔드는 코드가 맞는 지 확인하고, 백엔드는 코드를 생서하는 역할을 한다. 

새로운 백엔드를 사용하게 되면 JVM, JS, 네이티브의 컴파일러 프론트엔드를 통합할 수 있다. 그리고, 새로운 프론트엔드는 컴파일 속도를 2배 향상하고, IDE 성능을 극적으로 개선할 것이다.

5. Libraries

 Android KTX는 다양한 Jetpack API를 지원하는 수십 개의 아티팩트로 늘어났다.

Paging, DataStore과 같은 새로운 라이브러리는 코틀린 전용으로도 만들어졌다. 코틀린을 전용으로 새로운 라이브러리를 만들고 있고, 차세대 UI키트인 컴포즈와 같은 라이브러리를 개발하고 있다. 

 구글팀에서도 코틀린으로 Map, Places, Firebase 등의 SDK를 제공받다보니, 코틀린 개발자들이 안정성있게 앱을 개발하게 되었다.
서버에서도 gRPC, Protobuf와 같은 오픈소스 라이브러리를 만들고 있다.

6. 코루틴

 코루틴은 Android에서 코틀린으로 개발 시에, 비동기작업의 권장 방식으로 지정되엇다.

앞에 말한 다양한 라이브러리는 코루틴의 Flow가 들어가있다. 이를 학습하는 것을 권장한다. 이에 대한 사례로
SharedFlow를 사용할 것이다.

 이에 대한 답변으로, LiveData는 UI를 편리하게 상태 업데이트를 관차할 수 있고, 자바 개발자들 또한 이를 사용하고 있다.

코틀린에서는 StateFlow가 이와 같은 똑같은 기능과 연산자에서 중단 함수의 기능까지 지원한다.
 데이터바인딩 때문에 LiveData를 사용하더라도, 최신 버전의 AndroidStudio에서는 StateFlow를 지원할 것이다.

7. LifecycleScope

 데이터 바인딩 없이 UI의 흐름을 관찰하고 싶다면, AndroidX Lifecycle KTX를 사용하면 된다.

launchWhenStarted등의 기존 함수는 독특한 정지 동작이 있어서, UI활성 상태가 아니면 리소스를 낭비했는데, 지금은 UI에서 안전하게 해당 흐름을 관찰할 수 있는 새로운 함수를 추가하고 있다. 이 API에 예약된 작업을 취소할 수 있고, 시작할 수도 있다.

 Lifcycle KTX를 기대하달라.

8. 코루틴의 장점

 앱에서 코루틴이 점차 사용됨에 따라서 개발자는 앱을 디버깅하고, 명확히하는 능력이 중요해졌다. 그래서 인텔리제이와 함께 코루틴 디버거를 만들게 되었고, 추후에 안드로이드 스튜디오에 반영할 예정이다. 활성화된 디스패치와 코루틴을 볼 수 있게 한다.

9. Kotlin Android Extensiosns deprecation

 Kotlin Android Extensions 플러그인을 ViewBinding을 사용하는 것을 권장한다.

 또한, kotlin-parcelize의 별도의 플러그인을 import만 하면 되도록 수정하였다. 

10. New language features and APIs

 건강한 개발자 에코시스템 덕에 코틀린을 많이 사용하고 있다. 코틀린은 발전 속도가 빠르고, 개발자가 원하는 최신 기능이 추가된다.

Java언어 또한 Kotlin과 유사하게 변화하고 있다. Android 12에서부터는 새로운 Java 언어 API를 제공할 예정이다. 오래된 기능에서도 desugaring을 통해서 제공할 것이다.

11. ART 변화

 Android12부터 업데이트 가능한 메인라인 모듈이 됩니다. 즉, 지원되는 언어 기능을 업데이트 할 수 있고, 안드로이드 기기에 직접 API를 반영할 수 있다. 개발자 여러분은 지금 따로 무엇을 준비하지 않아도 된다.향후 발표에서 SDK에 어떤 영향을 끼치는 지 공개하도록 하겠다.