ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • What is OpenJDK?
    카테고리 없음 2016. 11. 28. 20:01



    OpenJDK 개요


    Sun(현재 Oracle)이 JDK7을 개발하기 시작할 때 이전과 다른 점이 하나 있었는데, Sun이 JDK를 오픈소스화 하기 위해 2007년 OpenJDK를 만들었다는 것이다.(OpenJDK는 완전한 Free의 오픈소스 코드를 기반으로 Fully buildable한 Java Development Kit을 배포하기 위한 Sun의 노력이다.) 


    Sun이 3rb-Party 라이브러리의 저작권자에게 오픈소스로 공개할 수 있도록 설득하고자 했으나 잘되지 않았고, 저작권자가 오픈소스화를 거부한 일부 컴포넌트를 제외한 나머지 JDK 소스코드 전부를 OpenJDK에 제공했고, OpenJDK는 이를 기반으로 이외의 컴포넌트의 대안 코드를 마련하면서 JDK7 프로젝트를 시작했다.




    Oracle's Plan for OpenJDK
    아래는 OpenJDK FAQ (http://openjdk.java.net/faq/)의 주요 내용을 요약한 것이다.


    Oracle은 OpenJDK에 참여하는가?

    Oracle은 OpenJDK 프로젝트를 주도하는 주체이며, 오픈소스 모델은 기술적인 발전을 위한 가장 좋은 방법이기 때문에 OpenJDK를 향상시키기 위한 노력을 계속 할 것이다.


    OpenJDK의 License 모델은 변경될 수 있는가?

    OpenJDK Community는 지속적으로 Oracle에 의해 운영되며, 뿐만 아니라 이외의 기업, 연구원 또는 개인에 의해 GPL-based 라이센스를 가지며, 변경될 계획은 없다.


    OpenJDK Users & Contributors

    Ubuntu / Fedora / RedHat Enterprise와 같은 메이저 리눅스 제공자는 배포시에 OpenJDK를 기본 Java SE 구현체로 제공하고 있다. 추가적으로 Eclipse Community의 2010 설문에서는 개발자의 21%가 OpenJDK를 사용하고 있다고 응답하였다.



    OpenJDK와 OracleJDK 스펙



    Oracle JDK는 OpenJDK를 기본으로 하는가?

    그렇다. Oracle JDK는 OpenJDK의 JDK7 기반에 추가로 OpenJDK에 포함되지 않은 Component가지 모두 갖춘 프로젝트이다.


    아래와 같이 Vendor에 의한 분리된 Version이 존재한다

    1) Oracle's JDK(Commercial support from oracle)

    2) OpenJDK, the open source java


    JDK7 이전에는 두 version간 큰 차이가 존재해 OpenJDK는 OracleJDK에 비해 누락된 기능 및 성능 이슈가 존재 했으나, 현재는 java-web-plugin을 제외하고는 정확하게 같다고 볼 수 있다. 몇몇 사람들은 아직도 OpenJDK가 Oracle JDK에 비해 성능이 떨어진다고 하지만, 이것은 근거없는 말이다. 

    두 버전 모두 Java SE 7 JSR(JSR336) Spec 을 구현하였다.


    Dodgy Version History 

    OpenJDK7를 사용 한다면 Oracle JDK7와 동일하게 안전하다고 볼 수 있지만, 그에 비해 OpenJDK6은 안정적이지않은 History가 있는데, 진행 중인 프로젝트인 OpenJDK7를 기초로 JDK7 스펙을 제거하는 방식으로 JDK6과 Compatible 하도록 진행 됐기 때문이다.

    OpenJDK6에서는 파일 처리와 같은 기본적인 OS-Integration 관련 기능과 네트워크 처리 및 Swing 에서 몇몇 문제점이 Report 되고 있다고 한다. OpenJDK를 사용시에는 꼭 OpenJDK7를 사용하도록 한다.



    JVM


    OpenJDK 프로젝트는 아래와 같은 몇몇 Component들로 구성되어 있다.

    1) HotSpot VM

    2) The Java Calss Library

    3) Java Compiler


    VM 역시 Oracle에 의해 제공되는 HotSpot VM Spec과 동일하다.




    Source 빌드 및 Binary 배포 이슈


    OpenJDK는 소스코드만 배포하고 있어, 직접 빌드해야하나? 라는 의문이 생길수 있지만 아래와 같이 리눅스에서 rpm 패키지로 다운로드 및 설치가 가능하다.


    $ yum install java-1.7.0-openjdk




    OpenJDK의 사용 범위 
    OpenJDK를 통해 JVM기반의 오픈소스를 이용하여 서비스 및 플랫폼 운영 시에 성능 이슈가 있는지 확인한다.



    1) JVM 기반의 오픈소스 플랫폼 및 Spring과 같은 Java 기반의 오픈소스

    - JVM 기반의 오픈소스 사용시에는 Requirements 스펙에 JDK Version이 명시되어 있는지 확인한다.


    2) CI / Build

    - Java 기반의 Ant / Maven / Gradle과 같은 빌드 도구를 사용하는 빌드서버는 OpenJDK를 이용한다.


    3) Tomcat / Application

    - Tomcat 및 Application 레벨에서 OpenJDK를 이용한다. 




    결론 & OpenJDK 이관시 Risk


    위의 내용을 바탕으로 OpenJDK는 Java플랫폼의 Next Version인 JDK7의 근간이 되는 프로젝트로서, JDK7를 기준으로 Oracle에서 Binary로 배포되는 JDK와 OpenJDK는 차이가 없다고 봐도 무방하다. 

    하지만 실제 서비스에 적용하기 위해서는 사내에 OpenJDK 적용 사례가 있는지 확인할 필요가 있어보이고, 서비스에 직접적으로 영향을 미치지 않는 관리자도구 등에 시범적으로 적용하여 레퍼런스를 쌓아가는 것도 바람직해 보인다.


    만약 JDK6 기반에서 운영하는 서비스가 있다면 JDK7으로의 변경으로 인한 이슈를 살펴 볼 필요가 있다. 추가적으로 어플리케이션/빌드 및 배포/플랫폼 전반에 JVM기반의 오픈소스를 사용하는 경우 OpenJDK의 지원여부 및 성능 및 안전성에 대한 이슈를 자세히 체크 해야 한다. 





Designed by Tistory.