면접 질문에서 왜 자바 17을 쓰셨나요? 왜 21을 쓰셨나요?
너무 두려운 질문입니다...
"자바 버전이 그렇게 차이가 있는가? 내 서비스에 맞는 자바 버전은?"
이런 의문을 가지고 포스팅을 해보겠습니다.
2020년에는 java 8을, 2024년에는 java 17을 가장 많이 쓰는 것을 볼 수 있다.
변화 추이를 보면 점점 많이 쓰는 자바 버전이 높아지는 것을 볼 수 있다.
그럼 왜 쓰는 java 버전이 높아지는 것이며, 각 버전마다 어떤 부분들이 업데이트가 되었을까?
여기 java 버전별 특징을 잘 나타낸 글이 있다.
그럼 이 많은 버전들 중에서 왜 java 8, 11, 17, 21이 많이 언급되는 걸까?
그 이유는, oracle의 Long-Term Support(LTS) 정책과 Java의 생태계 발전에 따라 주요 버전으로 자리잡았기 때문이다.
그림을 보면 8,11,17,21이 LTS라는 것을 알 수 있다.
LTS(Long-Term Suppert, 장기 지원) 버전은 장기간, 즉 18개월간 유지 관리하는 소프트웨어 릴리스이다. 이 기간에는 기존 기능을 중단할 수 있는 새 기능을 도입하지 않고, 보안 패치 및 중요한 버그 수정과 같은 정기 업데이트를 제공한다.
LTS 버전은 최신 기능보다 안정성, 신뢰성, 장기적 유지 관리를 우선시하는 고객을 위해 고안됐다.
지원 기간 | 안정성 vs 혁신 | 이용 고객의 업그레이드 빈도 | |
---|---|---|---|
LTS | 18개월 지원 | 안정성과 보안 중시 | 업그레이드 빈도가 덜함 |
일반 | 6개월 지원 | 새로운 기능 자주 도입 | 최신 상태 유지를 위해 자주 업그레이드 필요 |
다운타임이 발생하면 수습 비용이 많이 드는 중요 업무용 시스템이나 환경에 적합하다. LIS 버전을 사용하면 장기간에 걸쳐 안정된 버전을 사용하고 지원을 받을 수 있으므로 안심할 수 있다.
최신 기능과 개선 사항을 중시한다면 일반 버전이 더 적합하다. 일반 버전을 이용하면 업데이트를 자주 해야 할 수 있지만, 최신 기능을 접할 수 있다.
그래서 기업보다는 개인 개발자나 최신 기술을 실험하는 데 사용된다.
각 상황에 맞는 버전을 선택하면 된다. 기업과 같은 경우에는 안정성 때문에 LTS 버전을 많이 쓴다.
각 LTS 버전별 특징을 살펴보자
Java 8 (2014년 출시)
첫 번째 LTS 버전으로, 많은 개발자와 기업이 오랫동안 사용.
Lambda, Stream API, Optional과 같은 기능이 도입되어 Java의 생산성을 크게 향상.
여전히 많은 레거시 시스템에서 사용 중.
Java 11 (2018년 출시)
두 번째 LTS 버전으로, Java 8 이후 새로운 기능과 성능 개선을 포함.
var 키워드, 새로운 GC(Garbage Collector) 옵션, HTTP Client API 등이 도입.
상용화된 애플리케이션에서 Java 8을 대체하며 널리 사용.
Java 17 (2021년 출시)
세 번째 LTS 버전으로, 최신 언어 기능과 보안 강화가 포함.
sealed classes, pattern matching, switch 표현식 등이 추가.
기업 환경에서 점차 Java 11을 대체하는 중.
Java 21 (2023년 출시)
네 번째 LTS 버전으로, 가장 최신의 안정된 기능과 장기 지원 제공.
Virtual Threads (Project Loom), Record Patterns 등 혁신적인 기능 포함.
클라우드 네이티브 환경과 최신 애플리케이션에서 사용 증가.
그럼 java 버전은 선택했고, spring boot 버전은 어떻게 해야할까?
Spring boot 3.0 부터는 java 17이 필요하다고 한다.
만약 java 21의 virtual thread 부분을 쓰고 싶다면 스프링 부트 3.2 버전 이상을 선택해야 한다.
Virtual Thread에 대해 알고 싶다면?
[4월 우아한테크세미나] ‘Java의 미래, Virtual Thread’
참고할 블로그
17버전과 21버전을 굳이 쓰는 이유가 있었군요. 많은 도움이 되었습니다.
잘 보고 갑니담!!