And Brain said,

Kotlin, The Evolution of Java (+ MSA with Spring boot) 본문

IT/Java & Kotlin & Spring boot

Kotlin, The Evolution of Java (+ MSA with Spring boot)

The Man 2023. 2. 19. 23:02
반응형


오늘은 현재 안드로이드의 공식 언어이자 태생부터 진화된 자바를 표방한 언어, Kotlin에 대해 알아보고 Kotlin으로 구축하는 간단한 Spring boot 예제까지 배워보도록 하자.



최신 언어가 기존의 언어를 대체하기란 정말로 쉽지 않다.

대부분의 사람들은 익숙한 것을 좋아하고 또한 기존 코드가 너무 방대하면 손을 댈 엄두를 못 내게 된다.

특히, 자바와 같이 높은 완성도의 언어라면 특별한 이유가 있지 않는 한 대체할 이유를 느끼지 못하게 된다.

구글도 오라클과 소송만 아니었다면 자바를 계속 썼을 것이다.

선결 이유가 어떻든 Kotlin은 안드로이드의 공식 언어로 채택되었고 사람들에게 자신의 존재감을 드러냈다.

Kotlin은 이러한 전략을 사용했다.

  • 기존 언어와 호환

앞서 기존 언어를 대체하려 했던 신규 언어들이 실패하는 가장 큰 이유는 기존 언어와 호환이 안되기 때문이다.

이러한 점에서 Kotlin은 다르다.

Kotlin은 Java와 마찬가지로 JVM 위에서 동작하며 Java와 100%의 상호운영성을 자랑한다.

이 덕분에 기존 Java 코드들을 대체하지 않고도 Kotlin 코드들을 신규 도입할 수 있게 했다.

이외에도

  • 간결한 문법(자바와 비교하여 정말로 간결하다)
  • Null Safe
  • IntelliJ IDE와 호환성

(Kotlin은 IntelliJ IDE를 만든 JetBrains가 개발한 언어이므로 당연하게도 IntelliJ와 가장 친화적인 언어이다.)

등등의 장점들을 가지고 있다.

자 여기까지 간단하게 Kotlin에 대해 알아보았고 본격적으로, Kotlin으로 만드는 Spring boot 프로젝트를 시작해 보자.


먼저, Kotlin은 JVM 기반의 언어이므로 JDK가 필요하다.

각자의 환경에 맞춰 JDK를 설치해주자.

나는 openjdk 11을 설치해주었다.

IntelliJ 자사에서 만든 언어가 Kotlin이므로 IDE는 IntelliJ를 사용하겠다.


Spring initializr에서 Spring boot 프로젝트를 만들어준다.


File -> New -> Project from Existing Sources ...

Gradle 프로젝트로 Import해주면 된다.

이후 한참을 빌드하니 참을성있게 기다려준다.

자, 이제 본격적으로 서비스 디스커버리를 구축한다.

빌드된 후에 build.gradle에서

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
	id("org.springframework.boot") version "2.6.8"
	id("io.spring.dependency-management") version "1.0.15.RELEASE"
	kotlin("jvm") version "1.6.21"
	kotlin("plugin.spring") version "1.6.21"
}

group = "com.spring.cloud"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_11

repositories {
	mavenCentral()
}

val springCloudVersion = "2021.0.4"

dependencies {
	implementation("org.springframework.boot:spring-boot-starter")
	implementation("org.jetbrains.kotlin:kotlin-reflect")
	implementation("org.springframework.cloud:spring-cloud-starter-netflix-eureka-server")
	implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
	testImplementation("org.springframework.boot:spring-boot-starter-test")
}

dependencyManagement {
	imports {
		mavenBom ("org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}")
	}
}

tasks.withType<KotlinCompile> {
	kotlinOptions {
		freeCompilerArgs = listOf("-Xjsr305=strict")
		jvmTarget = "11"
	}
}

tasks.withType<Test> {
	useJUnitPlatform()
}


Kotlin DSL 문법으로 작성하였다.

Netflix OSS Eureka를 추가해준다.


스프링부트 실행파일에서 EurekaServer를 활성화해준다.


resources에 application.yml 파일까지 작성해주면 완성이다.

이제 Spring boot application 파일을 실행해주면



성공적으로 Eureka 서버가 올라갔음을 확인할 수 있다.

다음은 Kotlin으로 Config Server와 APIGateway를 구축해보도록 하겠다.


Thanks for watching, Have a nice day.


References

https://namu.wiki/w/Kotlin

반응형
Comments