글을 읽기 전에 선수로 이해하면 좋은 글 ( 링크 참조 및 검색 )

  1. Java compiler에 관한 글을 읽으면 좋을 것 같다. 바이트 코드, ClassPath 등등
  2. GCJ(GNU Compiler for Java)는 자바 프로그래밍 언어를 위한 자유 소프트웨어 컴파일러이며 GNU 컴파일러 모음의 일부이기도 하다.
  3. GNU 일반 공중 사용 허가서(GNU General Public License, GNU GPL 또는 GPL)는 자유 소프트웨어 재단(FSF)

JAVA는 무료인가?

JAVA 언어 자체는 GPL 라이센스로 무료로 사용가능 하다. 그럼 왜 자바 유료화라는 말이 나온 것일까?
그것은 바로 JDK의 일부 기능을 Oracle에서 독자적으로 개발하여 추가지원 하기 때문이다. 예를 들면 글꼴 라이브러리와 Java Web Start 등이 있다.
즉, JDK 는 말그대로 JAVA Development kit 자바 개발을 위한 다양한 도구의 모음이라고 할 수 있다.
편리하게 개발하기 위해 각종 툴들이 제공된다. 이러한 몇가지 개발툴에 대한 유료화를 진행하는 것이다.

JRE, JDK

실행환경만 있는 JRE는 유료적용 대상이 아니다.
JDK는 기본적으로 JRE를 내장하고 있고, 그 밖에 개발툴이 추가된 것으로 Oracle에서 제공하는 부분 툴에 대한 유료화.

Open JDK

JDK와 JVM을 제공하는 Open JDK은 GPL v2 with the Classpath Exception 라이센스로 무료이다.

Java SE 7부터 모든 JDK는 OpenJDK 레퍼런스 소스 코드를 기반으로 제작된다. (Jave SE 6 버전의 OpenJDK는 backport방식으로 구현되어 성능 저하 이슈가 존재한다.)
여기서 backport란 쉽게 상위 버전의 기능을 하위 버전에 반영해 주는 것을 말한다. Java 7 이후로 OpenJDK는 자바 스펙을 명시한 JSR 336, JSR 337를 빠짐없이 완전히 구현한 구현체이다.

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

그럼 JDK의 독점권을 Oracle이 가지고 있는 것이냐? 그렇지않다.
TCK 인증을 받은 OpenJDK 기반의 빌드 버전을 사용하면 운영 환경에 아무런 문제가 없다. TCK는 Oracle 사의 JDK 심사 기준이 되는 것이라고 생각하면 된다. 매우 까다롭다고 한다. 그리고, Oracle의 독점을 방지하기 위해 IcedTea 프로젝트가 시작되었다. ( IcedTea 에 대해서는 아래 글을 참고하자.)

Open JDK vs Oracle JDK

둘 다 Oracle에서 운영하고 있다.
하지만, Oracle JDK는 자주 업데이트 할수 없기 때문에 3년간 사용할 수 있는 LTS (long term support)를 제공한다.
반면, OpenJDK 는 1년에 두번씩 새로운 버전으로 업데이트 된다.

기존 OpenJDK와 OracleJDK는 호환되지 않았지만, JAVA 8 버전이후(JDK유료화)로는 두 가지 모두 호환된다. 이 상호호환성은 6개월 공개지원 기간 동안 유지된다. 오라클은 이 기간동안 오픈JDK와 오라클JDK에 동일한 패치를 제공한다. 반대로, 공개지원 기간 종료 후부터 오픈JDK와 오라클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 위에서 자사의 서비스를 운영한다.

IcedTea 프로젝트

2007 년 6 월 Red Hat 에서 시작한 OpenJDK 용 빌드 및 통합 프로젝트이다. IcedTea-Web 은 Oracle JDK에서 유료로 제공하는 Java Web Start 및 Java 웹 브라우저 플러그인의 무료 소프트웨어 구현체이다. IcedTea는 Java 용 GNU 컴파일러 가 OpenJDK 코드 를 컴파일 할 수 있도록 한다. 개발자는 OpenJDK를 빌드하기 위해 이미 작동중인 Java 컴파일러와 런타임이 필요했다. 원래는 기존의 독점 Sun JDK 만 해당 요구 사항을 충족했다. Fedora와 같은 무료 배포판은 패키지를 빌드하기 위해 독점 도구에 의존할 수 없으므로 IcedTea 프로젝트는 무료 소프트웨어를 사용하여 코드를 컴파일 할 수 있도록 시작된 프로젝트다.
현재도 계속해서 upgrade 되고 있고, 해당 IcedTea 버전을 사용하면 OpenJDK를 사용하여 자체 컴파일 할 수 있으므로 향후 컴파일을 위해 유료 소프트웨어를 사용할 필요가 없다.

현재는 이 밖에도 다양한 OpenJDK 구현체들이 있다. ex) Azul Zulu, Amazon Corretto, AdoptOpenJDK

아 JDK가 그냥 Oracle이 제공해주는게 아니고 자체적으로 만들수도 있다는 걸 오늘 알았다ㅋㅋㅋㅋ
능력이 된다면 내가 JDK 하나 구현해보고 싶다.. 물론 합격기준이 엄청 까다롭겠지ㅠㅠ

무튼 오늘 글 끝~~

 

 

참고 
https://directory.fsf.org/wiki/Classpath https://openjdk.java.net/projects/icedtea/ https://icedtea.classpath.org/wiki/Main_Page https://askubuntu.com/questions/437752/openjdk-oracle-is-better/437756#437756 https://directory.fsf.org/wiki/GNU https://www.slideshare.net/gnunix/open-jdk-138008240 http://openjdk.java.net/ https://en.wikipedia.org/wiki/Java_(programming_language) https://www.zdnet.co.kr/view/?no=20181102140004

 

'IT정보 > IT정보' 카테고리의 다른 글

Swagger, REST API 문서자동화  (0) 2020.12.14

+ Recent posts