항상 헷갈리고 애매한 것이 Java JRE/JDK 버전별 EOS 및 라이센스 정책인 것 같더군요.

이 글에서는 Java JRE(Java Runtime Environment)와 JDK(Java Development Kit)의 버전별 EOS(End of Service/Support) 시기와 라이센스 정책에 대해 알아보겠습니다.

 

1. Oracle Java 라이센스 정책 변화

2019년 1월, 오라클은 자바의 라이선스 정책을 크게 변경했습니다. 이전까지 무료로 제공되던 Oracle JDK가 유료화되면서 많은 기업과 개발자들이 대안을 찾게 되었습니다.

오라클 라이선스 변경의 주요 내용

오라클의 라이선스 변경은 크게 다음과 같은 내용을 포함합니다:

  • 2019년 1월부터 Oracle JDK의 상업적 사용에 대해 유료 구독 모델 도입
  • Oracle Java SE Subscription 서비스를 통한 기술 지원 및 업데이트 제공
  • 개인 사용자, 개발 환경, 테스트 용도로는 여전히 무료 사용 가능
  • Java SE 8, 11, 17, 21과 같은 LTS(Long-Term Support) 버전에 대한 장기 지원 제공

이러한 정책 변경으로 인해 기업들은 세 가지 선택지를 갖게 되었습니다:

  1. Oracle Java SE Subscription 구독
  2. OpenJDK나 다른 무료 배포판으로 전환
  3. 라이선스 종료 이전 버전의 Oracle JDK 계속 사용(보안 업데이트 없음)

 

2. Java 버전별 EOS(End of Support) 일정

Java의 버전별 지원 종료 일정을 이해하는 것은 기업의 인프라 계획에 중요합니다. 다음은 주요 Java 버전별 지원 종료 일정입니다.

Oracle JDK의 버전별 지원 종료 일정

버전 출시일 일반 지원 종료 확장 지원 종료 LTS 여부
Java 6 2006.12 2013.02 2018.12
Java 7 2011.07 2015.04 2022.07
Java 8 2014.03 2022.03(개인용)<br>2030.12(상업용 구독) LTS
Java 9 2017.09 2018.03
Java 10 2018.03 2018.09
Java 11 2018.09 2023.10 2026.10 LTS
Java 17 2021.09 2026.09 2029.09 LTS
Java 21 2023.09 2028.09 2031.09 LTS
Java 25(예정) 2025.09 2030.09 2033.09 LTS

참고로 Oracle Java SE 8 이후부터는 오라클이 LTS(Long-Term Support) 체계를 도입했으며, 일반적으로 LTS 버전은 약 8년간의 지원을 받습니다. Java 8과 Java 11의 경우 사용자의 높은 수요로 인해 지원 기간이 연장되었습니다.

Oracle JDK 버전별 특징 및 주요 변화

  • Java 8: Lambda 표현식, Stream API, 새로운 날짜/시간 API 도입 등 대규모 기능 업데이트
  • Java 9: 모듈 시스템(Project Jigsaw) 도입, JShell 추가
  • Java 11: HTTP 클라이언트 API 표준화, 람다에서의 var 사용, ZGC 도입
  • Java 17: 패턴 매칭, Sealed 클래스, 외부 메모리 API 개선
  • Java 21: 가상 쓰레드, 패턴 매칭 강화, 스트링 템플릿 등 도입

 

3. Oracle Java SE Subscription 비용 정책

Oracle Java SE Subscription은 기업이 Java를 상업적으로 사용할 때 필요한 라이선스와 지원 서비스를 제공합니다. 비용 구조는 크게 데스크톱과 서버로 나뉩니다.

Java SE Desktop Subscription

  • 대상: 데스크톱에서 Java 애플리케이션을 업무용으로 실행하는 환경
  • 과금 방식: 사용자 수 기준
  • 적용 대상: 일반 직원 포함, 정규직, 계약직, 임시직 모두 포함
  • 활용 사례: 금융권이나 제조 라인에서 Swing 자바 애플리케이션을 업무에 사용하는 경우

Java SE Server Subscription

  • 대상: 서버에서 Java 애플리케이션을 실행하는 환경
  • 과금 방식: 프로세서(코어) 수 기준
  • 할인 요소: x86 프로세서의 경우 Core Factor 0.5 적용(50% 할인)
  • 계약 기간: 1년 또는 3년 단위 계약

Oracle Java SE Universal Subscription

2025년 기준, 오라클은 Java SE Universal Subscription을 제공하고 있으며, 이는 이전의 Java SE Subscription 모델을 대체합니다. 이 구독은 다음과 같은 혜택을 제공합니다:

  • 전사적 Java SE 설치에 대한 라이선스
  • 비용 효율적인 업데이트 및 업그레이드 관리
  • 온프레미스 및 클라우드 환경 모두 지원
  • Java 관리 서비스를 통한 모니터링 및 관리 기능
  • Enterprise Performance Pack을 통한 성능 향상

 

4. 무료 OpenJDK 대안과 비교

Oracle JDK의 유료화 이후, 많은 기업과 개발자들이 무료로 사용할 수 있는 OpenJDK 기반 배포판으로 이동하고 있습니다. 주요 대안 배포판들은 다음과 같습니다.

주요 OpenJDK 배포판 비교

배포판 개발사 특징 지원 플랫폼 상업적 지원
Eclipse Temurin Eclipse Foundation 벤더 중립적, TCK 인증, 광범위한 기업 지원 다양한 OS 및 아키텍처 별도 구독 필요
Azul Zulu Azul Systems 광범위한 플랫폼 지원, JRE 빌드 제공 거의 모든 OS 및 아키텍처 유료 지원 가능
BellSoft Liberica BellSoft Spring Boot 기본 JDK, 경량화 옵션 Alpine Linux 포함 다양한 플랫폼 유료 지원 가능
Amazon Corretto Amazon AWS 최적화, 장기 지원 Linux, Windows, macOS AWS 한정 지원
Red Hat OpenJDK Red Hat RHEL 통합, 기업 환경 최적화 RHEL, Windows RHEL 구독 포함
Microsoft Build of OpenJDK Microsoft Azure 최적화 Linux, Windows, macOS Microsoft 지원

OpenJDK 배포판 선택 시 고려 사항

OpenJDK 배포판을 선택할 때는 다음과 같은 요소를 고려해야 합니다:

  1. 지원 기간: 각 배포판마다 버전별 지원 기간이 다름
  2. 업데이트 주기: 대부분 분기별 업데이트 제공
  3. TCK 인증 여부: Java SE 표준 준수 여부 확인
  4. 플랫폼 지원: 필요한 OS 및 아키텍처 지원 여부
  5. 상업적 지원: 기술 지원 서비스 이용 가능 여부
  6. 성능 최적화: 특정 환경에 대한 최적화 여부
  7. 추가 기능: JFX 포함 여부, 경량화 옵션 등

 

5. VMware와 OpenJDK

VMware는 이전에 Pivotal의 일부로 OpenJDK 배포판을 제공했으며, 현재는 VMware Tanzu Distribution of OpenJDK라는 이름으로 제공하고 있습니다. 이 배포판은 BellSoft Liberica 배포판을 기반으로 하며, 지원 종료 일정도 BellSoft Liberica의 일정을 따릅니다.

VMware Tanzu Distribution of OpenJDK는 다음과 같은 특징을 가지고 있습니다:

  • BellSoft Liberica JDK를 기반으로 함
  • Spring Boot 및 Spring 애플리케이션과의 호환성 최적화
  • VMware 제품과의 통합 지원
  • 클라우드 네이티브 환경에 최적화

 

6. Java 버전 선택시 체크할 사항

기업이나 개발자가 자바 버전을 선택하거나 마이그레이션할 때 고려해야 할 부분을 알아보겠습니다.

버전 선택 시 고려 사항

  1. 애플리케이션 요구사항: 필요한 Java 기능 및 API 지원 여부
  2. 보안 업데이트: 지원 종료 일정 및 보안 패치 가용성
  3. 라이선스 비용: Oracle JDK 사용 시 발생하는 비용
  4. 개발 환경: 사용 중인 프레임워크 및 라이브러리의 호환성
  5. 성능 요구사항: 가비지 컬렉션, 메모리 관리 등의 성능 향상 필요 여부

마이그레이션 시 고려 사항

  1. 현재 상황 평가: 현재 사용 중인 Java 버전과 애플리케이션 의존성 파악
  2. 목표 버전 선택: 비즈니스 요구사항에 맞는 적절한 버전 선택
  3. 호환성 테스트: 애플리케이션 및 라이브러리 호환성 테스트
  4. 단계적 전환: 중요도가 낮은 시스템부터 단계적으로 마이그레이션
  5. 모니터링 및 최적화: 마이그레이션 후 성능 및 안정성 모니터링

 


이 포스트는 2025년 5월 기준 정보로 작성되었으며, 정책이나 일정은 변경될 수 있습니다. 정확한 정보는 Oracle의 공식 웹사이트나 문서를 참조하시길 부탁드려요:)

 

댓글 남기기