2023년 버전으로 자바 버전 채택 가이드를 포스팅을 한 지 1년이 채 안 돼 조회수가 1만이 넘었다;; 내 티스토리의 명실상부 효자 포스팅이 아닐 수 없어 2024 버전으로 다시 작성해보려 한다.
https://kghworks.tistory.com/137
미리 쓰는 결론 : 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월 기준)
2024에도 여전히 8, 17, 11 이 인기가 높다. 8과 17의 점유율이 비슷한 것을 보면 이제 많이들 17로 넘어갔다고 볼 수 있겠다. 2023에 말했듯, 8 이후 버전에서 17이 가장 매력적인 선택지이다. (많은 자바 개발자가 스프링을 개발하는 것을 감안했을 때)
Java Support
Java는 8, 17, 21 어느 것을 쓰건 괜찮다만, 후술 하겠지만 Spring 개발자는 8에서 어서 업그레이드해야 한다. 현재 지원하는 Spring 버전이 이미 Java 17을 요구하기 때문이다.
여담이지만, 2025년 9월 다음 LTS인 Java 25가 준비 중이라고 한다.
결론 : Java 17, 21을 쓰자
(8도 괜찮긴 함. Spring 개발자 아니라면)
Spring Framework Support
Spring Framework 5.3.x 이 Spring 5의 마지막 피쳐 브랜치다. 그 이전은 모두 지원 종료.
결론 : Spring Framework는 버전 5.3.x 이상
Spring Framework의 JDK 버전 대응
Spring 5.3.x 이상을 써야 하는 상황에서 이미 Spring 5.3.x는 Java 8 지원이 되는 것으로 보인다. 여기서 눈여겨볼 포인트는 다음 메이저 버전인 Spring 6부터 최소 JDK 17이어야 된다는 것이다.
결론 : Spring 6부터는 최소 JDK 17
Spring Boot Support
결론 : Spring Boot는 3.1.x 이상
(2.7.x 써도 되긴 함)
Spring Boot의 JDK 버전 대응
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
최근 릴리즈된 모든 JDK LTS 버전에 대해 테스트를 해봤다고 한다.
production level에서는 Spring 5.3.x, 6.x 이상을 추천한다.
Spring Boot 3.2부터 virtual threads를 지원한다
참고로 Intellij로 개발 중이라면 JDK 21을 위해 Intellij도 업그레이드 해야한다. 2023.03 버전부터 정식 지원을 시작했다.
https://kghworks.tistory.com/173
참고
https://www.oracle.com/kr/java/technologies/java-se-support-roadmap.html
https://www.jetbrains.com/lp/devecosystem-2023/
https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Versions
'Programming > DevOps, Tools' 카테고리의 다른 글
ELK 스택으로 구축하는 로그 수집, 시각화 (5) | 2024.07.24 |
---|---|
[Git] 로컬의 프로젝트별로 git config를 적용하고 싶을 때 (0) | 2024.03.08 |
[Git] rebase + squash로 커밋 합치기 (2) | 2024.01.24 |
[클라우드] 가상화 - 클라우드 컴퓨팅의 핵심 기술 (0) | 2023.10.25 |
[Docker] mysql 8.0 설치하기 (0) | 2023.06.15 |
댓글