jsonobject.com
216
2018-08-06 23:12:01
22
19228

Java 유료 논쟁, Oracle JDK와 OpenJDK의 차이 정리


안녕하세요.
최근 Oracle JDK의 유료화 논란으로 제 블로그에 정리했던 글을 가져왔습니다. 출처만 남겨주시면 자유롭게 퍼가셔도 됩니다.

http://jsonobject.tistory.com/395 (지단로보트의 블로그)


Oracle JDK와 OpenJDK

  • Java 애플리케이션을 실행하기 위해서는 JVM이 필요하고 컴파일하기 위해서는 JDK가 필요하다. 일반적으로 JDK를 설치하면 JVM(Hotspot이라고도 표현, Java 기술의 핵심)도 함께 설치된다.


  • JDK는 2개 버전으로 나뉜다. 하나는 폐쇄적인 상업 코드 기반의 Oracle JDK이고 하나는 오픈 소스 기반의 OpenJDK이다.


  • 둘 간의 큰 차이라면 Oracle JDKOpenJDK에는 없는 재산권이 걸린 플러그인을 제공한다. 해당 플러그인은 Oracle이 재산권을 보유하고 있다. (보다 정확히 설명하면 Oracle이 인수하여 없어진 Sun Microsystems 시절의 유산이다.) [관련 링크]


  • Oracle JDK에 존재하고 OpenJDK에는 없는 대표적 기능으로 글꼴 라이브러리와 Java Web Start가 있다. 사용자의 웹 브라우저에서 자바 애플릿을 실행하려면 필요한 기능이다. 서버 애플리케이션 개발에는 쓰이지 않는 기능들이다.


  • 제공되는 기능적 차이 외에 Java 6 시대에는 분명히 OpenJDKOracle JDK보다 성능이나 안정성이 크게 떨어졌다. 하지만 오늘날에는 Oracle JDK만이 제공하는 일부 라이브러리를 제외하고는 차이가 없다. [관련 링크]

Oracle JDK는 무료인가?

  • Java의 무료 논쟁은 2011년 오라클이 소유권을 가지면서 시작되었다. 일단 명확히 해야할 점은 Java라는 프로그래밍 언어 자체는 GPL 라이센스로 무료이다. [관련 링크] 그렇지 않다면 오늘날 Java가 시장지배적인 언어가 되지 못했을 것이다. 중요한 부분은 Java로 작성한 프로그램을 컴파일(JDK)하고 실행(JVM)시키는 데 있다.


  • JDKJVM을 제공하는 OpenJDKGPL v2 with the Classpath Exception 라이센스로 무료이다.


  • 문제는 Oracle JDK이다. 결론부터 이야기하면 Oracle JDK는 사용 목적에 따라 무료일수도 유료일수도 있다. 먼저 Oracle JDK(Java SE)의 구성 요소를 살펴보면 아래와 같다.

1. JDK
2. JRE(JVM)
3. JavaFX SDK
4. JavaFX Runtime
5. JRockit JDK
  • Oracle JDKBCL(Oracle Binary Code License) 라이센스로 위 기능을 일반적인 목적의 컴퓨팅(General Purpose Computing)에만 사용시 무료라고 밝히고 있다. [관련 링크] 일반적인 목적의 컴퓨팅이란 무엇일까? 오라클은 데스크탑, 노트북, 스마트폰, 태플릿 등에서의 사용이 이에 해당한다고 설명하고 있다. 즉, 개발환경에서는 사용에 있어 아무 문제가 없다.


  • 일반적이지 않은 목적의 컴퓨팅(Non-General Purpose Computing)은 별도의 라이센스비를 지불해야 하는 유료 과금 대상이 된다. 오라클은 특정 기능 만을 위해 작동하는 시스템 및 솔루션에서의 사용이 이에 해당한다고 설명하고 있다. 이 부분의 애매한 표현 때문에 대부분의 상업 프로젝트를 진행하는 회사들은 OpenJDK를 사용한다.

Oracle JDK의 유료 구독형 라이센스 전환

  • Oracle JDK 바이너리에 적용되던 BCL 라이센스가 2018년 7월 부로 Java SE Subscription라는 이름의 년 단위 유료 구독형 라이센스로 새롭게 개편되었다.
  • 새로운 라이센스는 서버 및 클라우드 인스턴스의 경우 프로세서 당 월 25달러를, 데스크탑의 경우 사용자 당 월 2.5달러를 요구한다. 대량구매 및 2년, 3년 장기 구독에 따른 할인이 제공된다.
  • 구독한 라이센스 기간이 종료되면 사용자는 사용 권리를 잃어버린다. 라이센스를 갱신하거나 다른 무료 OpenJDK 바이너리로 전환해야 한다. (GPL 라이센스 기반의 OpenJDK 소스 코드는 LTS 지원 없이 6개월마다 새로운 버전이 공개된다.)
  • 새로운 라이센스는 2018년 9월 출시 예정인 Oracle JDK 11 바이너리부터 적용된다. 또한, 오직 라이센스 구독자 만이 LTS 업데이트 지원을 받을 수 있다. (다음 LTS 지원 버전의 출시는 3년 뒤로 Oracle JDK 17이 된다.)
  • 기존 Oracle JDK 8 바이너리의 경우 2019년 1월 이후 업데이트부터 라이센스 구독을 요구한다.
  • 새로운 라이센스에서도 비상업적인 용도에 한해서는 이전과 같은 무료 사용이 가능하다.

OpenJDK는 운영 환경에 부적합한가?

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

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

  • OpenJDK의 운영 주체는 오라클이다. 오라클 또한 OpenJDK를 기반으로 자사의 부가적인 기능을 추가한 Oracle JDK를 제작하여 배포한다.

  • 오라클이 아닌 서드파티 업체가 OpenJDK를 기반으로 공인된 JDK를 제작하여 배포하려면 오라클의 유료 라이센스인 OCTLA에 가입해야 한다. 현재 전세계에 19개 업체가 가입되어 있다. [관련 링크] 이 업체들이 OpenJDK 기반의 자체 빌드를 배포하려면 오라클의 엄격한 TCK 인증을 통과해야 한다. 수만가지의 테스트를 단 하나라도 통과하지 못하면 인증되지 않는다.

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

OpenJDK 구현체

  • OpenJDK의 명세는 JCP(오라클, IBM, SAP 등으로 구성)에 의해서 결정된다. OpenJDK는 결정된 스펙(Java SE 7: JSR 336, Java SE 8: JSR 337)을 구현한 레퍼런스 소스 코드이다. 많은 상업 JVM 벤더들이 이 OpenJDK 레퍼런스 소스 코드를 기반으로 각자의 JVM을 제작한다. 엄격한 테스트의 TCK 인증을 통과하면 OpenJDK를 완벽히 준수하는 구현체로 인정된다. Oracle JDK 또한 Java SE 7부터 이 OpenJDK를 기반으로 앞서 설명한 추가 요소를 담아 배포한다. [관련 링크]


  • 트위터는 OpenJDK를 자사에 맞게 튜닝한 Twitter-JDK 위에서 자사의 서비스를 운영한다. [관련 링크]

  • Azul Systems(미국 소재의 Java Runtime 제작 전문 회사)는 Zulu라는 OpenJDK 기반 빌드에 부가 기능을 추가한 Windows, Linux, Mac OS X 바이너리를 무료로 제공한다. 이 회사는 서버 부하에 최적화된 Zing이라는 JVM을 판매한다. 엔터프라이즈 시장에서 Oracle JDK의 대안으로는 현재 독보적 위치에 있다. 테스트에서 Oracle JDK보다 성능이 좋았다는 사례도 있다. [관련 링크] 실제로 고성능을 요구하는 Cassandra 노드들은 Zing 기반으로 운영된다. [관련 링크]

참고 글

23
20
  • 댓글 22

  • dkb
    1k
    2018-08-07 09:09:07

    좋은글 감사합니다.

    0
  • j2doll
    90
    2018-08-07 10:35:28 작성 2018-08-07 10:38:31 수정됨

    개인 참고자료로 퍼가겠습니다. 출처는 기술하였슴다

    0
  • basscraft
    1k
    2018-08-07 11:29:55 작성 2018-08-09 09:02:17 수정됨

    이제 슬슬 오라클 JDK, JRE를 버려야 할 시기가 온 것 같네요.

    오라클은 철저히 미국식 자본주의에 충실한 대표적인 회사라고 생각합니다.

    오라클이 썬마이크로시스템을 인수할 당시 서버회사가 필요해서 인수했다고 생각하지 않습니다.

    현재 썬마이크로시스템의 서버시장 점유율이 현격히 낮아진 것 만 봐도 오라클은 Java 하나만 보고 썬마이크로시스템을 인수했다고 생각합니다.

    오래 걸리긴 했지만 슬슬 본색을 드러내기 시작했다고 생각합니다.

    오라클의 라이센스 정책이 바뀐다는 것은... 서버쪽 런타임에 Oracle JDK, JRE를 사용하는 회사들 중 영세한 회사들은 하루빨리 Open 소스쪽으로 검토를 해봐야 할 수도 있습니다.

    나중에 한번에 소급 적용해서 청구가 들어올 수도 있지 않을까... 우려되네요.


    0
  • 심심한사부
    884
    2018-08-07 13:27:15

    거짓은 복잡하고 진리는 단순하다.


    0
  • azulsystems
    7
    2018-08-07 23:16:28

    안녕하세요? Azul Systems 한국대표 입니다.

    먼저 jsonobject.com 님의 명확한 설명과 좋은 정보들에 대하여 감사하게 생각합니다.

    글에서도 아시겠지만, 

    최근 오라클의 정책은 Open JDK의 LTS(Long Term Support)를 2019년 1월로 중단하고 6개월 단위로 매우 한정적인 제공함으로써 Oracle JDK로 강력히 유료화 시키겠다는 의미입니다.

    또한, 올해 9월 발표되는 JDK 11부터는 새로운 가격정책으로 선 계약하지 않으면 상당한 불이익을 감수할 수 밖에 없는 정책방향입니다. 하지만 그 유료화 정책의 수준은 상당히 높아 시장의 충격이 매우 클 것으로 예상됩니다. 

    가장 큰 문제는 한국 시장의 특성상, Open JDK를 그냥 사용하고 있는 많은 정부기관, 금융권, 그리고 수많은 엔터프라이즈 시장에서는 라이센스 이슈가 발생할 수 있으며, 사용되고 있는 Open JDK 마저도 지원 중단에 따른 보안이슈 및 버그이슈들에 무방비하게 노출될 것으로 예상되어, 저희들은 제 2의 밀레니엄 사태 같은 상황도 될 수 있다고 우려하고 있습니다.

    최근 이런 시장 상황을 이미 파악한 미국, 유럽, 아시아 국가들의 정부기관, 금융권, 그리고 많은 글로벌 기업들과 국내에서는 몇몇 대기업의 일부부서에서 저희 Azul Systems의 Zulu JVM으로 신속한 전환하고 있으며, 특히 전체 비용면에서 오라클 대비 매우 경제적이며, 기술지원 또한 매우 빠르고 집중적인 지원을 받게 되어 새로운 Java 파트너로서 전환이 빠르게 진행되고 있습니다.

    말씀해 주셨듯이,

    저희 Azul Systems는 Oracle Java 사업의 거의 유일한 경쟁자로서, 많은 글로벌 기업들과 파트너 관계를 형성해가고 있습니다. www.azul.com

    여기 계신 많은 개발자 분들 중 본 이슈와 관련된 분야에서 근무하시는 분들은 최근 임박한 상황을 꼭 확인해 보시고, 신속히 대응방안을 준비하실 것을 권고드립니다.

    혹시 조금 더 자세한 정보나 논의가 필요하시면 연락주세요. 신속히 지원해 드리겠습니다.

    감사합니다.

    www.azul.com / joon@azul.com

    0
  • 앙앙이
    3k
    2018-08-08 12:10:10

      자바 사용하는 여러가지 이유들중 하나가 openjdk 가 있어 자바 저작권자인 오라클도 하나의 선택일뿐이였는데 openjdk 마저 지원 중단되면 이 메리트는 사라집니다.


       azul 가 openjdk 를 기반으로 했다고 해도 독자적인 jdk 와 같은것을 배포할려면 오라클과 계약이 필수 아니던가요. 하여 오라클이 돈 독오르면 azul 도 그것에 자유로울 수 없습니다.

    아무리 임팩을 위해 과장이 필수인 광고라 하더라도 openjdk 지원 중단을 언급하시며 어필 하시네요.

    그냥 씁쓸해서 글을 써 봅니다.

    2
  • ?react
    389
    2018-08-08 17:36:07
    걍 어떻게든 상업적인 용도는 '유료화'인데 어렵게들 생각하시네 ㅋㅋ
    0
  • aeba
    1k
    2018-08-09 03:40:55

    @?react

    글을 좀 읽어보시기 바래요 OpenJDK 쓰면 백날천날 무료입니다. 단지 지금과 환경이 좀 달라졌을 뿐입니다.

    그리고 이런건 회사의 기술 스택을 좌지우지할 수 있는 큰 이슈인데 기술을 담당하는 사람 입장에서 제대로 파악도 하지 않고 "걍 상업적인건 다 유료화" 같이 생각하는거 자체가 이상하네요. 심지어 맞지도 않아요..;;

    -1
  • basscraft
    1k
    2018-08-09 09:07:52

    20년 가까이 자바개발자로 일해온 입장에서... 이제 자바로 무엇이든 할 수 있지만.

    바늘귀에 실을 꾀는 것과 같은 간단한 작업 조차 거대한 물래와 실뽑는 도구부터 준비해야 하는 상황이 된 것 같습니다.

    아직도 앤터프라이즈 시장에서 Java의 능력이 무족함이 없어보이지만, 새로운 기업들이 node.js나 파이썬으로 눈길을 돌리는 이유를 주목해야 한다고 생각합니다.

    0
  • whoamii
    74
    2018-08-09 18:20:29

    java enterprise edition(EE) 는 open jdk에 없고, oracle jdk가 유료화된다는 것인가요??

    국내 java웹 시장이 통틀어 변한다는것을 의미하는건지 궁금합니다

    0
  • basscraft
    1k
    2018-08-09 20:41:50

    whoamii

    JAVA EE스펙을 만족하는 구현 제품은 EJB를 포함 JSP, Servlet, JNDI 등을 포함하는

    Weblogic, JEUS 같은 WAS(Web Application Server) 라고 보는게 맞는것 같습니다.

    Tomcat 같은 서버도 JSP, Servlet, JNDI... 등을 지원하긴 하지만 EJB 같은 엔터프라이즈 스펙이 빠져있기 때문에 WAS라고 하지 않고 서블릿컨테이너 라고 부르는 것으로 기억합니다.



    0
  • jsonobject.com
    216
    2018-08-09 22:03:54

    국내에서 대기업을 제외하고는 리눅스에 OpenJDK 바이너리를 사용하는 것이 대부분 현재 기업들의 Java 애플리케이션 운영 환경일 것이라 보여 당장 큰 지장은 없다고 생각됩니다. OpenJDK 바이너리는 과거부터 쭉 무료로 제공되고 있습니다. 더 명확히 말하면 OpenJDK 바이너리를 빌드할 수 있는 자격을 Oracle에게 지불하고 자신들의 사업 환경에 맞게 빌드하여 고객에게 제공하는 것이죠. 가장 대중적인 CentOS에서 yum으로 설치하여 쓰는 OpenJDK가 바로 Redhat이 빌드한 바이너리를 제공하는 것입니다. 최근에는 이런 자격 없이 프리빌드 바이너리를 제공하는 사이트도 생겼지만 추천하지는 않습니다.


    진짜 문제는 대부분의 Java 개발자가 큰 생각 없이 자신의 데스크탑 개발 환경에 다운로드하여 쓰는 Oracle JDK입니다. 상업적인 목적의 애플리케이션 개발 용도에 해당하면 감사의 대상이 될 수 있으므로 앞으로 기업들은 이 부분을 제일 신경써야 할 것입니다.


    우회할 방법은 많지만 어떤 이유로든 이번 유료화 건은 Java 진영에 악재로 작용할 것 같아 아쉽습니다. Oracle이 지난 수년간 Java가 잠식한 백엔드 점유율을 믿고 MySQL, Hudson에 했던 행동을 그대로 답습하는 것 같습니다.

    1
  • jsonobject.com
    216
    2018-08-09 22:12:17

    Java EE는 엔터프라이즈 애플리케이션을 만들기 위한 기능을 정의한 스펙일 뿐이고, 구현은 시장에 맡기고 있습니다. Tomcat, Undertow같은 경량의 무료 서블릿 컨테이너가 가장 대중적일 것이고 유료로는 JEUS 등이 있습니다. 사실 서블릿 정도를 제외하면 비표준인 Spring Framework가 기업용 애플리케이션을 지배하는 시대인지라 재미를 못보고 있죠. OracleJava EE는 돈이 안된다 여겼는지 이클립스 재단에 넘기겠다는 이야기도 얼마 전에 있었습니다. 저는 2015년에 JerseyJava EEJAX-RS 스펙을 준수하는 사이트를 구축했다가 후임자들한테 따가운 시선을 받고 Spring Boot로 전향한 기억이 있습니다.^^

    0
  • 아스키
    8k
    2018-08-12 17:35:39

    아이언맨 영화에도 출연한 오라클 사장..!!!

    0
  • 아스키
    8k
    2018-08-12 17:39:30

    공부용이나 개발자한테는 Open JDK는 괜찮지만 이게 상용화 되거나 서비스 되면 무조건 오라클 라이센스 계약해야 한다는 소리랑 마찬가지죠....공부용은 무료지만 정작 웹서비스나 돈벌려고 뭘 할려면 돈내야 한다는 소리..

    0
  • zepinos
    16k
    2018-08-13 14:59:14 작성 2018-09-05 11:02:31 수정됨

    본문과 댓글에서 여전히 잘못된 정보가 공유되는군요.


    https://zepinos.tistory.com/12


    저도 한 번 정리해봤습니다.

    0
  • jsonobject.com
    216
    2018-08-13 23:23:41

    zepinos 님, 제가 작성한 본문의 잘못 공유된 정보가 무엇인지 알려주실 수 있을까요?

    0
  • zepinos
    16k
    2018-08-14 00:12:59 작성 2018-08-14 10:42:59 수정됨

    밤이 늦고 다른 작업중이라, 자세한 내용은 내일 적겠습니다. 다만 본문은 잘못된 정보...라는건 댓글에 비하면 그냥 늬앙스의 문제 수준으로 아주 경미하거나 의견차 정도의 수준입니다. 제가 좀 생각없이 댓글을 달아서 기분 상하게 해드린 것 같네요.


    초반부의 Hotspot 이 jvm 을 다르게 부른다고 하신 부분(사실상 그리 불러도 될 정도로 많이 쓰이긴 하니까요)이...J9 등의 다른 제품도 존재하기에 좀 더 내용 보강이 필요하단 점...그리고 OracleJDK 와 OpenJDK 두 개로 나뉜다고 표현한 점이 개선되어야 할 내용으로 봤습니다. 댓글 중에는 아직도 오해를 많이 하는 분들이 계시다고 느꼈구요.

    0
  • zepinos
    16k
    2018-08-14 10:49:54

    보충해서 적자면,


    JCP 에서 JSR 제정 - OpenJDK 구현 - OracleJDK, Eclipse OpenJ9 등 OpenJDK 코드 기반 구현


    이런 순서로 구현이 됩니다. 즉, OracleJDK 와 OpenJDK 가 동일 선상이 아니라, OpenJDK 가 상위, 하위에 OracleJDK, Eclipse OpenJ9, Zulu, ... 등이 동일선상이 되겠죠. 이 부분이 오해의 소지가 있다는 것입니다.


    그 외에 댓글 중에 앙앙이 님의 댓글은 비약이 너무 심하고 ?react 님의 댓글도 주어가 빠져서 혼동을 일으키기 좋죠. 아스키 님 댓글은 더더욱...


    그리고 이것과 별개도 서블릿 컨테이너는 J2SE 규격의 Servlet 만 구현한 것이고 JEUS 는 J2EE 풀스펙일 겁니다.

    0
  • libedi
    597
    2018-08-17 08:45:17

    원래 유료였던 정책을 구독형으로 바꾼 것 뿐인데, 왜 유료화가 되었다고 그러는지 이해가 가지 않습니다. 그냥 쓰던대로 Oracle JDK 쓰면 되는데요. 언어의 완전 유료화라는 희대의 막장을 오라클이 하겠습니까?

    0
  • jsonobject.com
    216
    2018-08-17 11:16:29

    zepinos 님, 본문을 정독하면 언급해주신 내용과 상충되기는 커녕 충실히 관련 링크와 함께 설명하고 있습니다. 링크하신 글도 마찬가지구요. 글을 전개하는 관점의 차이로 너그럽게 보시면 될 것 같습니다. 자세한 보충 정보와 의견 감사 드립니다.

    0
  • jsonobject.com
    216
    2018-08-17 11:22:56

    libedi 님, 말씀이 맞습니다. 기존에도 Oracle JDK는 상업적인 목적에 있어서는 유료 계약을 요구하는 BCL 라이센스를 명시하고 있었습니다. 의도적으로 그 상업적 목적의 기준을 애매하게 기술하고 묵인해왔을 뿐이라고 생각되구요. 시장 추이를 지켜보다가 묵인을 끝내고 드디어 명확하게 유료 구독제 모델을 제시했을 뿐이라고 생각합니다. 자료 조사를 위해 Oracle 홈페이지에 방문해봐도 정치인이 쓸법한 애매하고 추상적인 표현만 있습니다. 엔드 유저 개발자는 데스크탑이든 서버든 속시원히 OpenJDK 바이너리를 설치해서 사용하면 됩니다.

    0
  • 로그인을 하시면 댓글을 등록할 수 있습니다.