[요약] What's new in Kotlin for Android (Google I/O '23)

[요약] What's new in Kotlin for Android (Google I/O '23)

May 24, 2023. | By: pluulove


State of Kotlin

  • Kotlin은 2017년부터 Android의 공식적으로 지원되는 언어였습니다.
  • 최근 4년 동안 Android 개발에서 Kotlin이 우선시 되어 라이브러리/문서/컨텐츠 모두 Kotlin을 위해 주로 설계되었습니다.

  • 간결성, 타입 안정성, 풍부한 언어의 기능으로 Kotlin을 좋아합니다.
  • Play Store에서 상위 1,000개 앱 중 95% 이상이 Kotlin을 사용하고 있습니다.
  • Kotlin을 사용하는 앱의 55%에서 Coroutine이 사용됩니다.

  • 최신 UI Toolkit인 Jetpack Compose는 Kotlin으로 만들어졌습니다.
  • Coroutine, Lambda, Extension과 같은 다양한 언어 기능을 활용하니다.

Kotlin 2.0 compiler

새로운 Kotlin Compiler K2는 Kotlin 2.0의 기본 컴파일러가 될 것입니다.

  • Kotlin 2.0의 컴파일 속도는 현재 Kotlin 컴파일러보다 최대 2배 빠릅니다.

  • 새로운 컴파일러 플러그인을 사용하기 위해서는 지원을 추가해야 합니다.
  • Kotlin 1.9 릴리즈 시점에 Compose 및 KSP에 새로운 컴파일러를 실험적으로 사용할 수 있도록 노력하고 있습니다.
  • 내부적으로 Android Studio에서 code intelligence, refactoring 등에서 Kotlin Compiler를 사용합니다.

  • 최신 Kotlin 버전에서 language version을 2.0으로 설정하면 새 컴파일러를 사용할 수 있습니다.

Kotlin DSL as the default for Gradle builds

Gradle build 정의에도 Kotlin을 사용할 수 있습니다.

  • Android Studio Giraffe부터 Kotlin DSL을 기본으로 사용하고 있습니다.

  • New Project Wizard에서 build script도 Kotlin/Groovy 모두 사용할 수 있습니다

  • Kotlin build script에서는 Groovy보다 더 정확한 Code Hint를 사용합니다.
  • Syntax 에러도 코드 수정 시에 확인할 수 있습니다.
  • 프로젝트의 종속성을 Gradle version catalogs를 실험적인 옵션으로 추가했습니다.

KSP

  • Kotlin 코드 생성은 Java 프로그래밍 언어용으로 작성된 Annotation Processor를 사용할 수 있도록 하는 Kotlin Annotation Processing 도구인 KAPT로 시작되었습니다.
  • KAPT
    • Kotlin 파일에서 Java Stub을 생성하는 방식으로 작동합니다.
    • 이 스텁 생성은 시간이 오래 걸리는 작업이며 Annotation 처리를 사용하는 프로젝트의 빌드 속도에 영향을 미칩니다.

KSP

  • Kotlin 코드를 직접 분석하며 Stub 생성을 하지 않으므로 Clean Build에서 최대 2배 더 빠릅니다.
  • Kotlin의 언어를 더 잘 이해합니다.
  • Java에 의존하지 않으므로 멀티플랫폼 프로젝트를 지원합니다.

  • 먼저 root의 build.gradle 파일에 KSP 플러그인을 추가합니다. 사용하는 버전이 프로젝트의 Kotlin 버전과 일치해야 합니다.
  • Module에 KSP 플러그인을 적용하고 KAPT로 선언된 종속성을 KSP를 대신 사용하도록 변경합니다.

  • KSP지원은 각 라이브러리의 몫이므로 모든 KAPT를 KSP로 마이그레이션하지 못할 수도 있습니다.
  • KSP 지원 중 : Room, Glide, Moshi 등
  • Dagger/Hilt의 KSP 지원은 현재 진행 중입니다.

Kotlin Multiplatform

  • Kotlin 멀티플랫폼을 사용하면 Kotlin 코드로 Android와 iOS 플랫폼에 맞게 컴파일하여 비즈니스 로직을 공유할 수 있습니다.
  • JetBrain에서 개발 중이며 현재 베타 버전입니다.
  • Google Workspace에서도 이 기술을 채택하여 실험하고 있습니다.

Jetpack 라이브러리의 일부를 멀티 플랫폼에서 사용할 수 있습니다.

  • Annotations
  • Collections
  • DataStore

  • Multiplatform용 DataStore가 동작하는 사례는 샘플 앱에서 확인할 수 있습니다.

Kotlin Multiplatform Samples : https://goo.gle/kmm-samples

comments powered by Disqus

Currnte Pages Tags

Android

About

Pluu, Android Developer Blog Site

이전 블로그 링크 :네이버 블로그

Using Theme : SOLID SOLID Github

Social Links