[Java] Java & Spring boot 버전 뭘 선택해야 할까?

하비·2025년 1월 19일
3

Java

목록 보기
9/13

면접 질문에서 왜 자바 17을 쓰셨나요? 왜 21을 쓰셨나요?
너무 두려운 질문입니다...
"자바 버전이 그렇게 차이가 있는가? 내 서비스에 맞는 자바 버전은?"
이런 의문을 가지고 포스팅을 해보겠습니다.


가장 많이 쓰는 버전은?

출처: https://newrelic.com/resources/report/2024-state-of-the-java-ecosystem

2020년에는 java 8을, 2024년에는 java 17을 가장 많이 쓰는 것을 볼 수 있다.
변화 추이를 보면 점점 많이 쓰는 자바 버전이 높아지는 것을 볼 수 있다.

각 Java 버전의 특징은?

그럼 왜 쓰는 java 버전이 높아지는 것이며, 각 버전마다 어떤 부분들이 업데이트가 되었을까?

여기 java 버전별 특징을 잘 나타낸 글이 있다.

java 버전별 차이 & 특징

그럼 이 많은 버전들 중에서 왜 java 8, 11, 17, 21이 많이 언급되는 걸까?

그 이유는, oracle의 Long-Term Support(LTS) 정책과 Java의 생태계 발전에 따라 주요 버전으로 자리잡았기 때문이다.

출처: https://www.oracle.com/java/technologies/java-se-support-roadmap.html

그림을 보면 8,11,17,21이 LTS라는 것을 알 수 있다.

LTS란?

LTS(Long-Term Suppert, 장기 지원) 버전은 장기간, 즉 18개월간 유지 관리하는 소프트웨어 릴리스이다. 이 기간에는 기존 기능을 중단할 수 있는 새 기능을 도입하지 않고, 보안 패치 및 중요한 버그 수정과 같은 정기 업데이트를 제공한다.
LTS 버전은 최신 기능보다 안정성, 신뢰성, 장기적 유지 관리를 우선시하는 고객을 위해 고안됐다.

LTS와 일반 버전의 주요 차이점

지원 기간안정성 vs 혁신이용 고객의 업그레이드 빈도
LTS18개월 지원안정성과 보안 중시업그레이드 빈도가 덜함
일반6개월 지원새로운 기능 자주 도입최신 상태 유지를 위해 자주 업그레이드 필요

LTS를 선택하는 이유?

다운타임이 발생하면 수습 비용이 많이 드는 중요 업무용 시스템이나 환경에 적합하다. LIS 버전을 사용하면 장기간에 걸쳐 안정된 버전을 사용하고 지원을 받을 수 있으므로 안심할 수 있다.

일반 버전을 선택하는 이유?

최신 기능과 개선 사항을 중시한다면 일반 버전이 더 적합하다. 일반 버전을 이용하면 업데이트를 자주 해야 할 수 있지만, 최신 기능을 접할 수 있다.
그래서 기업보다는 개인 개발자나 최신 기술을 실험하는 데 사용된다.

각 상황에 맞는 버전을 선택하면 된다. 기업과 같은 경우에는 안정성 때문에 LTS 버전을 많이 쓴다.

각 LTS 버전별 특징을 살펴보자

LTS 버전별 특징

  • Java 8 (2014년 출시)
    첫 번째 LTS 버전으로, 많은 개발자와 기업이 오랫동안 사용.
    Lambda, Stream API, Optional과 같은 기능이 도입되어 Java의 생산성을 크게 향상.
    여전히 많은 레거시 시스템에서 사용 중.

  • Java 11 (2018년 출시)
    두 번째 LTS 버전으로, Java 8 이후 새로운 기능과 성능 개선을 포함.
    var 키워드, 새로운 GC(Garbage Collector) 옵션, HTTP Client API 등이 도입.
    상용화된 애플리케이션에서 Java 8을 대체하며 널리 사용.

  • Java 17 (2021년 출시)
    세 번째 LTS 버전으로, 최신 언어 기능과 보안 강화가 포함.
    sealed classes, pattern matching, switch 표현식 등이 추가.
    기업 환경에서 점차 Java 11을 대체하는 중.

  • Java 21 (2023년 출시)
    네 번째 LTS 버전으로, 가장 최신의 안정된 기능과 장기 지원 제공.
    Virtual Threads (Project Loom), Record Patterns 등 혁신적인 기능 포함.
    클라우드 네이티브 환경과 최신 애플리케이션에서 사용 증가.

Spring boot 버전은?

그럼 java 버전은 선택했고, spring boot 버전은 어떻게 해야할까?

출처: https://spring.io/blog/2022/05/24/preparing-for-spring-boot-3-0

Spring boot 3.0 부터는 java 17이 필요하다고 한다.

만약 java 21의 virtual thread 부분을 쓰고 싶다면 스프링 부트 3.2 버전 이상을 선택해야 한다.

출처: https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.2-Release-Notes

Virtual Thread에 대해 알고 싶다면?
[4월 우아한테크세미나] ‘Java의 미래, Virtual Thread’
참고할 블로그

profile
멋진 개발자가 될테야

2개의 댓글

comment-user-thumbnail
2025년 1월 23일

17버전과 21버전을 굳이 쓰는 이유가 있었군요. 많은 도움이 되었습니다.
잘 보고 갑니담!!

1개의 답글