오라클 자바 라이센스 정리: Oracle Java SE Subscription

오라클 자바 라이센스 정리: Oracle Java SE Subscription

오라클 자바 서브스크립션(Oracle Java SE Subscription)

2019년 1월부터 Oracle Java SE Subscription(이하 Java Subscription)이 시행됩니다. 현재 운영중인 자바 시스템에 Java Subscription을 구독할지를 결정을 하기 위해서는 여러가지 판단 근거가 필요합니다. 내 시스템에 Java Subscription이 정말 필요한지, 2019년 1월까지 바로 결정을 해야 하는 것인지, Subscription 구독 결정을 시간을 두고 결정할 수 있는 것인지, Java Subscription의 대상 범위가 어디까지인지, 개발자 컴퓨터와 테스트 서버도 Java Subscription에 포함 시켜야 하는지, 오라클 솔루션에 포함된 Java를 사용해도 되는지, 기술 지원이 제공되는 Java 버전은 무엇인지, Java SE 최신 Update를 쓰면 정말 좋은 것인지 등 여러 가지를 고민해야 합니다. Java Subscription 구독 모델이 생소하고 관련 정보 부족으로 어려워하시는 분들이 많은 것 같습니다. Java Subscription에 대하여 가장 빈도가 높은 질문을 중심으로 관련 정보를 정리해 보겠습니다. 본 문에서는 다음과 같은 내용을 포함합니다.

  • Oracle Java SE Subscription이란 무엇인가?
  • Oracle Java SE Subscription 가격 산정 방법?
  • Oracle Java SE Subscription의 대상 자바 버전은 무엇인가?
  • 기존에 사용하던 공개 버전 Oracle Java SE를 계속 사용할 수 있는가?
  • 데스크톱 컴퓨터도 Oracle Java SE Subscription 적용 대상인가?
  • 개발자 컴퓨터도 Oracle Java SE Subscription 적용 대상인가?
  • 오라클 솔루션에 포함된 Oracle Java를 다른 자바 애플리케이션이 사용할 수 있는가?
  • Oracle Java SE 업데이트에서는 무엇이 개선되는가?
  • Oracle Java Archive에서 계속 공개 버전을 다운로드 받을 수 있는가?

실무에서 Oracle Java SE(이하 Oracle Java)를 사용하시는 분들께서 물어보시는 항목은 대략 이 정도입니다. 위 질문 사항을 인터넷에 공개된 오라클 문서를 기준으로 정리해 보겠습니다. 이 글은 오라클의 공개 문서를 근거로 각 항목을 정리하는 것을 목표로 합니다. 그러나 문서를 작성하는 과정에서 작성자의 주관적 판단과 해석이 포함될 수 있습니다. 이런 이유로 본문은 오라클의 공식적인 입장과 다를 수 있습니다. 이 글은 “Oracle Java SE Subscription”에 대해서 고민하실 때, 참고 문서 정도로 봐주셨으면 합니다.

자바 버전 표기법은 과거에 Java 1.5, Java 1.6 등 1.x 방식에서 Java 7, Java 8과 같은 방식으로 변경되었고 최근에 Java 11을 Java 18.9로 출시월을 기준으로 표현하는 방식으로 변경되었습니다. 이 문서에서는 자바 버전을 표현하는 일관성을 위해서 Java 6, Java 7, Java 8, Java 11 형식을 일괄적으로 사용하겠습니다.

Oracle Java SE의 서포트 로드맵과 관련 용어

본론으로 들어가기에 앞서 Oracle Java SE(이하 Oracle Java) 서포트 로드맵에서 사용하는 주요 용어를 먼저 알아보고, Oracle Java 서포트 로드맵을 일정을 살펴보겠습니다. 본문은 이 절에서 설명한 용어와 Oracle Java 서포트 로드맵을 기준으로 진행하겠습니다. Oracle Java 서포트 로드맵에서 사용하는 주요 용어는 다음과 같습니다.

  • GA Date: Oracle Java 출시일
  • Oracle Java SE Public Update: OTN(Oracle Technology Network)에 배포되는 공개 버전(Public Release) Oracle Java
  • End of Public Update(EoPU)
    • Oracle 소프트웨어의 Public Update 종료일
    • Oracle Java는 버전 별로 EoPU가 계획 Oracle Java 서포트 로드맵에 정의
  • Premier Support
    • Oracle Java의 유상 기술 지원 서비스
    • 24X7 기술 지원 (My Support Oracle)
    • 해당 버전의 “End of Public Update” 이후에 Premier Support 기간까지 Oracle Java의 업데이트 계속 제공
  • Premier Support End
    • Premier Support 서비스의 종료일.
  • Extended Support 서비스
    • Premier Support 서비스 종료 후 3년간 추가 기술 지원을 유지하는 서비스
    • 24X7 기술 지원 (My Support Oracle)
    • 해당 버전의 “Premier Support End” 이후 3년간 Oracle JDK의 업데이트는 계속 제공
  • Extended Support End
    • Extend Support 서비스의 종료일
  • LTS: Long Term Support
    • LTS는 소프트웨어 지원 일정
    • Oracle Java 중 LTS 지원 버전은 출시 후 8년간 보안 업데이트와 버그 수정 지원

Oracle Java의 서포트 로드맵은 다음 일정으로 관리됩니다.

Release GA Date End of Public Update Premier Support End Extended Support End
Java 5 2004.05 2009.10 2011.05 2015.05
Java 6 2006.11 2013.02 2015.12 2018.12
Java 7 2011.06 2015.04 2019.01 2022.07
Java 8 2014.03 2019.01 2022.03 2025.03
Java 9(non-LTS) 2017.09 2018.03 2018.03 N/A
Java 10(18.3, non-LTS) 2018.03 2018.09 2018.09 N/A
Java 11(18.9, LTS) 2018.09 N/A 2023.09 2026.09

Oracle Java SE의 서포트 로드맵을 차트로 표현하면 다음과 같습니다.

  • 그림 1. Oracle Java SE 지원 로드맵

‘Oracle Java SE Subscription’란 무엇인가?

Oracle Java SE Subscription(이하 Java Subscription)은 Oracle Java SE의 기술 지원을 받은 구독 모델입니다. Java Subscription을 취득하면 3가지 서비스가 제공됩니다.

  • 서비스 1: Public Release가 아닌 비공개 Oracle Java SE를 사용할 권리
  • 서비스 2: MOS(My Oracle Support)로부터 Java 7, 8, 11 버전의 기술 지원 서비스 이용 권한(24X7)
  • 서비스 3: Oracle Java SE의 상용 기능의 사용 권리
    • Java Flight Recorder
    • Java Mission Control
    • ZGC(Z Garbage Collector)
    • Application Class-Data Sharing

기술 지원을 받는 ‘서비스 2’와 새로운 소프트웨어 사용의 ‘서비스 3’은 명확한 것 같습니다. 그러나 ‘서비스 1’은 이해하기 조금 어렵습니다. 실제로 많은 분이 혼란스러워하는 부분입니다.

공개 버전 Oracle Java는 GA 릴리즈 이후에 EoPU 전까지 OTN(Oracle Technical Network, http://www.oracle.com)에 “public release” 라벨을 달고 배포된 버전을 의미합니다. 이 정보는 Oracle Java의 Release Note 페이지에서 확인할 수 있습니다. (버전별로 공개 버전을 확인하는 방법을 별로도 다루겠습니다.) 이제부터 공개 버전 Oracle Java가 아닌 모든 것을 ‘비공개 Oracle Java’라고 표현하겠습니다.1

2019년 1월부터 OTN(http://www.oracle.com)에서는 새로운 Oracle Java 공개 버전(Public Release)을 발표하지 않을 것입니다. 2019년 1월부터 오라클은 모든 Oracle Java를 ‘비공개 Oracle Java’ 형태로 릴리즈 하겠다고 발표했습니다. 따라서 2019년 이후에 발표되는 모든 Oracle Java는 ‘비공개 Oracle Java’이며 Oracle Java 최신 버전을 사용하기 위해서는 Java Subscription이 필요합니다.

이렇게 설명하면 Java Subscription은 최신 버전 Oracle Java를 사용하기 위한 라이센스라고 오해하기 쉽습니다. ‘서비스 1’은 ‘비공개 Oracle Java’를 사용하는 권리입니다. 예를 들어서 Oracle Java 6을 현재 사용하고 있고, 현재 사용하는 Oracle Java 6은 ’비공개 Oracle Java’라면, 이 Oracle Java 6를 계속 사용하기 위해서는 Java Subscription이 필요합니다.

이렇게 2019년 1월부터 ‘비공개 Oracle Java’를 사용할 경우에는 Java Subscription이 필요합니다.

‘Oracle Java SE Subscription’를 바로 구독해야 하는가?

Java SE Subscription 구독 여부는 현재 사용하고 있는 Oracle Java가 상태에 따라 달라집니다. 현재 비공개 Oracle Java를 사용하고 있다면 Java SE Subscription를 구독하든지 아니면 사용하는 Oracle java를 공개 버전으로 전환해야 합니다. Oracle Java 업데이트 체계를 보면 비공개 Oracle Java 버전은 공개 Oracle Java의 상위 버전(업데이트)입니다. 실무 환경에서 자바 런타임을 하위 버전으로 전환하는 것은 상당히 어렵고 골치 아픈 문제입니다.

현재 Java 6는 Extended Update가 끝나가고 있고, Java 7은 Premier Updata 기간입니다. Java 8의 경우 Public Update입니다. 구체적인 확인이 필요하지만 Java 8을 사용하시는 분들은 아마도 공개 버전 Oracle Java일 가능성이 큽니다. Java 5, 6와 7을 사용하시는 분들은 여러 경로(?)로 확보한 비공개 Oracle Java를 사용하실 가능성이 상대적으로 높습니다.^^

현재 사용하는 Java가 비공개 Oracle Java 버전이라면 라이센스 구독 혹은 자바 런타임을 공개 버전으로 전환의 빠른 조치가 필요합니다. 반대로 현재 사용하는 자바 런타임이 공개 Oracle Java라면 여유가 있습니다. 공개 Oracle Java를 사용하는 것은 2019년 이후에도 라이센스 위반이 아닙니다. Oracle Java SE 구독을 고민한 여유가 있습니다.

Oracle Java의 비공개/공개 버전 확인 방법과 이전 버전 사용에 대한 부분은 아래에서 다시 다루겠습니다.

‘Oracle Java SE Subscription’ 가격 산정 방식

웹상에 공개된 Java Subscription 가격 정보는 다음과 같습니다.

가격 모델은 데스크톱과 서버로 나뉘며, 데스크톱은 사용자 수 단위이고 서버는 프로세스(core) 단위로 가격이 책정되어 있습니다. 위에서 책정된 가격은 월 단위 가격이며 단위는 달러입니다. 수량2에 따라서 사용량이 많을 경우 가격은 50%까지 내려갑니다. 또한 이 라이센스는 컴퓨터의 CPU가 x86인 경우 Core Factor 0.5가 적용됩니다. 여기서 Core Factor는 CPU 유형에 따라서 기존 라이센스 비용에 적용되는 비율입니다. 컴퓨터가 x86 프로세스에 Core Factor 0.5가 적용된다는 의미는, 대상 서버의 CPU가 x86일 경우 Oracle Java SE Subscription 가격을 50% 할인한다는 의미입니다. 계약 기간은 1년과 3년 단위로 계약을 합니다.

예를 들어서 8 core 서버를 운영할 경우 1년 Oracle Java SE Subscription 모델의 공식 가격은 다음과 같습니다. 아래 산정은 수량이 적어서 수량 할인이 적용되지 않는 상황을 가정합니다.

Oracle Java SE Subscription 가격 예시: 8 core x86 CPU 서버 1년 구독 금액
$$8 core * $25/core/month * 12month * 0.5 = $1,200$$

Oracle Java Subscription의 대상 자바 버전

앞에서 Java Subscription의 구성에서 설명한 것처럼, Subscription의 핵심 서비스는 ‘비공개 Oracle Java’를 사용하는 권한과 Oracle Java의 기술 지원 권한입니다.

서비스 1의 ‘비공개 Oracle Java’ 사용의 경우 모든 Oracle Java 버전이 대상이 됩니다. 즉 사용하는 Java가 ‘비공개 Oracle Java’라면 버전에 상관없이 Java Subscription을 구독해야 합니다.

서비스 2는 MOS(My Oracle Support)로부터 기술 지원을 받는 권한에 대해서는 Oracle Java 서포트 로드랩의 영향을 받습니다. Oracle Java 서포트 로드맵에 따르면 2019년 1월을 기준으로 java 6는 Extended Support End까지도 종료됩니다. 자바 서포트 로드랩을 기준으로 오라클은 2019년 1월 이후에 Java 6에 대한 업데이트와 기술 지원을 제공하지 않습니다. 또한 Java 9과 Java 10의 경우 LTS 지원 버전이 아니며, 공식적으로 2018년 3월과 9월로 지원이 종료되었습니다. 따라서 2019년 1월 시행되는 Java Subscription의 대상 Oracle Java 버전은 EoPU가 끝나고 Premier Support End가 되지 않은 버전이 대상이 됩니다. 즉 Oracle Java Subscription의 대상 버전은 Oracle JDK 7, 8과 11이 ‘서비스 2’의 MOS(My Oracle Support)의 기술지원 버전이 됩니다.

요약하면 ‘서비스 1’은 모든 버전의 ‘비공개 Oracle Java’ 업데이트가 대상이 됩니다. ‘서비스 2’의 경우 MOS에서 지원받는 기술 지원 버전은 Java 7 ,8 및 11이 됩니다.

기존에 사용하던 공개버전 Oracle Java SE를 계속 사용할 수 없는가?

운영 시스템의 자바 런타임은 최신 버전으로 안전하게 관리하는 것이 중요합니다. 그러나 실무에서 자바 기반 시스템을 운영하는 현실은 녹록지 않습니다. IT 시스템 담당자 입장에서 “운영에 문제가 없는 시스템은 건드리지 않는다.“가 철칙입니다. 자바 런타임을 Java 6에서 Java 8로 업그레이드하는 작업을 계획 중이라면, 시스템 담당자 입장에서는 악몽일 것 입니다.

현실이 이렇다 보니 “현재 사용하는 자바 버전을 2019년 1월 이후에도 계속 사용할 수 있는가?“에 대해 궁금해하시는 분들이 많습니다. 현재 사용하는 Oracle Java가 공개 버전이라면 앞으로 계속 사용할 수 있습니다. 물론 전제 조건이 있습니다.

  • 현재 사용하는 Oracle Java는 공개 버전이다
  • 새로운 신규 업데이트 버전으로 Java를 업그레이드할 계획이 없다
  • 현재 상태를 유지하는 것이 가장 중요하면, 추가 기능 개발 계획이 없다.
  • MOS(My Oracle Support)는 고려 대상이 아니다.

물론 자바 환경을 최신 버전으로 유지하여 버그 수정이 이뤄지고 보안 취약성이 개선된 안전한 시스템을 관리하는 것도 중요하지만, 현재 시스템에 변화를 주는 결정을 하기 어렵고 현재 상태를 유지하는 것이 가장 중요한 경우도 있습니다. 이런 상황에서 현재 사용하는 Oracle Java가 공개 업데이트 버전이라면, 내년에도 이 Oracle Java를 계속 사용할 수 있습니다.

여기서 문제는 현재 사용하는 자바가 공개 버전인지 비공개 버전인지 확인해야 합니다. 이것을 확인하기 위해서는 사용하고 있는 java의 버전과 업데이트를 확인해야 합니다. 현재 자바를 사용하는 서버에서 java --version을 실행하여 자바 버전과 업데이트 변화를 확인할 수 있습니다.

> java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
>

위 로그는 제 노트북에서 java --version를 실행한 결과입니다. 위 로그에서 자바 버전, 업데이트 번호 및 빌드 번호를 확인할 수 있습니다.

  • Java 버전: 1.8
  • 업데이터 번호: 161
  • 빌드 번호: b12

Java 버전과 업데이트 번호로 현재 사용하는 Oracle Java가 공개 버전인지 비공개 버전인지 확인할 수 있습니다.

Oracle Java 6의 공개 버전 확인

아래 목록은 위 링크의 목록을 정리한 내용입니다.

- 그림 6. Oracle java 6의 공개 버전 목록

현재 Oracle Java 6을 사용하고 있고 업데이트 번호가 위 목록에 포함되어 있다면, 그 번호는 공개 버전입니다. Oracle Java 6의 EoPU는 업데이트 45에서 종료되었습니다.

Oracle Java 7의 공개 버전 확인

Oracle Java 7의 공개 버전은 목록은 다음 링크에서 확인할 수 있습니다.

현재 Oracle Java 7을 사용하고 있고 업데이트 번호가 위 목록에 포함되어 있다면, 그 번호는 공개 버전입니다. Oracle Java 7의 EoPU는 업데이트 80에서 종료되었습니다.

Oracle Java 8의 공개 버전 확인

Oracle Java 7의 공개 버전은 목록은 다음 링크에서 확인할 수 있습니다.

현재 Oracle Java 8을 사용하고 있고 업데이트 번호가 위 목록에 포함되어 있다면, 그 번호는 공개 버전입니다. Oracle Java 8의 EoPU 2019년 01입니다. 2018년 11월 15일 현재 최종 업데이트 번호는 192입니다.

- 그림 7. Oracle java 8의 업데이트 번호로 공개 버전 확인 예시

데스트톱 컴퓨터도 Java Subscription 적용 대상인가?

Oracle Java SE Subscription이 발표되었을 때, 가장 많은 논란이 된 것은 자바 개발자 컴퓨터도 Subscription 대상이 되는가에 대한 질문입니다. <그림 2>의 가격 테이블 첫 부분에 “Java SE Desktop Subscription”이 나와 있다 보니 이 문제가 더 크게 주목받은 것 같습니다.

기본적으로 “Java SE Desktop Subscription”은 개발자 컴퓨터 초점을 맞추고 있지 않습니다. JRE를 설치하고 Java 애플리케이션을 데스크톱에서 업무로 돌리는 컴퓨터에 초점이 맞춰져 있습니다.

금융권이나 제조 라인에서 Swing 자바 애플리케이션을 업무에 사용하는 경우가 있습니다. 이렇게 데스트톱에서 자바 런타임(JRE)를 업무에 사용하는 상황을 고려한 구독 모델입니다. 물론 이 경우에도 공개 버전의 자바 런타임을 사용하고 있다면, Java Subscription이 필수 요건은 아닙니다.

“Java SE Desktop Subscription”의 경우에는 비공개 자바 런타임을 사용하기 위해서 Java Subscription을 구독하기 보다는, MOS(My Oracle Support)를 통해서 안정적인 기술 지원을 받기 위한 목적이 더 크다고 생각합니다.

정리하면 “Java SE Desktop Subscription”은 비공개 버전의 자바 런타임을 사용해야 하거나, 기술 지원을 통해서 안전한 데스크톱 애플리케이션 운영 환경을 구성해야 하는 경우에 필요한 구독 모델입니다.

개발자 컴퓨터도 Java Subscription 적용 대상인가?

개발자 컴퓨터의 Java Subscription 적용 여부는 선택사항입니다. 기본적으로 개발자 컴퓨터는 Java Subscription을 구독하지 않아도 됩니다. 물론 어떤 이유로 MOS의 자바 기술 지원이 필요한 상황이라면 Java Subscription을 구독할 수 있습니다.

개발자 컴퓨터는 Oracle Java SE Subscription의 적용 대상이 아니라는 근거는 OTN 자바 라이센스 전문에서 찾을 수 있습니다. 다음은 OTN 자바 라이센스 전문에 있는 “License Rights and Restrictions” 절의 내용입니다.

그림 8. OTN Java 라이센스 중 개발 환경 라이센스 출처: https://www.oracle.com/technetwork/java/javase/terms/license/javase-license.html

이 내용을 보면 “개발, 시험, 프로토타이핑 및 증명을 목적으로 사용하는 경우 라이센스를 부여함”으로 되어 있습니다. 따라서 운영 서버가 아닌 개발자 컴퓨터, 테스트 서버, 빌드 서버(Jenkins)와 같은 개발 관련 컴퓨터에 Subscription 적용은 선택 사항입니다. 기본적으로 Subscription을 적용하지 않아도 됩니다. 물론 꼭 기술 지원을 받고자 한다면 Subscription를 계약할 수 있습니다.

A라는 회사가 100 Core의 운영 서버, 10Core의 통합 테스트 서버, 8core의 빌드 서버, 4core의 Spring Batch 전용 서버, 10대의 자바 개발자 컴퓨터가 있다고 가정합니다. 이때 Oracle Java SE Subscription을 구독하려고 합니다. 구독 대상은 어떻게 될까요?

위 OTN 자바 라이센스 전문을 기준으로 볼 때, 확실한 Subscription 구독 대상은 100 core의 운영 서버와 4core의 Spring Batch 전용 서버입니다. 이 두 서버는 업무용이기 때문에 Subscription 구독 대상이 됩니다. 반면 10대의 자바 개발자 컴퓨터, 10 core의 통합 테스트 서버, 8core의 빌드 서버는 개발 목적과 테스트, 검증 목적이 명확하므로 Subscription 구독 대상이 아니라고 판단됩니다.

오라클 솔루션의 임베디드 Oracle Java를 다른 용도로 사용할 수 있나요?

오라클이 자바 솔루션에는 Oracle Java가 임베디드 형태로 포함되어 있습니다. 예를 들어서 Oracle WebLogic이나 Oracle Database에는 Oracle Java가 포함되어 있습니다. 이렇게 임베디드 형태로 포함된 Oracle Java는 비공개 버전이라고 할지라도 Java Subscription 대상에 포함되지 않습니다.

이렇게 임베디드 형태로 제공되는 Oracle Java를 다른 애플리케이션이 사용하는 것이 가능한가에 대해서 궁금해 하시는 경우가 많습니다.

일반적으로 임베디드 소프트웨어는 본래의 목적으로만 사용해야 합니다. 본래의 의도와 다르게 사용될 경우 라이센스 위반이 될 수 있습니다. 예를 들어서 WebLogic을 운영하는 서버에 Oracle Java가 임베디드 형태로 WebLogic과 Oracle Java가 함께 설치되어 있습니다. 이 서버에서 어떤 목적으로 Tomcat을 실행해야 하는 상황이 발생했습니다. 이 Tomcat 서버를 WebLogic에 포함된 Oracle Java로 실행하는 경우를 가정해 보겠습니다.

이 경우에 Tomcat이 WebLogic에 포함된 자바를 사용하는 것은 임베디드된 Oracle Java를 다른 목적3으로 사용한 것이기 때문에 라이센스 위반이 될 수 있습니다.

위와 같은 상황에서 Tomcat을 돌리기 위해서는 별도로 공개 버전 Oracle Java 혹은 OpenJDK를 설치하고 이것을 이용해야 합니다. WebLogic에 설치된 내장된 Oracle Java를 사용하기 위해서는 Java Subscription을 별도로 구독해야 합니다.

Oracle Java는 업데이트가 중요한가요?

기존에 오라클이 공개한 Oracle Java를 계속 사용하는 것은 라이센스 입장에서는 문제가 되지 않지만, 안전한 자바 시스템을 운영하기 위해서는 최신 업데이트 버전을 사용하는 것이 좋다는 권고를 받습니다. 솔직히 저도 자바를 오래 사용해 왔지만 자바 업데이트의 변경 사항에 대해서는 관심을 갖지 않았습니다. 얼마나 많은 버그가 수정되고 보안 패치가 적용되는지 몰랐습니다.

각 자바 업데이트에 얼마나 많은 버그가 수정되는지, 버전 별로 4-5년 정도의 Public Update 이후에도 버그 수정이 필요한지, 보안 취약성 개선은 얼마나 반영되는지를 모든 업데이트의 Release Notes로 확인해 보았습니다. Oracle Java 6, 7 및 8의 공개와 비공개 업데이트의 변경 내역을 정리해 보았습니다. 원본 데이터는 “Oracle Java SE 업데이트 요약“에서 확인할 수 있습니다. Oracle Java 6, 7 및 8의 Public Update 업데이트, Premier 업데이트 및 Extended 업데이트에 적용된 버그 수정과 보안 취약성 개선 규모는 다음과 같습니다. 아래 조사는 2018.11.15 기준일로 작성되었습니다.

Oracle Java SE 6 업데이트 개요

Version Roadmap 상태 업데이트 횟수 기간(month) 평균 업데이트 주기 전체 bug fixes 전체 security fixes 업데이트 평균 bux fixes 업데이트 평균 securty fixes
Java 6 Public Update 38 75개월 1.9개월 3,267개 350개 85.9개 9.2개
Java 6 Premier Update 11 31개월 2.8개월 217개 292개 19.7개 26.5개
Java 6 Extended Update 18 36개월 2.7개월 142개 172개 10.9개 13.2개
Java 6 Total 62 142개월 2.2개월 3,626개 814개 58.4개 13.1개

Oracle Java 6는 지금까지 총 62회 업데이트되었고, 총 142개월 동안 총 3,626개의 버그와 814개의 보안 취약성이 수정되었습니다. Public Update 기간에 전체 버그의 90%가 적용되었고, Premier Update 기간에 6% 그리고 Extended Update 기간에 4%의 버그가 처리되었습니다. 보안 취약성의 경우 Public Update 기간에 42.9%, Premier Update 기간에 35.8% 그리고 21.1%가 Extended Update 기간에 개선되었습니다. Public Update 종료 이후에, 68개월 동안 359개의 버그 수정464개의 보안 패치가 적용되었습니다.

Oracle Java SE 7 업데이트 개요

Version Roadmap 상태 업데이트 횟수 기간(month) 평균 업데이트 주기 전체 bug fixes 전체 security fixes 업데이트 평균 bux fixes 업데이트 평균 securty fixes
Java 7 Public Update 28 46개월 1.6개월 2,175개 435개 77.6개 15.5개
Java 7 Premier Update 16 45개월 2.8개월 341개 223개 21.3개 13.9개
Java 7 Total 44 91개월 2.0개월 2,515개 658개 57.1개 14.9개

Oracle Java SE 7은 공개된지 8년이 지났습니다. 현재까지 총 44개의 업데이트가 공개되었습니다. 현재는 Premier Update 기간입니다. 처음 4년간의 Public Update 기간에 86%의 버그가 수정되었고, Premier Update 기간에 13%의 버그가 수정되었습니다. 보안 취약성의 경우 Public Update 기간에 66%, Premier Update 기간에 34%가 개선되었습니다. Public Update 종료 이후에, 45개월 동안 341개의 버그 수정223개의 보안 패치가 적용되었습니다.

Oracle Java SE 8 업데이트 개요

Version Roadmap 상태 업데이트 횟수 기간(month) 평균 업데이트 주기 전체 bug fixes 전체 security fixes 업데이트 평균 bux fixes 업데이트 평균 securty fixes
Java 8 Public Update 34개 54개월 1.5개월 2,977개 338개 87.5개 9.9개

Java 8의 경우 현재 공개된지 54개월이 되었고, 현재 Public Update 기간입니다. EoPU는 2019년 1월입니다. 지금까지 총 34개의 업데이트가 공개되었습니다. 34번의 업데이트에서 총 2,977개의 버그가 수정되었고 338개의 보안 취약성이 수정되었습니다. 평균 1.5개월 주기로 Oracle Java 8 업데이트가 공개되었고, 업데이트마다 약 100개의 버그가 수정되었습니다.

업데이트의 변경 내역을 조사하기 전에는 이 정도 규모로 버그 수정과 보안 패치가 적용되는 줄 몰랐습니다. 자바가 공개되고 Oracle Java 서포트 로드맵 기간에 약 3,000개 이상의 버그 수정과 500개 정도의 보안 취약성 패치가 반영되는 것을 볼 수 있습니다.

공개 버전 Oracle Java 다운로드

OTN에서는 Oracle Java 1.1 부터 Oracle Java 11까지 Oracle Java SE의 모든 업데이트 다운로드하는 Archive 페이지를 운영합니다. 2019년 1월 부터 OTN에서는 Oracle Java 공개 버전을 릴리즈하지 않을 것을 발표했습니다. 2019년 1월 이후에도 Oracle Java SE의 모든 업데이트 다운로드하는 Archive 페이지를 운영할 것인지를 문의하시는 경우가 있습니다. 아직 이 Archive 페이지를 계속 운영할 것인지 아니면 종료할 것인지 구체적으로 언급한 문서는 찾지 못했습니다. 제 개인적인 생각은 앞으로도 계속 운영될 것이라고 믿고 있습니다.

혹시 모를 불상사를 대비하여 현재 사용하는 Oracle Java의 공개 버전을 별도로 다운로드 받아 놓으시는 것도 좋을 것 같습니다.

마치며

Oracle Java Subscription에 대하여 살펴보았습니다. Oracle Java SE Subscription은 비공개 Oracle Java의 사용, MOS(My Oracle Support)의 24X7 기술 지원 및 상용 소프트웨어 사용 권한으로 구성됩니다.

Java Subscription은 월 단위로 Core 수량으로 계산되며, x86을 사용할 경우 50% 할인됩니다. Oracle은 자바 개발 및 테스트 환경에 양도 불가능한 사용 라이센스를 제공하기 때문에, Java Subscription을 산정할 때, 개발자 컴퓨터, 개발 테스트 서버, 빌드 서버는 Java Subscription에 포함되지 필요 없습니다.

Oracle Java Subscription은 2019년 1월부터 시행되지만, 현재 사용하는 Java기 Oracle Java 공개 버전이라면 얖으로도 계속 사용할 수 있습니다. 물론 버그 수정 및 보안 패치를 고려할 때 안전한 최신 업데이트 사용이 권고되고 있습니다. 현재 사용 중인 Oracle Java가 공개버전인지 비공개 버전인지를 확인하기 위해서는 java -version으로 업데이트 번호를 확인하고, 이 업데이트 번호를 OTN에서 제공하는 Upblic Update 목록에서 확인할 수 있습니다.

Oracle Java의 서포트 로드맵은 Public Update, premier Update 및 Extended Update 단계로 관리되며, 지속해서 계속 버그 수정 및 보안 취약성 개선이 이뤄집니다. 앞으로 Oracle Java와 OpenJDK를 선정할 때, 버그 수정 정도와 보안 취약성 개선 상황도 중요한 판단 근거가 될 것입니다.

Oracle Java Subscription은 비공개 Oracle Java를 사용해야 하거나 24X7의 전문적 기술 지원의 필요성할 경우에 구독하는 모델입니다. 마지막으로 오라클 솔루션에 내장된 Oracle Java는 본래 목적 용도로만 사용해야 합니다. 오라클 솔루션이 아닌 별도의 자바 애플리케이션이 임베디드된 자바를 사용할 경우, 라이센스 위반 사항이 됩니다.

마지막으로 각 버전 별로 라이센스 위반 및 일반 개요를 정리하면 다음과 같습니다.

  • Oracle Java SE 6

    • 2018년 12월 부로 Extended Update 종료: 2019년 1월 버전 업데이트 및 기술 지원 완전 종료
    • 2019년 이후 공개버전 사용 가능: 사용 가능, 라이센스 위반 X
    • 공개버전 다운로드: OTN에서 다운로드 가능
    • 비공개 버전 사용시 라이센스 위반(Public Update End 이후 업데이트)
    • 비공개 버전 사용시 대응 방안
      • 계속 공개버전 사용을 위한 방법: Java SE 7 공개버전 업그레이드 혹은 Java SE 6 공개버전으로 버전 내림 필요
      • 현재 버전 사용 방법: Oracle Java Subscription 구독
  • Oracle Java SE 7

    • 현재 Premier Support 단계, 2019년 1월 부로 Extended Support 단계로 전환: 2022년 07까지 업데이트 및 기술 지원 완전 지원
      • 지원을 받기 위해서는 Subsciription 필요
    • 2019년 이후 공개버전 사용 가능: 사용 가능, 라이센스 위반 X
    • 공개버전 다운로드: OTN에서 다운로드 가능
    • 비공개 버전 사용시 라이센스 위반(Public Update End 이후 업데이트)
    • 비공개 버전 사용시 대응 방안
      • 계속 공개버전 사용을 위한 방법: Java SE 8 공개버전 업그레이드 혹은 Java SE 7 공개버전으로 버전 내림 필요
      • 현재 버전 사용 방법: Oracle Java Subscription 구독
  • Oracle Java SE 8

    • 현재 Public Update 단계, 2019년 01월에 Premier Update로 전환
    • 2019년 1월 부터 공개 업데이트 지원 중단
    • 현재 Oracle Java 8은 모두 공개 버전
    • 현재 버전은 2019년에도 사용 가능
    • 2019년 이후 추가 업데이트를 및 기술 지원하기 위해서는 라이센스 필요
  • Oracle Java SE 9, 10

    • Non-LTS(Long Term Support)
    • 업데이트 기술 지원 종료: 버전 업데이트 및 기술 지원 받을 수 없음
    • Java SE 11으로 업데이트 권장
    • 공개 버전은 2019년에도 사용 가능
    • 공개버전 다운로드: OTN에서 다운로드 가능
  • Oracle Java SE 11

    • 공개 버전은 2019년에도 사용 가능
    • 공개버전 다운로드: OTN에서 다운로드 가능
    • 2019년 이후 추가 업데이트를 및 기술 지원하기 위해서는 라이센스 필요

Oracle Java Subscription에 대하여 기본적인 사항을 정리해 보았습니다. Oracle Java Subscription를 준비하면서 도움이 되었으면 합니다. 추가로 궁금한 부분이 있으시다면 댓글로 남겨주시기 바랍니다.

참고자료

Disclaimer: 본 글은 개인적인 사간에 Oracle과 관계없이 개인으로서 작성된 글 입니다. 본 글의 내용, 입장, 예측은 Oracle을 공식적으로 대변하지 않습니다.


  1. ‘비공개 Oracle Java’는 공식적인 표현은 아닙니다. 이 포스트 문서에서만 사용하는 야메스러운 표현입니다. ^^ [return]
  2. 여기서 수량이란 데스크톱의 경우 사용자 수이고 서버의 경우 전체 계약 서버의 Core 수입니다. [return]
  3. 이 상황에서 본래 의도된 목적은 WebLogic의 런타임으로 Oracle Java를 사용하는 것입니다. 그 외의 모든 것은 다른 목적으로 분류됩니다. [return]
작성자: 김태완
김태완 avatar
작성자: 김태완
1999년 부터 Java, Framework, Middleware, SOA, DB Replication, Cache, CEP, NoSQL, Big Data, Cloud를 키워드로 살아왔습니다. 현재는 빅데이터와 Machine Learning을 중점에 두고 있습니다.
E-mail: taewanme@gmail.com