.kts 파일은 Kotlin Script 파일의 확장자입니다. 일반적인 Kotlin 파일(.kt)과 구별되는 주요 특징과 용도를 설명해 드리겠습니다.
핵심 개념
일반 Kotlin(.kt)이 정형화된 애플리케이션을 개발하는 데 사용된다면, Kotlin Script(.kts)는 스크립팅, 자동화, 빠른 프로토타이핑에 특화된 것입니다.
일반 Kotlin (.kt) vs Kotlin Script (.kts)
| 특징 | 일반 Kotlin (.kt) |
Kotlin Script (.kts) |
|---|---|---|
| 구조 | main 함수, 클래스 등 정형화된 구조 필요 |
최상위 수준의 실행 코드만으로도 가능 |
| 컴파일 | 먼저 컴파일(.class) 후 실행 |
스크립트 엔진이 즉시 실행 (또는 내부적으로 컴파일) |
| 목적 | 프로덕션 애플리케이션, 라이브러리 | 빌드 스크립트(Gradle KTS), 구성 파일, 유틸리티 스크립트 |
| 실행 | kotlinc로 컴파일 후 java로 실행 |
kotlinc 또는 kotlin 명령어로 직접 실행 |
Kotlin Script (.kts)의 주요 특징
- 간결한 문법
main함수 없이 바로 코드를 작성할 수 있습니다.// hello.kts println("Hello, Kotlin Script!") val name = "World" println("Hello, $name!")
- 파일 I/O 및 외부 프로세스 실행 용이
- 스크립팅에 유용한 기능들을 더 적은 코드로 사용 가능합니다.
// fileops.kts val lines = java.io.File("data.txt").readLines() lines.forEach { println(it) }
"ls -al".runCommand() - 스크립팅에 유용한 기능들을 더 적은 코드로 사용 가능합니다.
- 의존성 선언 가능
- 스크립트 내부에서 직접 외부 라이브러리를 가져와 사용할 수 있습니다.
@file:DependsOn("com.google.code.gson:gson:2.8.9")
- 스크립트 내부에서 직접 외부 라이브러리를 가져와 사용할 수 있습니다.
- val gson = Gson()
// ... Gson 라이브러리 사용
실행 방법
- Kotlin Compiler(
kotlinc) 사용 kotlinc -script my_script.kts- Kotlin Runner(
kotlin) 사용 # .kts 파일을 직접 실행 kotlin my_script.kts
가장 대표적인 사용 예시: Gradle Kotlin DSL (.gradle.kts)
Kotlin Script의 가장 성공적인 적용 사례는 Gradle 빌드 시스템입니다. 기존 Groovy로 작성되던 Gradle 빌드 스크립트(build.gradle)를 Kotlin으로 대체한 것이 build.gradle.kts 파일입니다.
Groovy (build.gradle):
plugins {
id 'java'
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
}
Kotlin DSL (build.gradle.kts):
plugins {
java
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
}
이를 통해 타입 안전성, 더 나은 IDE 지원(자동 완성, 탐색, 리팩토링), 디버깅 용이성 등의 이점을 얻을 수 있습니다.
다른 사용 예시
- 빠른 데이터 처리 스크립트: CSV/JSON 파일을 읽어 간단히 가공하고 결과 출력.
- 배치 작업 자동화: 정기적으로 수행해야 하는 파일 정리, 백업, 리포트 생성 등.
- 구성 스크립트: 환경에 따라 동적으로 설정 값을 생성.
결론
.kts는 Kotlin의 강력한 언어 기능을 스크립팅이라는 가벼운 목적으로 활용할 수 있게 해주는 파일 형식입니다. 복잡한 애플리케이션 개발보다는 간단한 유틸리티, 빌드/배포 자동화, 프로토타이핑 등에서 Python이나 Bash 스크립트를 대체하거나 보완하는 역할을 합니다. 특히 Gradle Kotlin DSL의 등장으로 그 중요성과实用性이 매우 커졌습니다.
'프로그래머로의 여정' 카테고리의 다른 글
| 소스 코드 빌드(Build)란 (0) | 2025.10.19 |
|---|---|
| Android 프레임워크 컴포즈(Compose) (1) | 2025.10.18 |
| props in React (0) | 2025.09.05 |
| props.children (0) | 2025.09.05 |
| [코드분석] 코드에서 key의 의미 (0) | 2025.09.04 |