type java = 무언가 나오면 자바가 설치 되었거나 설정 되었다는 뜻 


java -version : 자바 버전 확인


Open JDK 와 Oracle JDK 의 차이 


Open JDK 는 2007 년 Java의 오픈소스화를 위하여 Sun 에서 저작권자가 제공을 거부한 컴포넌트들을 제외한 JDK를 제공하여 시작된 프로젝트 이다.


별개로 oracle에서 제공하는 JDK는 Oracle JDK 라고 한다.


OpenJDK Overview

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

Sun이 3rd-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 / Red Hat Enterprise 와 같은 메이저 리눅스 제공자는 배포시에 OpenJDK를 기본 Java SE 구현체로 제공하고 있다.
추가적으로 Eclipse Community의 2010 설문에서는 개발자의 21%가 OpenJDK를 사용하고 있다고 응답하였다.

OpenJDK 와 OracleJDK 스펙

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

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

아래와 같이 Vendor에 의한 분리된 Version이 존재하는데,

  • Oracle's JDK (Commertial support from oracle)
  • OpenJDK, the open source java

JDK7 이전에는 두 Version간 큰 차이가 존재해 OpenJDK는 Oracle JDK에 비해 누락된 기능 및 성능이슈가 존재 했으나,
현재는 java-web-plugin(http://en.wikipedia.org/wiki/IcedTea - 저작권이 있는 라이브러리의 대안으로 작성된)을 제외하고는 정확하게 같다고 볼 수 있다. 몇몇 사람들은 아직도 OpenJDK가 Oracle JDK에 비해 성능이 떨어진다고 하지만, 이것은 근거없는 말이다.

  • 두 Version은 모두 Java SE 7 JSR(JSR 336) Spec 을 구현하였다.

Dodgy Version History

OpenJDK7를 사용 한다면 Oracle JDK7와 동일하게 안전하다고 볼 수 있지만, 그에 비해 OpenJDK6은 안정적이지 않는 History가 있는데, 진행 중인 프로젝트인 OpenJDK7를 기초로 JDK7 스펙을 제거하는 방식으로 JDK6과 Compatible 하도록 진행 됐기 때문이다.
OpenJDK6에서는 파일 처리와 같은 기본적인 OS-Integration 관련 기능과 네트워크 처리 및 Swing 에서 몇몇 문제점이 Report 되고 있다고 한다. OpenJDK를 사용시에는 꼭 OpenJDK7 를 사용하도록 한다.



  • JDK6을 사용하고 있을 때, OpenJDK로 이관한다면 JDK6 -> JDK7로의 변경시의 이슈가 더욱 중요해 보인다.

JVM

OpenJDK 프로젝트는 아래와 같은 몇몇 Component로 구성되어 있는데,

  • HotSpot VM
  • The Java Class Library
  • Java Compiler

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

이외 Vendors
OpenJDK는 오픈소스이기 때문에 RedHat 과 같은 Vendors에 의해서 Customized 되어 배포된다면 VM에 차이가 있을 수 있다. 하지만 물론 Vendor's VM은 배포시에 Java Trademark를 사용하기를 원한다면 Java TCK에 일치하는 것을 증명해야 한다.

Source 빌드 및 Binary 배포 이슈

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


Debian, Ubuntu, etc
$ sudo apt-get install openjdk-7-jre
Fedora, Oracle Linux, Red Hat Enterprise Linux, etc.
$ su -c "yum install java-1.7.0-openjdk"


OpenJDK Quality Metrics

http://openjdk.java.net/groups/quality/metrics/


OpenJDK의 사용 범위

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



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

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

  • Apache Kafka / Netty / MongoDB / Cassandra ...
  • https://github.com/apache/cassandra 페이지를 예를 들면 Requirements 항목에 Java >= 1.7 (OpenJDK and Oracle JVMS have been tested) 라고 명시되어 있는 것을 볼 수 있다.

CI / Build

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

Tomcat / Application

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


OpenJDK 설치

JDK Download

JDK 설치 및 Tomcat 설치 Script


결론 & OpenJDK 이관시 Risk

위의 내용을 바탕으로 OpenJDK 는 Java 플랫폼의 Next Version인 JDK7의 근간이 되는 프로젝트로서, JDK7를 기준으로 Oracle 에서 Binary로 배포되는 JDK와 OpenJDK는 차이가 없다고 봐도 무방하다.
하지만 실제 서비스에 적용하기 위해서는 사내에 OpenJDK 적용 사례가 있는지 확인 할 필요가 있어보이고, 서비스에 직접적으로 영향을 미치지 않는 관리자도구 등에 시범적으로 적용하여 레퍼런스를 쌓아가는 것도 바람직해보인다.

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

참고

References
FAQ



출처 : http://stunstun.tistory.com/222 


+ Recent posts