PHpullh

KOTLIN · 심층 가이드

Kotlin Hello World 완전 정리

Kotlin 첫 실행부터 Gradle Kotlin DSL 빌드 스크립트와 멀티모듈 구성, IntelliJ 설정까지 개발 환경 전체를 5편으로 갖춥니다.

주제 5개 · 예제 코드 포함 · 최종 수정 2026-08-30 · 작성 pullh 편집팀

Kotlin의 첫 코드는 클래스가 없습니다. JVM 위에서 도는 언어인데도 fun main() 하나만 파일에 적으면 실행됩니다. 컴파일러가 뒤에서 파일 이름을 딴 클래스를 만들어 그 안에 정적 메서드로 넣어 주기 때문입니다. Java의 public static void main 의식을 기억하는 분이라면 이 축약이 Kotlin이 취한 태도를 압축해서 보여 준다고 느끼실 겁니다. 필요한 것만 적고 나머지는 컴파일러에 맡깁니다.

Hello World 출력여러 줄 문자열 (Triple Quote)은 몇 분이면 지나가고, 실제 시간이 드는 곳은 뒤쪽 세 편입니다. 프로젝트 설정 (Gradle Kotlin DSL)에서 build.gradle.kts의 뼈대를 익힌 뒤 빌드 시스템 이해 (멀티모듈)로 넘어가면 settings.gradle.kts가 왜 모듈 목록의 유일한 출처인지 이해하게 됩니다.

삼중 따옴표 문자열은 들여쓰기를 그대로 보존합니다. 함수 안에 들여 쓴 채로 적으면 앞의 공백까지 문자열에 들어가므로, 각 줄 앞에 |를 붙이고 trimIndent()trimMargin()을 호출해야 의도한 모양이 나옵니다. Gradle 쪽에서는 Kotlin 플러그인 버전과 JVM 타깃을 맞추지 않아 생기는 오류가 첫 관문입니다. 모듈마다 다른 JVM 타깃을 쓰면 링크 단계에서 어긋나므로, 루트에서 한 번에 지정하는 편이 안전합니다.

01Hello World 출력

Kotlin에서 가장 첫 번째로 배우는 Hello World. JVM 언어이지만 class 없이 top-level 함수로 바로 실행됩니다.

Kotlin code

fun main() {
    println("Hello, World!")

    // print()는 줄바꿈 없이 출력
    print("Hello ")
    print("Kotlin!")
    println() // 빈 줄 출력
}
알아두면 좋은 점

println()은 줄바꿈 포함, print()는 줄바꿈 없이 출력합니다.

자주 하는 실수

Java처럼 class Main { companion object { @JvmStatic fun main... }} 형태로 작성할 필요 없습니다. Kotlin 1.3+부터 top-level fun main()이 표준입니다.

02여러 줄 문자열 (Triple Quote)

삼중 따옴표 """로 여러 줄 문자열을 들여쓰기 그대로 작성합니다.

Kotlin code

fun main() {
    // trimIndent(): 공통 들여쓰기 자동 제거
    val poem = """
        Kotlin은 간결하고
        안전하며
        표현력이 풍부합니다.
    """.trimIndent()
    println(poem)

    // trimMargin(): | 기준으로 좌측 제거
    val sql = """
        |SELECT *
        |FROM users
        |WHERE active = true
    """.trimMargin()
    println(sql)
}
알아두면 좋은 점

trimIndent()는 공통 들여쓰기를 자동 감지해 제거합니다. trimMargin()| 파이프를 기준으로 정렬합니다.

자주 하는 실수

trimMargin()을 쓸 때 각 줄 앞에 |를 붙이지 않으면 공백이 그대로 남습니다.

03프로젝트 설정 (Gradle Kotlin DSL)

Kotlin 프로젝트의 기본 build.gradle.kts 설정입니다. Gradle Kotlin DSL을 사용하면 빌드 스크립트도 Kotlin으로 작성하여 타입 안전성과 IDE 자동완성을 얻습니다.

Kotlin code

// build.gradle.kts
plugins {
    kotlin("jvm") version "1.9.22"
    application
}

repositories {
    mavenCentral()
}

dependencies {
    testImplementation(kotlin("test"))
}

application {
    mainClass.set("MainKt")
}
알아두면 좋은 점

kotlin("jvm")org.jetbrains.kotlin.jvm 플러그인의 축약형입니다. application 플러그인을 추가하면 ./gradlew run으로 바로 실행할 수 있습니다.

자주 하는 실수

mainClass에 파일명이 아닌 클래스명을 지정해야 합니다. Main.kt 파일의 top-level fun main()MainKt로 컴파일됩니다.

04빌드 시스템 이해 (멀티모듈)

Gradle 멀티모듈 프로젝트 구성입니다. settings.gradle.kts에서 서브프로젝트를 선언하고, 공통 설정을 루트에서 관리합니다.

Kotlin code

// settings.gradle.kts
rootProject.name = "my-kotlin-app"
include("app", "core", "data")

// build.gradle.kts (루트)
subprojects {
    apply(plugin = "org.jetbrains.kotlin.jvm")

    repositories { mavenCentral() }

    dependencies {
        "testImplementation"(kotlin("test"))
    }
}
알아두면 좋은 점

루트 build.gradle.ktssubprojects 블록으로 공통 의존성을 한 곳에서 관리하면 버전 충돌을 방지할 수 있습니다.

자주 하는 실수

include에 지정한 이름과 실제 디렉토리명이 일치해야 합니다. 불일치하면 Gradle이 프로젝트를 찾지 못해 빌드에 실패합니다.

05IDE 설정 (IntelliJ IDEA)

IntelliJ IDEA에서 Kotlin 프로젝트를 효율적으로 설정하는 핵심 구성입니다. .editorconfig를 활용하면 팀 전체의 코드 스타일을 통일할 수 있습니다.

Kotlin code

// .editorconfig
// [*.{kt,kts}]
// indent_size = 4
// max_line_length = 120
// insert_final_newline = true

// 코드에서 컴파일러 옵션 확인
fun main() {
    // -Xjsr305=strict: null 안전성 강화
    // -opt-in=kotlin.RequiresOptIn
    println("Kotlin version: ${KotlinVersion.CURRENT}")
    println("JVM target: ${System.getProperty("java.version")}")
}
알아두면 좋은 점

IntelliJ에서 File → Settings → Editor → Code Style → Kotlin에서 Set from... → Kotlin style guide를 선택하면 공식 코딩 컨벤션이 자동 적용됩니다.

자주 하는 실수

JVM target 버전을 Gradle과 IDE 양쪽에서 일치시켜야 합니다. 불일치하면 Cannot inline bytecode 오류가 발생할 수 있습니다.

정리하며

  • top-level fun main만으로 실행되며 클래스 선언은 필요 없습니다
  • 삼중 따옴표 문자열은 trimIndent나 trimMargin으로 들여쓰기를 정리합니다
  • 멀티모듈은 settings.gradle.kts의 include 선언이 유일한 기준입니다
  • JVM 타깃과 Kotlin 플러그인 버전은 루트에서 한 번에 통일합니다

더 깊이 들어가고 싶다면 Kotlin 학습 라이브러리에서 다른 주제 가이드를 이어서 보거나, 언어 비교에서 같은 개념이 다른 언어에서 어떻게 표현되는지 확인해 보세요.