2023-09-14 작성

2023년도 자바, 스프링, 스프링부트 버전 선택 가이드

스프링 프로젝트를 시작하면서 처음으로 고민하게 되는 것이 바로 버전 선택이다. 각각이 개선사항이 반영된 버전들로 업그레이드가 되면서 자바, 스프링, 스프링부트, STS 등의 버전을 한눈에 파악하기 힘들어졌다.

나 역시 이번 회사 프로젝트에서 스프링부트로 개발하면서 대체 어느 버전을 써야 하는지 고민했기에, 버전 선택을 고민을 하는 사람들에게 도움이 되기 바라며 포스팅을 기록한다.

1. 자바 버전

사람들은 어떤 자바 버전을 많이 쓸까? JetBrains의 조사에 따르면, 현재 많이 사용하는 버전은 자바 8이다. oracle support에서 자바 8이 제외되면서 조금씩 사용량이 줄고 있으나, 아직까지 많이 쓰이고 있는 것은 분명하다.

 
2014년도에 등장한 자바 8 버전이 아직까지도 인기 있는 이유가 무엇일까?

(1) 오라클 LTS 버전 중에서 오랜 Support 보장
아래 오라클의 자바 support 지원표를 살펴보자. 자바 8은 자바 17 보다도 더 긴 보장기간을 가진다. 갓 나온 자바 21을 제외하고 보면 현재 Java LTS 버전 중 가장 긴 보장기간을 가진 버전은 자바 8이다.

(2) 기존 서비스와의 호환 문제
현재 국내 기준으로 자바 8로 개발되어 운영하고 있는 프로젝트가 많다. 기존 프레임워크 또는 호환성을 유지하고 안정적으로 운영하기 위해서, 연관된 프로젝트들 또한 큰 틀에서 벗어나지 않고 있다. (이번에 시작한 회사 프로젝트 또한 자바 8이다...)

자바 8 보다 매력적인 대안 : 자바 17

언제까지고 자바 8 버전으로 머무를 수는 없는 법. 본인이 투입하는 프로젝트가 신규 개발이라서 기존 시스템과 연관관계가 복잡하지 않는 상황이라면 자바 17 버전을 사용해보길 추천한다.

(1) Java Support 기간이 길다.
위 표에 따르면 자바 17 버전도 Java Support 기간이 긴 편이다.

(2) 신규 버전을 대비하여 영향 최소화
현재 사용 중인 버전의 지원 종료일이 도래하여 다른 LTS 버전을 찾아야 할 시점에, 8 버전에서 바로 최신 버전으로 전환하는 것보다 17 버전까지의 기술 적응을 완료한 상태에서 전환 시 마이그레이션으로 인한 영향이 최소화될 것이다.

(3) 다음 세대 플랫폼 호환 준비
스프링부트 3 버전부터는 자바 17 이상을 지원한다. 이런 경우에는 어쩔 수 없이 자바 17을 써야 한다.

함께 읽어보면 좋은 글

자바 버전에 대한 결론

개발 현장에서 안정적인 자바 8을 사용 중이면 그대로 버전을 유지한다.
개인 프로젝트를 하거나, 신규 개발건이거나, 스프링 부트 3을 쓸 예정이라면 자바 17을 추천한다.

2. 스프링부트 버전

현재 스프링부트 버전을 알아보기 위해 Spring boot Document을 살펴보자. 2023년 9월 기준 스프링부트는 3 버전대까지 나와있으며 특히 상용화된 버전을 뜻하는 GA 버전은 3개이다.

 
3개의 GA 버전 중에서 2.7.15 버전의 [Reference Doc] 링크를 클릭하여 [Getting Started] 링크로 들어가자.
아래 사진처럼 시스템 요구사항을 살펴보면 Spring Boot 2.7.15는 Java 8을 필요로 하며 Java 20까지 호환된다. Spring Framework 5.3.29 이상도 동일하다.

현재 스프링부트 최신 버전인 3.1.3 버전도 동일한 방법으로 살펴보면 Spring Boot 3.1.3은 Java 17이 필요하며 Java 20까지 호환된다. Spring Framework 6.0.11 이상도 동일하다.

이런 식으로 본인의 자바, 스프링부트 간 호환되는 버전을 확실하게 확인해야 한다. 또한 스프링부트를 STS 개발툴을 이용하여 개발할 때 주의할 점이 있다. STS 3는 스프링 레거시 프로젝트도 지원하지만, STS 4는 스프링 부트만 지원하고 있다. (STS 4에서 따로 플러그인을 설치하여 레거시 프로젝트 생성하다가 오류 나는 경우가 꽤 많다)

스프링부트 버전에 대한 결론

스프링부트 2 버전을 사용하면, 자바 8 이상을 사용해야 하고,
스프링부트 3 버전을 사용하면, 자바 17 이상을 사용해야 한다.
스프링부트 프로젝트를 만들려면 STS 4 설치하는 것을 추천한다.

3. 스프링 버전

스프링 프레임워크 버전도 Spring Document에서 확인할 수 있다. 2023년 9월 기준 스프링 프레임워크는 6 버전대까지 나와있으며, GA 버전은 스프링부트와 마찬가지로 3개가 제시되고 있다. 스프링은 release 주기가 짧은 편이며, 현재도 계속해서 다음 release를 내놓고 있기 때문에 release note에 예민해야 한다.

3개의 GA 버전 중에서 5.3.29 버전의 [Reference Doc] 링크를 클릭하여 [Overview] 링크로 들어가 보자. 소개 글을 살펴보면 Spring Framework 5.1부터는 JDK 8+(Java SE 8+)가 필요하다.

현재 스프링 최신 버전인 6.0.11 버전도 동일한 방법으로 살펴보면 Spring Framework 6.0부터 Spring에는 Java 17 이상이 필요하다.

스프링 버전에 대한 결론

스프링프레임워크 5 버전을 사용하면, 자바 8 이상을 사용해야 하고,
스프링프레임워크 6 버전을 사용하면, 자바 17 이상을 사용해야 한다.

4. 의존성 버전

스프링 부트에 올릴 적절한 라이브러리 의존성 버전도 확인해 보자. 위에서 살펴본 Spring boot Document에서 [Reference Doc] > [Dependency Versions] 링크를 클릭한다. 아래 사진처럼 각 라이브러리별 관리되는 Group ID, Artifact ID, Version 정보를 확인할 수 있다.

그림으로 보는 버전 support

References