반응형

Java SE (Java Standard Edition)

 

1. Oracle JDK 라이센스 전환

▶ 과거 라이센스 정책

 - 지금까지 BCL(Binary Code License)이라는 라이선스 체계를 따랐다. (~2018년 6월)

 - BCL은 유료와 무료가 섞인 라이선스 체계다.
   (프로그램을 작동(running)하기 위한 목적으로 사용되는 것만을 허용한다.)

 - 서버 컴퓨터나 PC, 태블릿, 스마트폰 등의 '일반 목적 컴퓨팅' 용도로는 무료로 사용할 수 있고, 키오스크 등 특수한 목적의 컴퓨팅 장비에 사용할 때는 유료인 요금제다.

 - 프로그램을 내부적인 비즈니스 운영 또는 상업용 목적, 제품화 목적으로 사용하고자 할 때에는 수정하지 않은 상태로 프로그램의 번들 된 부분으로서(bundled as part of) 소유권에 대한 고지문 등을 삭제하거나 대체하지 않은 상태로 사용해야 한다.

▶ 현재 변경된 라이센스 정책

 - BCL 라이센스가 2018년 7월 부로 Java SE Subscription라는 이름의 년 단위 유료 구독형 라이센스로 새롭게 개편되었다.
   (영구 라이선스에서 구독 모델(서브스크립션)으로 변경, 서브스크립션을 도입하면서 오라클 자바 SE의 BCL 정책을 폐지)

 - 지속적인 업데이트 & 보안 패치를 받고자 하는 고객에 대해서 서브스크립션 라이선스(Subscription License)를 구해야 한다.

 - 오라클의 이번 정책변경은 무료에서 유료로 바뀌는 것이 아니라, 라이선스 과금 모델에서 서브스크립션 과금 모델로 바뀌는 것이다.

 - 이는 소프트웨어 업계의 전반적인 트렌드다. 어도비시스템즈, 마이크로소프트 등 대표적인 소프트웨어 회사들이 이같은 흐름을 이끌고 있다.
  (요즘 포토샵, 오피스도 월정액 요금을 내고 사용하는 것이 일반적, 불법 소프트웨어 차단하고, 고객들이 최신 버전을 사용하도록 유도한다는 점에서 소프트웨어 업체에는 큰 이득)

 

2. Oracle Java Subscription

▶ 서브스크립션

 -서브스크립션을 구매하지 않은 기업은 오라클 JDK 자바 SE를 업무용, 상업용, 운영용으로 사용할 수 없다.
   (비상업적인 용도에 한해서는 이전과 같은 무료 사용이 가능)

 - 업데이트 및 버그 패치도 제공되지 않는다.

 - 서브스크립션 구매 후 기간이 종료되면 모든 접속이 금지된다.

 - 새로운 라이센스는 서버 및 클라우드 인스턴스의 경우 프로세서 당 월 25달러를, 데스크탑의 경우 사용자 당 월 2.5달러를 요구한다. 대량구매 및 2년, 3년 장기 구독에 따른 할인이 제공된다.
 (개발용으로 프로젝트에서 사용시 '개발자 수' 이고 운영시에는 운영서버의 'core' 수 이다.)

 - Subscription 계약은 월단위 과금이지만, 계약은 1년 단위로 이루어진다.

▶ Java SE Desktop Subscription (데스크톱 가격) - 사용자당 $2.5 / 월 
| Monthly Subscription Price | Subscription Metric |  Volume  |
  2.5                                         Named User Plus       1-999
  2.0                                         Named User Plus       1,000-2,999
  1.75                                       Named User Plus       3,000-9,999
  1.5                                         Named User Plus       10,000-19,999
  1.25                                       Named User Plus       20,000-49,999
                                                Contact for Details    50,000+

▶ Java SE Subscription (서버 및 클라우드 배포 환경) - 프로세서당 $25 / 월
| Monthly Subscription Price | Subscription Metric |  Volume  |
  25                                          Processor                  1-99
  23.75                                     Processor                  100-249
  22.5                                       Processor                  250-499
  20                                          Processor                  500-999
  17.5                                       Processor                  1,000-2,999
  15                                          Processor                  3,000-9,999
  12.5                                       Processor                  10,000-19,999
                                                Processor                  20,000+

              

 

 

ex1) Java 운용 Application 서버 10 core / Desktop 사용자 100명
        (28,031 * 10) + (2,803 * 100) = 560,610원 / 1개월
                                        6,727,320원 / 1년

ex2) Java 운용 Application 서버 10 core / Desktop 사용자 100명
※ 총 JAVA 이용비 = 서버 비용비 + 데스크톱 이용비
※ 서버 이용비 = 25$ * 코어수 * 코어팩터(프로세서 성능지수)
※ 데스크톱 이용비 = 10(직원수)*2.50$=25$

 

▶ 기존 Oracle JDK 8 바이너리의 경우 2019년 1월 이후 업데이트부터 라이센스 구독을 요구한다.
 - 새로운 라이센스는 Oracle JDK 11 바이너리부터 적용된다. 또한, 오직 라이센스 구독자 만이 LTS 업데이트 지원을 받을 수 있다.

※ LTS : 장기지원서비스, JDK 11 : 2018.9월 출시된 자바SE 버전, 다음 LTS 지원 버전(Oracle JDK 17)의 출시는 2021년 가을(약 3년 뒤))

(오라클은 앞으로 6개월마다 새버전을 내놓고, 특정버전만 LTS(장기지원서비스)를 하겠다고 밝혔다.
오라클은 자바SE9 버전부터 6개월마다 자바를 업데이트한다. 버그패치와 같은 지원 서비스도 6개월까지만 진행한다. 원칙적으로 기업들은 6개월마다 자바SE 를 업그레이드 해야 한다.
하지만 기업에서 운영되는 플랫폼을 6개월마다 업그레이드 하는 것은 사실상 불가능하다. 이를 위해 LTS가 있다고 봐도 될 것 이다.)

 

※ 도입 검토 실제 사례
 - 삼성 SDS에서도 이와 관련하여 개발자용 Subscription 구독을 검토하였으나 약 100몇억이나 비용이 발생한다고 추정 되어 구매를 포기하였다고 한다.



3. Oracle Jdk vs Open JDK


 ※ Open JDK와 Oracle 유료 JDK간 차이점

(1) Oracle 유료 JDK에는 개발, 버전관리 편의성을 증진시켜주는 관리 Tool 제공
    - Java Web Start
    - Java SE 엔터프라이즈 관리 기능
       · Java SE 8 AMC(Advanced Management Console) : 기업 전반에 배포된 Java 버전의 대시보드 뷰 제공
       · Java SE 8 MSI Enterprise JRE Installer
       · Java SE 8 Java Flight Recorder & Mission control
       · Java SE 8 Java Usage Logger

(2) Oracle 유료 JDK는 최대 8년까지 패치/업데이트 제공, Open JDK는 6개월 간격으로 Minor 버전을 제공

 - Open JDK6에서 파일 처리와 같은 기본적인 OS-Integration 관련 기능과  네트워크 처리 및 Swing에서 몇몇 문제점이 보고 되었으므로, Open JDK 사용 시에는 Open JDK 7 이상 사용을 권고한다고 한다.

(4) JDK8, JDK11, JDK 17이 앞으로 LTS로 지원됨을 알 수 있다. 이도 JDK 선택시 고려 

 


4. OpenJDK는 운영 환경에 적합할까?

 - TCK 인증을 받은 OpenJDK 기반의 빌드 버전을 사용하면 운영 환경에 아무런 문제가 없다.

 - Java SE 7부터 모든 JDK는 OpenJDK 레퍼런스 소스 코드를 기반으로 제작된다. 
   (Jave SE 6 버전의 OpenJDK는 백포트 방식으로 구현되어 성능 저하 이슈가 존재한다.)
   (OpenJDK는 자바 스펙을 명시한 JSR 336, JSR 337를 빠짐없이 완전히 구현한 구현체이다.)

 - 오라클이 아닌 서드파티 업체가 OpenJDK를 기반으로 공인된 JDK를 제작하여 배포하려면 오라클의 유료 라이센스인 OCTLA에 가입해야 한다.
   기업리스트 : http://openjdk.java.net/groups/conformance/JckAccess/jck-access.html
   이 업체들이 OpenJDK 기반의 자체 빌드를 배포하려면 오라클의 엄격한 TCK 인증을 통과해야 한다. 수만가지의 테스트를 단 하나라도 통과하지 못하면 인증되지 않는다.

 - OpenJDK를 멀티 플랫폼 바이너리로 빌드하여 배포하는 대표적인 업체로는 Azul Systems가 있다. 개발 환경과 운영 환경 모두 Oracle JDK의 대안으로 좋은 평가를 받고 있다.

 

5. Azul Zulu

 - 실제로 미국에서는 Azul Systems의 발빠른 대응 때문인지 이미 많은 회사에서 채택하여 사용 하고 있다고 한다. 우리나라에서도 해당 기업에서 발빠른 대응을 통해 Azul이 대항마로서 화두가 된 적도 많지만, 우리나라에선 점점 관심을 잃어가는 듯 하기도 하다.

 - 성능을 높이고, Oracle 보단 저렴하다는 전략을 기반으로 하는 듯 하다.

 - TCK를 통과한 무료 OpenJDK 구현체

 

6. 결론 - 대응 전략

1) Java SE 4~10

▶ 기존 JDK는 그대로 사용해도 된다. (오라클 문의 시 사용해도 된다고 하였다. 찝찝하지만.)

 - 오라클 홈페이지에서 BCL(Oracle Binary Code License) 하에 공식 업데이트 버전이 제공 되므로 기존과 동일하게 무료로 사용 가능 하다.

 - 다만 오라클에서 제공하는 최종 공식버전 업데이트보다 높은 minor 버전 사용 시 상용 소프트웨어에 대한 불법적인 사용으로 간주 될 수 있다.

 - 결국 혹시 최종 공식버전 업데이트보다 높은 경우 Java SE Subscription 신청하여 유료로 사용하거나 OpenJDK를 사용 해야 한다.

2) Java SE 11 +

 - Java SE 버전 릴리즈 정책이 변경 되어 6개월 마다 Major 버전이 리리즈 된다. (Java SE9부터 적용)

 - Java SE 11부터 LTS 버전이 3년 단위로 발표 예정이다. (SE 11, SE 17, SE 23, SE 29, SE 35)

 - Java SE 11부터 OTN(Oracle Technology Network License) 라이선스 하에 제공되므로 개인용으로만 무료 사용 가능.

 - 기업 업무용으로 사용 시에 Java SE Subscription 신청하여 유료로 사용하거나 OpenJDK를 사용 해야 한다. 

 

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

  • 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년 이후 추가 업데이트를 및 기술 지원하기 위해서는 라이센스 필요

 

 

 

 

'JAVA' 카테고리의 다른 글

RestTemplate VS WebClient  (0) 2021.02.24
비동기, 동기, 블로킹, 논블로킹  (0) 2021.02.19
JAVA11  (0) 2019.10.04
NAVER Search Ad - ADExtensions  (0) 2019.08.13
IntelliJ IDEA (인텔리제이 IDEA)  (0) 2019.05.02

+ Recent posts