Kotlin-DSL로 build.gradle 변경하기

염준우·2022년 9월 22일
3
post-thumbnail

DSL 이란?

DSL 이란 도메인 특화 언어의 약어로, 특정한 도메인에서만 사용 가능한 언어를 이야기 한다. 이는 자바와 같은 범용 언어(GPL)가 여러 도메인에 광범위하게 적용되거나 사용되는 것과는 대조적이다.

DSL 은 선언형 코드를 작성하는데 도움을 주어, 보일러플레이트 코드를 줄이는데 도움을 준다. 그래서 DSL 로 코드를 작성하게 되면 읽기가 쉬워진다.

DSL 예제

Web Development 를 위한 HTML
build tools 작성을 위한 Gradle
데이터 관리를 위한 SQL
마크업 관련 언어 관리를 위한 XML
등이 있다.

Gradle

Gradle 은 굉장히 강한 빌드용 도구이다. Gradle 은 빌드 Script 를 설명하기 위해 DSL을 제공한다. ( Groovy 와 Kotlin DSL ) .

여기서 만약 Kotlin 을 사용하여 개발하는 사람이라면, Groovy 를 사용하는 것보다 Kotlin DSL 을 사용하는게 더 쉽고 유연하게 빌드 스크립트를 작성할 수 있을 것이다.

Kotlin DSL

Kotlin DSL 은 Kotlin 언어를 사용하도록 설정되어 있다. 그래서 문법같은 경우도 Kotlin 을 개발할 때 사용하는것과 동일하게 사용할 수 있다. 또한 Android Studio 와 전체적으로 호환된다.

만약 Groovy 대신 Kotlin DSL을 사용하게 된다면, 다음과 같은 장점들이 있다.

읽기 편하다

Kotlin 문법과 비슷해서 쉽게 적응할 수 있다.'

자동완성과 코드 추천이 된다

Compile-time time error
Dependency, Artifact configuration, sourceSets 등등의 접근자들의 Type-Safe 모델을 제공한다.
그러나, 코드 클린, buildSrc Directory related Change 같은 경우는 Groovy 보다는 느릴 수 있다.

Groovy vs Kotlin DSL

Coding Parameter

Kotlin 과 Groovy 중 Coding Parameter 관련 퍼포먼스로 선택을 해야 한다면, 둘다 우열을 가릴 수 없을 정도로 좋은 Coding Parameter 를 가지고 있다.

Kotlin = Groovy

Salient Features

Kotlin 과 Groovy 모두 안드로이드 애플리케이션을 제작하는데 많이 사용되고 있다. Kotlin 과 Groovy 모두 JVM 을 지원하고 있고, JVM 은 안드로이드 생태계에서 가장 많은 기능들을 제공한다.

Java 에서 NPE 관련해서 지원이 가능하다는 것은, Kotlin 쪽에서 점수를 가져갈 수 있다. 그러나, Groovy 는 생산성을 높이는 광범위한 프레임워크를 지원하게 된다.

멀티메소드나, 메타프로그래밍을 통해 강력한 시스템을 활용할 수 있다. 메타프로그래밍 요소는 Kotlin 대 Groovy 요소에 영항을 끼치므로, 특정 도메인의 컨텍스트에서 서로 다른 코드를 사용할 수 있게 된다.

NPE → Kotlin

Framework → Groovy

Learning Curve

Kotlin 과 Groovy 모두 굉장히 낮은 러닝커브를 가지고 있다. Kotlin 이 16년도에 소개되었을 때, 표준 Java 컴파일러의 대안으로 명칭되었지만, 현재는 Google 에서 지정한 Official Language 가 되었다.

짧게 얘기하자면, 자바를 사용해본적이 있다면 Kotlin 를 사용해도, Groovy 를 사용해도 아무런 문제가 되지 않는다.

Kotlin = Groovy

Ecosystem

Software Ecosystem 은 소프트웨어 프로젝트를 실행할 수 있게 만들고, 언어, 구문, 스크립팅 및 오픈소스 커뮤니티를 포함하는 생산에서 동기화하는 모든 것을 나타낸다.

Kotlin 이라는 언어가 가지고 있는 라이브러리와, 개발 로직들은 개발자들에게 큰 영향을 남깁니다. 그러나, Groovy는 데이터 클래스와, 정적 코드 소모를 갖추고 있어, 정말 좋은 동적 언어가 될 수 있다.

Groovy 는 비동기 코드, 동시성, 병렬성을 특징으로 가지고 있지만, 코틀린은 라이브러리와 테스트 프레임워크를 통해 풍부핱 Ecosystem 을 제공할 수 있다.

코드 기능 : Groovy

코드의 범용성 : Kotlin

Performance Time

Kotlin 과 Groovy 모두 Java 기반 코드이다. 그러나, Kotlin 쪽으로 제공하는 코드 설정은 자바에 비해 많이 제한적일 수밖에 없다. 반대로, 두 프로그래밍의 기술적인 반응은 굉장히 시의적절하다.

Groovy 는 Java 와 같은 문법을 제공하지만, Kotlin 의 코드 수는 훨씬 줄어들게 된다. Kotlin을 선택하는 이유이다 ( 빠르고, 호환성 좋고, 현대적이고, 안전하다 ).

문제는 Kotlin 의 성능은 Java 와 비슷하지만, groovy 는 Kotlin 뿐만 아니라 Java보다도 다소 느릴 수 있다.

Kotlin > Groovy

그래서 다음 세션에서는 Groovy 로 되어 있던 Build.gradle 을 Kotlin 으로 바꾸는 방법을 말해보려고 한다.

profile
항상 새로움을 추구하는 안드로이드 개발자입니다! 🏆

0개의 댓글