티스토리 뷰
Kotlin?
Kotlin
은 IntelliJ IDEA의 제작사로 유명한 JetBrains이 만든 개발 언어이다. Java 언어에 조예가 깊은 전문가 집단이 엔터프라이즈 레벨의 애플리케이션을 최소의 공수로 유지보수가 쉽도록 새롭게 만든 언어라고 말할 수 있다. 수년간의 베타 기간을 거쳐 2016년 1.0이 첫 공개되었으며 글을 작성하는 현재 1.9.23이 출시된 상태이다.
Java, Kotlin 언어를 같은 프로젝트에서?
Kotlin
은 Java와 같은 JVM 생태계를 공유한다. Java 언어로 작성한 소스 코드가javac
에 의해서 중간 언어인 .class로 컴파일되는 것과 동일하게 Kotlin 언어로 작성한 소스 코드 또한kotlinc
에 의해서 .class로 컴파일 된다. 컴파일된 2개 파일은 JVM에 의해서 차별 없이 동일하게 실행된다. 우리는Gradle
,IntelliJ IDEA
와 같은 현대적인 개발 도구의 도움으로 편리하게 2개 언어를 같은 프로젝트에서 상호 공존하며 작성할 수 있다.
Kotlin 도입 첫 걸음
- IntelliJ IDEA는 Kotlin 제작사 답게 기존 .java 파일을 .kt로 클릭 한방에 자동 변환해주는
Convert to Java File to Kotlin
기능을 제공한다. (프로젝트 트리에서 변환할 Java 파일에서 마우스 우클릭하면 해당 기능이 나타난다.) 완전히 완벽하지는 않아서 자동 변환 후에는 소스 코드의 규모와 복잡도에 따라 어느 정도는 직접 수정이 필요하다. 이 기능을 처음 실행하면 해당 소스 파일 변환 뿐만 아니라 build.gradle 파일까지 자동으로 업데이트해주기 때문에 굉장히 편리하다.
Spring Boot 3 + Spring Data JPA + Querydsl
- 비교적 단순한 프로젝트는
Convert to Java File to Kotlin
기능 실행과 몇가지 수작업으로 충분하다. 추가적으로 백엔드 개발에서 가장 대중적인 기술 스택 중 하나인 Spring Boot 3 + Spring Data JPA + Querydsl 환경에 Kotlin을 추가하려면 프로젝트 루트의build.gradle
파일에 아래 내용을 추가하면 완벽히 작동하게 된다.
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
buildscript {
ext {
kotlinVersion = '1.9.23'
springBootVersion = '3.2.3'
querydslVersion = '5.1.0'
}
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}")
classpath("org.jetbrains.kotlin:kotlin-noarg:${kotlinVersion}")
}
}
plugins {
...
id 'org.jetbrains.kotlin.jvm' version "${kotlinVersion}"
id 'org.jetbrains.kotlin.plugin.spring' version "${kotlinVersion}"
id 'org.jetbrains.kotlin.plugin.jpa' version "${kotlinVersion}"
id 'org.jetbrains.kotlin.kapt' version "${kotlinVersion}"
id 'org.jetbrains.kotlin.plugin.lombok' version "${kotlinVersion}"
id 'io.freefair.lombok' version '8.1.0'
id 'idea'
}
dependencies {
...
implementation 'org.jetbrains.kotlin:kotlin-reflect'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
implementation 'com.fasterxml.jackson.module:jackson-module-kotlin'
// Disable existing Java parts when applying Querydsl
// annotationProcessor "com.querydsl:querydsl-apt:${querydslVersion}:jakarta"
kapt "com.querydsl:querydsl-apt:${querydslVersion}:jakarta"
}
kapt {
keepJavacAnnotationProcessors = true
}
tasks.withType(KotlinCompile).configureEach {
kotlinOptions {
freeCompilerArgs += '-Xjsr305=strict'
jvmTarget = '21'
}
}
참고 글
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- jpa
- JHipster
- Spring Boot
- DynamoDB
- java
- chrome
- Kendo UI Web Grid
- maven
- 알뜰폰
- 태그를 입력해 주세요.
- graylog
- bootstrap
- jstl
- Docker
- Tomcat
- MySQL
- CentOS
- 자전거
- 로드바이크
- jsp
- JavaScript
- node.js
- 평속
- Kendo UI
- spring
- Spring MVC 3
- Eclipse
- kotlin
- 로드 바이크
- 구동계
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함