[JAVA, SPRING BOOT] 2024 자바 스프링 부트 버전
! Spring 개발자라면 Java 17, 21 버전을 사용하자 !
SpringBoot 2.x > 3.x으로 버전 업그레이드 간 버전 이슈에 대한 정리를 하고자 한다.
Java version
대부분의 자바 개발자들이 java 8, 11, 17을 사용하고 있다.
이 세 가지 버전이 많이 사용되는 이유는 해당 버전들이 LTS(Long Term Support) 버전, 즉 장기 지원 버전이기 때문이다.
보안 업데이트와 버그 수정이 장기간 지원되므로 안정적으로 운영할 수 있으며 이로 인해 광범위한 사용자 기반과 커뮤니티 지원을 받을 수 있다. 또한, 풍부한 라이브러리와 프레임워크가 이들 버전에 최적화되어 있어, 개발자들이 손쉽게 작성할 수 있는 장점이 있다.
Java version support
서포트 기간을 확인했을 때는 현재 출시된 LTS 어느 버전을 사용해도 안정적으로 관리할 수 있다.
- 일반 지원 : 소프트웨어 주된 지원 기간으로, 정기적인 업데이트, 버그 수정, 보안 패치, 새로운 기능 추가
- 확장 지원 : 일반 지원 기간 이후의 기간으로, 중요한 보안 패치와 긴급 버그 수정을 제공하지만, 새로운 기능 추가나 성능 개선은 거의 없으며, 추가 비용이 발생할 수 있다. (Java 11의 경우 확장 지원 기간이 6년 늘어나 2032년까지 지원 가능)
Java Version 선택의 기준
- Spring Boot 상위 버전과 호환이 되어야 한다. -> 17 이상의 버전 선택 (Spring Boot 3.x는 자바 17 이상을 요구)
- 서포트 기간이 길어야 한다. -> 가급적 최신 LTS 버전 선택 (안정성, 보안 업데이트 장기간 제공)
- 최신 기능들을 사용하고 싶다. -> 버전 별 추가된 기능을 보고 선택
- 기존 코드와의 호환성 유지 -> 버전 간 호환성 검토
- 보안 업데이트를 중요시한다. -> 최신 버전 선택(최신 보안 패치가 적용된 버전을 선택해 보안 취약점을 최소화할 것)
- 라이브러리 및 프레임워크의 지원 -> 필요한 라이브러리의 호환성 확인
Spring Boot version support
장기 지원, 최신 기능, 향상된 성능 등의 이유로 Spring Boot 2.7.x 버전 또는 3.1.x 버전 이상을 사용하는 것이 좋을 것으로 보인다.
- Spring Boot 2.x: 주로 Java 8 및 11을 지원하며, 최신 기능을 위해서는 Java 14, 15, 16을 이용할 수 있다.
- Spring Boot 3.x: Java 17 이상을 요구하며, 최신 버전의 기능과 성능을 활용할 수 있다.
Java 17 또는 Java 21을 쓰자
- Spring Boot 3.2.x + Java 17 또는 Spring Boot 3.2.x + Java 21
- Spring Boot 2.7.x + Java 8 (Java 8을 꼭 써야 하는 경우)
SpringBoot 2.x > 3.x으로 버전 업그레이드
Java 8 에서 Java 21(Gradle 8.5 적용 - JDK 21 버전 적용을 위한 최소 버전)로 업그레이드 -> Virtual Thread 지원
Virtual Thread
자바의 동시성 프로그래밍을 보다 간편하고 효율적으로 만들기 위해 설계된 경량 스레드
- OS스레드를 그대로 사용하지 않고 JVM 자체적으로 스케줄링을 통하여 사용할 수 있는 새롭게 추가된 경량 스레드
- 시스템 콜과 같은 커널 영역의 호출이 적고, 메모리 크기가 일반 스레드의 1% 정도로 컨텍스트 스위칭 비용이 적다.
- Blocking 발생 시 대기하지 않고 내부 스케줄링을 통하여 I/O, Sleep 등의 작업을 진행하는 동안 다른 가상 스레드의 작업을 처리할 수 있다.
자바와 스프링 부트 버전의 관계는 매우 중요하다. 두 기술의 호환성과 기능적 특성을 이해하는 것은 애플리케이션 개발에 있어서 핵심적이라고 할 수 있다. 스프링 부트는 특정 자바 버전과의 호환성을 고려해서 개발되며, 각 자바 버전에서 추가된 기능들은 스프링 부트에서도 활용될 수 있기 때문이다.
각 버전의 기능과 호환성을 이해하여 안정적이고 효율적인 애플리케이션 개발을 진행해 나가야 한다. 프레임워크, 플랫폼, 기술 스택 등의 버전을 관심 있게 지켜보는 것도 의미 있는 일이 될 것이다.