Kotlin은 JetBrains가 만든 정적 타입 언어입니다. 가장 흔한 쓰임새는 JVM으로, Java와 같은 바이트코드로 컴파일되므로 기존 Java 라이브러리를 그대로 가져다 쓸 수 있습니다. Android 앱 개발의 기본 언어이기도 하며, 서버 개발과 여러 플랫폼이 코드를 나누어 쓰는 멀티플랫폼 개발에도 쓰입니다. 이 장에서는 코드를 실행해 보는 세 가지 길, 곧 브라우저의 Kotlin Playground, 명령줄 컴파일러, 그리고 IntelliJ IDEA와 Gradle 프로젝트를 차례로 살펴봅니다.
설치 없이 써 보기: Kotlin Playground
Kotlin Playground는 브라우저에서 바로 Kotlin 코드를 실행하는 공식 웹 편집기입니다. 문법을 익히는 동안에는 이것만으로도 충분합니다. 컴파일 대상(JVM, JS, Wasm 등)과 컴파일러 버전을 고를 수 있고, 작성한 코드를 링크로 공유할 수도 있습니다.
fun main() {
val name = "Kotlin"
println("Hello, $name!")
}
fun main()이 프로그램의 시작점입니다. Java와 달리 클래스로 감쌀 필요가 없고, 줄 끝에 세미콜론도 쓰지 않습니다. println은 표준 라이브러리 함수라서 따로 import 하지 않아도 됩니다.
명령줄 컴파일러
JDK가 설치되어 있다면 명령줄 컴파일러 kotlinc로 파일 하나를 컴파일해 실행할 수 있습니다. macOS나 Linux에서는 SDKMAN!이나 Homebrew로 설치하는 것이 간편하고, Windows에서는 Kotlin GitHub 저장소의 릴리스 페이지에서 압축 파일을 받아 bin 폴더를 PATH에 추가합니다.
# 설치(둘 중 하나)
sdk install kotlin
brew install kotlin
# 컴파일하고 실행
kotlinc hello.kt -include-runtime -d hello.jar
java -jar hello.jar
-include-runtime은 Kotlin 표준 라이브러리를 JAR 안에 함께 넣으라는 옵션입니다. 이 옵션이 없으면 실행할 때 표준 라이브러리를 클래스패스에 따로 지정해야 합니다. 명령줄 컴파일러는 동작 원리를 이해하는 데 좋지만, 실제 프로젝트에서는 빌드 도구를 씁니다.
IntelliJ IDEA
Kotlin을 만든 곳이 JetBrains인 만큼 IntelliJ IDEA의 지원이 가장 충실하며, 무료로 쓸 수 있는 판에도 Kotlin 지원이 기본으로 들어 있습니다. Android 앱을 만든다면 IntelliJ 기반의 Android Studio를 씁니다. 새 프로젝트는 다음 순서로 만듭니다.
- New Project 화면에서 언어로 Kotlin, 빌드 시스템으로 Gradle을 고릅니다.
- Gradle DSL은 Kotlin을 선택합니다. 그러면 빌드 스크립트가
build.gradle.kts 파일로 만들어집니다. - 사용할 JDK를 고르고 Create를 누르면
src/main/kotlin 아래에 예제 파일이 생깁니다. main 함수 옆 여백의 실행 아이콘을 누르면 바로 실행됩니다.
Gradle 프로젝트와 Kotlin DSL
IDE 없이 명령줄에서 Gradle로 프로젝트를 만들 수도 있습니다. gradle init은 프로젝트 종류를 대화식으로 묻는데, 옵션으로 미리 지정할 수도 있습니다.
mkdir hello-kotlin && cd hello-kotlin
gradle init --type kotlin-application --dsl kotlin
./gradlew run
gradlew(Windows에서는 gradlew.bat)는 Gradle Wrapper입니다. 프로젝트에 정해 둔 Gradle 버전을 자동으로 내려받아 쓰므로, 팀원 모두가 같은 버전으로 빌드하게 됩니다. 만들어진 빌드 스크립트는 대략 다음과 같습니다.
// app/build.gradle.kts
plugins {
alias(libs.plugins.kotlin.jvm)
application
}
repositories {
mavenCentral()
}
dependencies {
testImplementation(kotlin("test"))
}
application {
mainClass.set("org.example.AppKt")
}
Kotlin DSL은 빌드 스크립트를 Kotlin 문법으로 쓰는 방식입니다. Groovy로 쓰는 build.gradle과 하는 일은 같지만, IDE의 자동 완성과 타입 검사를 받을 수 있습니다. kotlin.jvm 플러그인이 Kotlin 소스를 컴파일하고, application 플러그인이 run 작업을 추가합니다. 플러그인과 라이브러리의 버전은 gradle/libs.versions.toml(버전 카탈로그)에 모아 둡니다.
main 함수와 파일 이름
mainClass에 적힌 AppKt는 오타가 아닙니다. Kotlin은 파일 최상위에 선언한 함수를 JVM에서 "파일 이름 + Kt"라는 클래스의 정적 메서드로 컴파일합니다. 그래서 org.example 패키지의 App.kt 안에 있는 main은 org.example.AppKt 클래스의 main이 됩니다.
// app/src/main/kotlin/org/example/App.kt
package org.example
fun main(args: Array<String>) {
if (args.isEmpty()) {
println("인자가 없습니다")
} else {
println("첫 번째 인자: ${args[0]}")
}
}
명령줄 인자를 넘겨 실행하려면 ./gradlew run --args="hello world"처럼 씁니다. 인자가 필요 없다면 fun main()으로 써도 됩니다.
정리
- Kotlin Playground로 설치 없이 바로 문법을 연습할 수 있습니다.
kotlinc는 파일 단위 실험에, Gradle은 실제 프로젝트에 씁니다.- 새 프로젝트는 Gradle과 Kotlin DSL(
build.gradle.kts)로 시작하고 ./gradlew run으로 실행합니다. - 최상위
main 함수가 시작점이며, JVM에서는 "파일 이름 + Kt" 클래스로 컴파일됩니다.
댓글 0개
로그인 · 로그인하면 댓글을 남길 수 있습니다.