..
(번역) 올바른 JDK 버전 선택하기: 비공식 가이드
원문을 짧게 요약한 글입니다.
1. 소개
- 최신 버전의 JDK는 더 나은 보안과 성능을 제공
- 자바 버전을 유지하면 업데이트 vs 자바 버전을 올리면 업그레이드
- Feature Release
- 새로운 API, 기능, 함수가 추가되는 메이저 패치
- JDK 8, 9, 10처럼 표현됨
- 특정 버전(8, 7, 21 등)은 장기 지원(LTS)이 제공됨
- Update Release
- Feature Release에 포함되는 마이너 패치
- JDK 8u411, JDK 21.0.3처럼 표현됨
2. 업데이트와 업그레이드
- 업데이트
- 상대적으로 높은 호환성 위험
- 보안이나 성능 개선 위주
- 업그레이드
- 상대적으로 낮은 호환성 위험
- 코드를 변경하기 쉬운 새로운 기능 제공
- 코드를 변경하지 않더라도…
- 더 빨리 시작(start up)
- 더 빨리 최대 성능에 도달(warmup)
- 더 빨리 실행(throughput)
- 더 효율적으로 자원 사용
- 안정성과 효율성
- 두 마리 토끼를 모두 잡을 순 없을까?
- 있다. JDK를 여러 개 사용하자.
3. 여러 런타임 사용하기
- 단일 JDK
- 과거에는 제약사항이 있었다
- 자바 업데이트의 간격이 길고
- 하드 드라이브의 용량이 작았음
- flag days를 정해서 한 번에 모두 업그레이드 했었음
- 과거에는 제약사항이 있었다
- 다중 JDK
- 이젠 제약사항이 사라졌다
- 더 많은 메모리와 스토리지
- 컨테이너와 시스템 격리 기술 발전
- 애플리케이션마다 다른 자바 런타임을 제공해 컨테이너화(jlink, java packager)
- 이젠 제약사항이 사라졌다
4. 애플리케이션별 가이드라인
4-1. 신규 개발이 한창이라면…
- 최신 Feature Release
- 조금이라도 더 최신 버전으로 땡겨 놔야 한다
4-2. 개발 초기, 최소 1년은 지나야 출시 예정이라면…
- 최신 Feature Release
- LTS를 사용해야 하는 것 아닌가? 싶겠지만
- 그렇게 빨리 출시되리라는 보장이 없다. 개발 중에 새 LTS가 나올수도
- 최신 버전을 사용해 두면 다음 LTS로 넘어가기도 쉽다
4-3. 개발 막바지, 출시가 1년이 채 안 남았다면…
- 최신 LTS, 단 최소 9개월이 지난
- 우리 애플리케이션만 최신 버전이라고 다 되는 게 아니다
- 9개월은 서드 파티 컴포넌트들이 새로운 LTS에 대응할 최소한의 시간
4-4. 이미 운영중이고 수정이 활발하다면…
- 최신 LTS, 단 최소 2년이 지난
- 어차피 활발히 고치고 있다면 마이그레이션 계획도 같이 세울 수 있을 것
- 최신 LTS를 고르는 시점은 애플리케이션에 더 이상 수정이 없는 상태일 때
4-5. 이미 운영중이고 수정이 많지 않다면…
- 변경하지 말 것
- 예외
- 사용중인 JDK 지원이 1년 내로 끝날 경우
- 의존성이나 타사 라이브러리의 지원 기간이 JDK 지원 기간보다 짧을 경우
- 메모리나 CPU 사용량이 너무 높을 경우