본문 바로가기
Programming/Languages (Java, etc)

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

by kghworks 2023. 7. 5.

Java와 Spring을 선택함에 있어 Java version과 Spring version은 매우 중요합니다.

특히 Java 8부터 소개된 lamda, stream, Java 11의 var 타입추론 등은 같은 Java여도 버전에 따라 꽤 다른 가독성, 문법을 보여주기 때문에 현재 Java 8이 가장 많이 쓰이는 상황에서 Java 진영은 일종의 변곡점에 있습니다.

 

JETBRAINS 개발자 에코시스템 2022 설문조사

 

개발팀의 상황을 볼까요.

 

  • 어떤 팀은 Java 8을 이미 도입한 채로 다음 버전을 준비 중
  • Java 8을 사용중
  • 아직 Java 8 이전을 사용 중

 

일단 세 번째라면 어서 빨리 java 8으로 올라와서 다음 release를 준비해야 합니다. 이번 포스팅에서는 각 공식 문서를 바탕으로 현재 Spring 진영에서 선택할 수 있는 버전과 현실적인 방안을 제안하려 합니다.

 

목차

  • Java version support 
  • Spring version support 
  • 결론
  • 참고

Java version support

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

현재 Java LTS 버전 중 가장 긴 보장기간을 가진 버전은 Java 8입니다. 그 다음 Java 17입니다. 

웹이 아닌 Java Application을 사용 중이시라면 Java 8을 쓰는 것이 가장 안정적입니다. 

 

Java의 release 주기

Java의 release 주기는 6개월, LTS release 주기는 3년입니다. 즉, 3년마다 새로운 LTS가 튀어나옵니다.

 

책 Modern Java in Action 발췌

 


Spring version support 

 

그러나 Spring은 얘기가 다릅니다.

 

 Spring은 VMware Tanzu Open Source Software Support을 따르며, 대략 1 ~ 3년의 지원기간을 가집니다. (Major version은 3년의 지원기간, Minor version은 최소 24개월의 지원기간을 가집니다.)

 따라서 Spring은 release 주기가 짧은 편이며, 현재도 계속해서 다음 release를 내놓고 있기 때문에 release note에 예민하셔야 합니다.

 

Spring framework 지원기간

https://spring.io/projects/spring-framework#support

 

Spring Boot 지원기간

 

https://spring.io/projects/spring-boot#support

 

현재 Spring Framework의 경우 6.1.x, Spring boot의 경우 3.2.x의 지원기간이 가장 깁니다.

 

Spring Boot는 3.2.x부터 Java 17을 요구하네요.

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


결론

 

크게 세 가지 case로 나눠보겠습니다.

  • Java 8 이전 버전 사용 중
  • Java 8 사용 중
  • Java 8 이후 버전 사용 중

 

 Java 8 이전 버전 사용 중이라면 이미 지원이 종료된 버전을 쓰고 있는 겁니다. 2026년 안까지 Java 8 + Spriong Framework 5.3.x으로 업그레이드하시거나, 2025년 안까지 Java 8 + Spring Boot 2.7.x로 업그레이드하세요. 이 업그레이드가 완료되면 바로 다음 버전을 준비하셔야 할 겁니다.

 

 Java 8을 사용 중이시라면 아직 여유가 있습니다. Spring Framework를 사용중이시라면 5.3.x로 2026년까지 사용하시고, Spring Boot를 사용하신다면, 2.7.x로 2025년까지 사용 가능하십니다. Spring Boot 환경이시라면, 2025년이 지나면 반드시 Java 17을 사용하셔야 합니다.

 

 Java 8 이후 버전을 사용 중이시라면, 이미 다음 세대로 가고 계신 중인 겁니다. 개인적으로 이미 넘어가신 거 Java 17을 부지런히 맞이하시기 바랍니다.


참고

 

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

 

Oracle Java SE Support Roadmap

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://spring.io/projects/spring-framework#support

 

Spring Framework

The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform. A key element of Spring is infrastructural support at the application level: Spring focuse

spring.io

https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html

 

Getting Started

If you are getting started with Spring Boot, or “Spring” in general, start by reading this section. It answers the basic “what?”, “how?” and “why?” questions. It includes an introduction to Spring Boot, along with installation instructions.

docs.spring.io

https://docs.spring.io/spring-boot/docs/2.7.x/reference/html/getting-started.html#getting-started.system-requirements

 

Getting Started

If you are getting started with Spring Boot, or “Spring” in general, start by reading this section. It answers the basic “what?”, “how?” and “why?” questions. It includes an introduction to Spring Boot, along with installation instructions.

docs.spring.io

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://spring.io/blog/2022/05/24/preparing-for-spring-boot-3-0

 

Preparing for Spring Boot 3.0

Spring Boot 2.0 was the first release in the 2.x line and was published on Feburary 28th 2018. We’ve just released Spring Boot 2.7 which means that, so far, we’ve been maintaining the 2.x line for just over 4 years. In total we’ve published 95 distin

spring.io

 

댓글