티스토리 뷰

Kotlin?

  • KotlinIntelliJ IDEA의 개발사로 유명한 JetBrains이 만든 개발 언어이다. Java 언어에 조예가 깊은 전문가 집단이 엔터프라이즈 레벨의 애플리케이션을 최소의 공수로 유지보수가 쉽도록 새롭게 만든 언어라고 말할 수 있다. 수년간의 베타 기간을 거쳐 2016년 1.0이 첫 공개되었으며 글을 작성하는 현재 1.3이 출시된 상태이다.
  • 프로젝트 도입을 고민할 때 Kotlin을 단순히 Java를 더 간결하고 쉽게 만든 언어로 생각하고 접근하면 나중에 되돌아오는 것이 쉽지 않을 것이다. 전혀 다른 개념의 언어로 생각하고 접근해야 한다. 역사가 길지 않은 탓에 전용 써드파티 플러그인 지원도 떨어져 생각치 못하게 Java보다 불편한 점이 있다는 것도 고려해야 한다. 그럼에도 Kotlin이 미래에 가장 유력하고 유망한 언어 중 하나가 될 것이라는 점에서는 이견이 없을 것이다.

Java, Kotlin 언어를 같은 프로젝트에서?

  • KotlinJava와 같은 JVM 생태계를 공유한다. Java 언어로 작성한 소스 코드가 javac에 의해서 중간 언어인 .class로 컴파일되는 것과 동일하게 Kotlin 언어로 작성한 소스 코드 또한 kotlinc에 의해서 .class로 컴파일 된다. 컴파일된 2개 파일은 JVM에 의해서 차별 없이 동일하게 실행된다. 우리는 Gradle, IntelliJ IDEA와 같은 현대적인 개발 도구의 도움으로 편리하게 2개 언어를 같은 프로젝트에서 작성할 수 있다.

Spring Boot 2.0 + Java + Kotlin

  • Spring Boot 2.0 프로젝트에 JavaKotlin을 동시에 적용하는 방법은 간단하다. /build.gradle 파일만 수정하면 된다. 아래는 가장 기본적인 종속성만 추가한 예이다.
buildscript {
    ext {
        kotlinVersion = '1.3.10'
        springBootVersion = '2.1.1.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}")
        classpath("org.jetbrains.kotlin:kotlin-allopen:${kotlinVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: 'kotlin-spring'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'com.jsonobject'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
compileKotlin {
    kotlinOptions {
        freeCompilerArgs = ["-Xjsr305=strict"]
        jvmTarget = "1.8"
    }
}
compileTestKotlin {
    kotlinOptions {
        freeCompilerArgs = ["-Xjsr305=strict"]
        jvmTarget = "1.8"
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation('org.springframework.boot:spring-boot-starter')
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    compileOnly('org.projectlombok:lombok')
    testImplementation('org.springframework.boot:spring-boot-starter-test')
}
  • 가장 먼저 buildscript.ext.kotlinVersion 항목을 추가해야 한다. 프로젝트에 사용하려는 Kotlin의 버전을 입력한다. 다음으로 buildscript.dependencies.classpathorg.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}, org.jetbrains.kotlin:kotlin-allopen:${kotlinVersion}을 추가해준다.
  • 다음으로 apply plugin 항목에 기존에 있던 java에 추가로 kotlin, kotlin-spring을 추가한다. 이어서 compileKotlin, compileTestKotlin 항목을 위와 같이 추가해준다.
  • 마지막으로 dependencies 항목에 org.jetbrains.kotlin:kotlin-stdlib-jdk8, org.jetbrains.kotlin:kotlin-reflect, com.fasterxml.jackson.module:jackson-module-kotlin을 추가해주면 JavaKotlin을 함께 사용할 준비가 끝난다.

참고 글

댓글
댓글쓰기 폼