Spring Boot 4 소식으로 본

자바, 코틀린, 그리고 스프링 부트의 관계

by 지브란

최근 Spring 공식 블로그의 "Next level Kotlin support in Spring Boot 4" 포스트를 통해,

스프링 생태계에서 코틀린(Kotlin)의 위상이 어떻게 변화했는지, 그리고 기존 자바(Java)와 어떤 관계를 맺고 있는지 기술적으로 정리해 보았다.

https://spring.io/blog/2025/12/18/next-level-kotlin-support-in-spring-boot-4


1. 현황: 스프링 부트 환경에서의 코틀린

스프링 부트 4가 코틀린 2.2를 베이스라인으로 채택했다는 소식은 스프링 프레임워크가 단순히 코틀린을 '지원'하는 단계를 넘어섰음을 시사한다.


* Fact: 스프링 부트의 코어(Core)는 여전히 **자바(Java)**로 작성되어 있다.

* Meaning: 이번 발표는 내부 엔진을 코틀린으로 교체했다는 의미가 아니라, 인터페이스(Interface)의 최적화를 뜻한다. 즉, 자바 기반의 엔진 위에서 코틀린 개발자가 코틀린 고유 기능을 위화감 없이 사용할 수 있도록 **상호 운용성(Interoperability)**을 완벽하게 갖추었다는 것이다.


2. 배경: JVM 생태계와 실행 원리

자바 기반의 프레임워크인 스프링 위에서 어떻게 코틀린이 주력 언어로 사용될 수 있을까? 그 답은 **JVM(Java Virtual Machine)**의 동작 원리에 있다. 이를 C# 개발 환경과 비교하면 이해가 쉽다.

C#(.NET) 환경과의 비교

* C#의 경우: C#이나 VB.NET으로 작성된 코드는 컴파일 후 동일한 MSIL로 변환되어 CLR 위에서 실행된다.

* Kotlin의 경우: 자바나 코틀린으로 작성된 코드는 컴파일 후 동일한 **바이트코드(.class)**로 변환되어 JVM 위에서 실행된다.


즉, 스프링 부트 입장에서는 실행되는 파일이 원래 자바였는지 코틀린이었는지 구분할 필요가 없다. 이것이 자바 라이브러리를 코틀린 프로젝트에서 100% 호환하여 사용할 수 있는 기술적 배경이다.


3. 탄생: 젯브레인(JetBrains)의 결단과 에피소드

코틀린이 자바와 완벽하게 호환되면서도 더 간결한 문법을 가질 수 있었던 것은, 이 언어를 만든 주체가 **JetBrains(젯브레인)**이라는 점에 기인한다.


(1) 왜 만들었나? (Why)

젯브레인은 자바 개발 도구인 IntelliJ IDEA를 만드는 회사다. 그들은 자신들의 주력 제품인 IntelliJ 자체를 자바로 개발하고 있었는데, 자바의 장황한 문법(Boilerplate) 때문에 개발 생산성이 떨어진다는 문제의식을 느꼈다.

당시 대체재로 '스칼라(Scala)'가 있었지만, 컴파일 속도가 너무 느려 대규모 프로젝트에 부적합했다. 결국 그들은 **"자바만큼 빠르고, 자바보다 간결하며, 기존 자바 코드와 100% 섞어 쓸 수 있는 언어"**를 직접 만들기로 결심한다. 이것이 2011년 공개된 코틀린의 시작이다.


(2) 컴파일러 에피소드

재미있는 점은 젯브레인이 **'IDE(통합개발환경) 회사'**라는 사실이다. 보통은 언어가 먼저 나오고 그 후에 도구(IDE)가 지원되는데, 코틀린은 **"도구를 만드는 회사가 자신들이 쓰려고 만든 언어"**였다.

* Dogfooding: 그들은 코틀린 컴파일러(kotlinc)를 개발함과 동시에, 자사의 IntelliJ IDEA 개발에 코틀린을 즉시 투입했다. (이를 IT 용어로 '개밥 먹기(Dogfooding)'라고 한다.)


* 결과: IDE 회사가 만들었기 때문에, 코틀린은 출시 초기부터 자동 완성, 리팩토링 같은 도구 지원이 완벽에 가까웠다. 이는 개발자들이 자바에서 코틀린으로 넘어가는 진입 장벽을 획기적으로 낮추는 결정적인 요인이 되었다.


4. 비교: 자바와 코틀린의 공통점과 차이점

이러한 배경 속에서 자바와 코틀린의 관계는 다음과 같이 요약된다.

* 공통점 (Platform): 둘 다 JVM 위에서 실행되며, JDK 표준 라이브러리를 공유한다.

* 차이점 (Compiler):

* Java (javac): 명시적이고 엄격한 코드 작성을 지향한다.

* Kotlin (kotlinc): 젯브레인이 설계한 컴파일러가 자바의 반복적인 코드를 대신 작성해주고, Null 처리를 강제하여 런타임 에러를 컴파일 시점에 잡아낸다.


결론

스프링 부트 4의 코틀린 지원 강화는 **"자바라는 견고한 인프라(JVM) 위에 코틀린이라는 생산성 높은 도구(Language)를 결합하는 과정"**이다.

결국 스프링 부트 환경에서 코틀린을 사용한다는 것은, 새로운 플랫폼으로의 이주가 아니라 기존 자바 생태계의 안정성을 그대로 유지하면서 언어적 효율성만 취하는 실용적인 전략이라고 할 수 있다.




* DogFooding 이란!!

이 표현이 널리 퍼지게 된 데에는 실제 유명한 사건이 있습니다.

1970~80년대 미국 반려동물 사료 광고

한 개 사료 회사의 CEO가 광고에서 이렇게 말합니다.

“우리 사료는 안전해서 나도 먹고 있다.”

그리고 실제로 TV 광고에서 개 사료를 먹는 장면을 연출합니다.


이 장면은 강한 인상을 남겼고,

“자기 제품을 자기가 먹는다”는 개념이

하나의 상징적 표현으로 굳어졌습니다.


여기서 중요한 점은 이것입니다.

이 행동은 홍보용 퍼포먼스였지만 메시지는 책임의 상징으로 받아들여졌다는 점입니다.

작가의 이전글바른 자세에 대한 통념에 대하여