본문 바로가기
Programming/DevOps, Tools

[Java, Spring] 버전 선택 가이드 2024 (Java 21)

by kghworks 2024. 4. 27.

 2023년 버전으로 자바 버전 채택 가이드를 포스팅을 한 지 1년이 채 안 돼 조회수가 1만이 넘었다;; 내 티스토리의 명실상부 효자 포스팅이 아닐 수 없어 2024 버전으로 다시 작성해보려 한다.

2023 버전 조회수 (2024년 4월 기준 1만 돌파아!!)

https://kghworks.tistory.com/137 

 

[JAVA, SPRING] 버전 선택 가이드 2023

Java와 Spring을 선택함에 있어 Java version과 Spring version은 매우 중요합니다. 특히 Java 8부터 소개된 lamda, stream, Java 11의 var 타입추론 등은 같은 Java여도 버전에 따라 꽤 다른 가독성, 문법을 보여주기

kghworks.tistory.com

 

 

미리 쓰는 결론 : JDK 17 쓰자

  • Spring Framework로 개발하는 경우 :  JDK17 + Spring 6.1.x
  • Spring Boot로 개발하는 경우 : JDK 17 + Spring Boot 3.2.x

일단 JDK 17으로 개발을 시작하자.

 

 

목차

  • Java와 Spring의 버전 지원정보 (2024년 4월 기준)
  • 결론 : JDK 17 쓰자
  • Java 21 쓰려면 스프링 무슨 버전을 써야하나

Java와 Spring의 버전 지원정보 (2024년 4월 기준)

Jetbrains 에코시스템 2023 자바 버전 사용 조사 (출처 : https://www.jetbrains.com/lp/devecosystem-2023/java/)

 

 2024에도 여전히 8, 17, 11 이 인기가 높다. 8과 17의 점유율이 비슷한 것을 보면 이제 많이들 17로 넘어갔다고 볼 수 있겠다. 2023에 말했듯, 8 이후 버전에서 17이 가장 매력적인 선택지이다. (많은 자바 개발자가 스프링을 개발하는 것을 감안했을 때)

 

Java Support

Java Support Roadmap (출처 : https://www.oracle.com/kr/java/technologies/java-se-support-roadmap.html)

 

 Java는 8, 17, 21 어느 것을 쓰건 괜찮다만, 후술 하겠지만 Spring 개발자는 8에서 어서 업그레이드해야 한다. 현재 지원하는 Spring 버전이 이미 Java 17을 요구하기 때문이다. 

 여담이지만, 2025년 9월 다음 LTS인 Java 25가 준비 중이라고 한다.

결론 : Java 17, 21을 쓰자 
(8도 괜찮긴 함. Spring 개발자 아니라면)

 

Spring Framework Support

Spring Framework support (출처 : https://spring.io/projects/spring-framework#support)

 

 Spring Framework 5.3.x 이 Spring 5의 마지막 피쳐 브랜치다. 그 이전은 모두 지원 종료. 

결론 :  Spring Framework는 버전 5.3.x 이상

 

Spring Framework의 JDK 버전 대응

Spring Framework Java 버전 지원 정보 (출처 : https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Versions#jdk-version-range)

 

 Spring 5.3.x 이상을 써야 하는 상황에서 이미 Spring 5.3.x는 Java 8 지원이 되는 것으로 보인다. 여기서 눈여겨볼 포인트는 다음 메이저 버전인 Spring 6부터 최소 JDK 17이어야 된다는 것이다.

결론 : Spring 6부터는 최소 JDK 17

Spring Boot Support

Spring Boot support (출처 : https://spring.io/projects/spring-boot#support)

결론 : Spring Boot는 3.1.x 이상
(2.7.x 써도 되긴 함)

 

Spring Boot의 JDK 버전 대응

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

 

3.0부터는 Java 17를 요구한다. (highly recommend)

 


결론 : JDK 17 쓰자

현재 기준 가장 Best는 다음과 같다.

  • Spring Framework로 개발하는 경우 :  JDK17 + Spring 6.1.x
  • Spring Boot로 개발하는 경우 : JDK 17 + Spring Boot 3.2.x

일단 JDK 17으로 개발을 시작하자.

 

현실적으로 어려운 상황이라면, Java 8 + Spring Framework 5.3.x (or Spring Boot 2.7.x)

  새롭게 프로젝트를 생성하는 거면 문제 될 게 없지만, 기존의 프로젝트들이 문제다. 언어의 버전이 올라가기 위해서는 의존성이 걸려있는 수많은 라이브러리들이 문제다. 정말 낙후된 레거시 프로젝트들의 경우 이미 사라진 라이브러리들을 참조해 쓰는 경우도 많다.

그럼에도 불구하고 최소한 Java 8로는 업그레이드해야 한다.

 

 kotlin과 같이 함수형 프로그래밍이 이미 자바 진영에서도 선택을 받는 상황에서 Functional Interface, Lamda 등이 불가능한 Java 8 미만 버전을 쓴다는 것은 더 이상 어떤 핑계도 통하지 않는다. 이미 여럿 주니어들은 Java 8, Kotlin을 익히고 올라오는 상황이다. 레거시들! 업그레이드를 하자. 


번외 : Java 21 쓰려면 스프링 무슨 버전을 써야 하나

 2024년 현재 기준 자바 개발자들에게 가장 핫한 새로운 피쳐는 단언컨대 Java 21에 추가된 Virtual Thread이다. 국내 빅테크 기업들에서도 이미 발표주제로 다루었다. 나도 짧게 다루어봤으니 궁금하면 참고해 보자

https://kghworks.tistory.com/174

 

[Java] JDK 21 Virtual Threads 톺아보기

목차 OS 스레드와 Java Platform Thread Java Virtual Thread Virtual Thread 사용해 보기 Virtual Thread 효율적으로 사용하기 Java 21에 새롭게 추가된 Virtual Thread에 대해 알아본다. 먼저, 가상 스레드를 일목요연하게

kghworks.tistory.com

 

Spring Framework Java 버전 지원 정보 (출처 : https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Versions#jdk-version-range)

 

최근 릴리즈된 모든 JDK LTS 버전에 대해 테스트를 해봤다고 한다.

production level에서는 Spring 5.3.x, 6.x 이상을 추천한다.

 

 

Spring Boot 3.2 Release Notes (출처 : https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.2-Release-Notes#support-for-virtual-threads)

 

Spring Boot 3.2부터 virtual threads를 지원한다

 

 

참고로 Intellij로 개발 중이라면 JDK 21을 위해 Intellij도 업그레이드 해야한다. 2023.03 버전부터 정식 지원을 시작했다.

https://kghworks.tistory.com/173

 

[IntelliJ] IntelliJ에서 Java 21 사용하기위해 2023.03으로 업데이트

문제 Java 21을 사용하려고 보니 IntelliJ에서 지원을 안하는 거 같음.. Jetbrains 홈페이지를 보니 2023.3 버전부터 Java 21 표준 피처를 지원한다고 나온다. 해결 하는수 없이 업데이트 아래 링크에서 다

kghworks.tistory.com


참고

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

 

Oracle Java SE Support Roadmap | Oracle 대한민국

Oracle provides this Oracle Java SE Support Roadmap, to help you understand maintenance and support options and related timelines. If you are looking for the latest free JDK release from Oracle under an open source license, please see jdk.java.net, or a fr

www.oracle.com

https://www.jetbrains.com/lp/devecosystem-2023/

 

The State of Developer Ecosystem in 2023 Infographic

Learn about the latest trends in tools, technologies, AI, and programming languages.

www.jetbrains.com

https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Versions       

 

Spring Framework Versions

Spring Framework. Contribute to spring-projects/spring-framework development by creating an account on GitHub.

github.com

https://youtu.be/vQP6Rs-ywlQ

https://youtu.be/BZMZIM-n4C0

 

 

댓글