출시·고도화 중
Kotlin 안내서 · 1/6
Kotlin은 JetBrains가 만든 정적 타입 언어입니다. 가장 흔한 쓰임새는 JVM으로, Java와 같은 바이트코드로 컴파일되므로 기존 Java 라이브러리를 그대로 가져다 쓸 수 있습니다. Android 앱 개발의 기본 언어이기도 하며, 서버 개발과 여러 플랫폼이 코드를 나누어 쓰는 멀티플랫폼 개발에도 쓰입니다. 이 장에서는 코드를 실행해 보는 세 가지 길, 곧 브라우저의 Kotlin Playground, 명령줄 컴파일러, 그리고 IntelliJ IDEA와 Gradle 프로젝트를 차례로 살펴봅니다.
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 안에 함께 넣으라는 옵션입니다. 이 옵션이 없으면 실행할 때 표준 라이브러리를 클래스패스에 따로 지정해야 합니다. 명령줄 컴파일러는 동작 원리를 이해하는 데 좋지만, 실제 프로젝트에서는 빌드 도구를 씁니다.
Kotlin을 만든 곳이 JetBrains인 만큼 IntelliJ IDEA의 지원이 가장 충실하며, 무료로 쓸 수 있는 판에도 Kotlin 지원이 기본으로 들어 있습니다. Android 앱을 만든다면 IntelliJ 기반의 Android Studio를 씁니다. 새 프로젝트는 다음 순서로 만듭니다.
build.gradle.kts 파일로 만들어집니다.src/main/kotlin 아래에 예제 파일이 생깁니다.main 함수 옆 여백의 실행 아이콘을 누르면 바로 실행됩니다.IDE 없이 명령줄에서 Gradle로 프로젝트를 만들 수도 있습니다. gradle init은 프로젝트 종류를 대화식으로 묻는데, 옵션으로 미리 지정할 수도 있습니다.
mkdir hello-kotlin && cd hello-kotlin
gradle init --type kotlin-application --dsl kotlin
./gradlew rungradlew(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(버전 카탈로그)에 모아 둡니다.
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()으로 써도 됩니다.
kotlinc는 파일 단위 실험에, Gradle은 실제 프로젝트에 씁니다.build.gradle.kts)로 시작하고 ./gradlew run으로 실행합니다.main 함수가 시작점이며, JVM에서는 "파일 이름 + Kt" 클래스로 컴파일됩니다.
댓글 0개
로그인 · 로그인하면 댓글을 남길 수 있습니다.
첫 댓글을 남겨 보세요.