Android

Kotlin DSL (1) - Kotlin DSL이란 무엇인가?

c0de_h0ng 2022. 12. 13. 22:36
728x90

Android 개발에서는 Java, Kotlin을 사용하고 있다. 하지만 익숙함 속에서 하나를 놓친 것이 있을 것이다. 이는 바로 Gradle에서 사용하고 있는 Groovy라는 언어(?)를 사용한다. Groovy가 뭐야라고 할 수 있지만 Android Studio에서 프로젝트를 생성시에 만들어지는 build.gradle, settings.gradle이 Groovy로 작성되어 있다.

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion 31

    defaultConfig {
        applicationId "com.example.codehong"
        minSdkVersion 21
        targetSdkVersion 31

        versionCode 1
        versionName "1.0"
    }
    ...
 }

Kotlin, Java를 사용하다가 갑툭튀 Groovy이라 Gradle 작성 시에 불편했던 것을 알았는지 2021년부터 구글에서 Kotlin으로 작성할 수 있는 Kotlin DSL을 발표하였다.

Kotlin DS 이란?

DSL이란 Domain Specific Language의 약어로 특정 분야에 최적화된 프로그래밍 언어를 뜻한다. 이는 코틀린의 언어적인 특성으로 가독성을 높이면 간략한 코드를 사용하게 해주면서 Groovy보다는 친숙해 작성 속도 또한 빠르게 해준다.

Kotlin DSL를 사용하는 이유

앞서 설명했듯이 Kotlin DSL을 사용하는 이유는 코틀린의 특징인 가독성, 간략한 코드, 친숙함이며 아래와 같이 장점이 있다.

  • 컴파일 타임에 에러 확인
  • 코드 탐색
  • 자동 완성
  • 구문 강조
  • 소스코드와 동일한 언어의 사용
  • Firebase와 같이 서드파티 공식문서 업데이트가 늦음(깃허브 통해서 Firebase 개발자 남긴 댓글을 확인해야하는 번거로움…)
  • 재사용성

장점이 존재하면 단점이 존재하는 법…. 단점은 아래와 같다.

  • Cache Delete, Invalidation, Clean Build 시에는 Groovy 보다 빌드 속도가 느림(해당 단점은 2021년 기준이라 2022년에 테스트한 결과로서는 비슷함)
  • Java 8 이상에서 동작
  • 새로운 라이브러리 버전 Inspection 기능 미지원