Oracle JDK와 OpenJDK의 차이점


700

참고 :이 질문은 2014 년입니다. Java 11 OpenJDK와 Oracle JDK가 수렴하고 있습니다.

Oracle과 OpenJDK간에 중요한 차이점이 있습니까?

예를 들어, 가비지 콜렉션과 다른 JVM 매개 변수가 동일합니까?

GC는 둘 사이에서 다르게 작동합니까?


3
Oracle은 더 이상 무료가 아니기 때문에 Oracle에서 OpenJDK로 전환하려는 경우에도 관련이있을 수 있습니다. developers.redhat.com/blog/2018/11/05/…
Leo Ufimtsev

답변:


338

OpenJDK와 Oracle JDK는 모두 Oracle에 의해서만 생성되고 유지됩니다.

OpenJDK와 Oracle JDK는 TCK (Java Technology Certification Kit)를 통과 한 동일한 Java 사양을 구현 한 것입니다.

대부분의 JDK 공급 업체는 TCK 호환성을 손상시키지 않고 [주로 라이센스가있는 독점 부품을 대체하고 / 특정 OS에서만 작동하는 고성능 항목으로 대체] 몇 가지 조정을 수행하여 OpenJDK 위에 작성되었습니다.

많은 공급 업체에서 Java 사양을 구현하고 TCK를 통과했습니다. 예를 들어, IBM J9, Azul Zulu, Azul Zing 및 Oracle JDK입니다.

거의 모든 기존 JDK는 OpenJDK에서 파생됩니다.

많은 사람들이 제안한 바와 같이 라이센스는 JDK간에 변경됩니다.

JDK 11부터 장시간 지원에 액세스 Oracle JDK / Java SE는 이제 상용 라이센스가 필요합니다. 구독없이 Oracle JDK로 설치중인 JDK에주의를 기울여야합니다. 출처

Ref : Java 가상 머신 목록


13
그래서 openjdk는 다른 모든 jdk의 기준이며, 복사 한 다음 자체 사양 후에 조정한다는 것입니까?
Karl Morrison

24
나는 파티에 늦었지만 어쨌든 물어볼 것이다. jdk는 openjdk 이하 지 않는 테이블에 무엇을 가져 옵니까? 이 모든 대답은 모든면에서 openjdk 사운드를 모든면에서 같거나 우수하게 만들지 만, 그렇다면 오라클이 jdk 유지 관리를 귀찮게하는 이유는 무엇입니까?
Kefka

칼 모리슨으로 @ 지금까지 내가 알고 .. 모두 JVM 스펙은 그런 식으로 일을 구현 ..하지만 사람이 그런 식으로 따라야한다는 것을 명시 적 규칙이 ... 없다
Venkateswara 라오을

13
@ Mella OpenJDK <= OracleJDK 예를 들어, Oracle JDK에는 OpenJDK에 없었던 몇 개의 신뢰할 수있는 키가 설정되어 있습니다 (현재 사람들은이 간격을 채우기 위해 키를 가져 오기만합니다) Oracle JDK에는 렌더링 속도를 높이기위한 SWING 라이브러리가 있습니다. .. (서버 응용 프로그램을 사용하는 사람은 관련이 없을 수 있음) Oracle JDK에는 애플릿 플러그인이 있습니다 (위와 동일한 이유) Oracle JDK 버그 수정 / 핫픽스는 Oracle에 의해 올바르게 배포되고 처리됩니다. 패치가 적용되고 어떤 충돌이 발생하는지
Venkateswara Rao

Java의 새로운 릴리스 모델에서 Oracle은 두 jdk 사이의 간격을 최대한 줄일 계획입니다. Oracle 개발자 이외의 jdk를 여는 데 다른 오픈 소스 기고자가 있습니까? 수정 사항을 최신 버전에서 이전 버전으로 백 포트하는 데 충분한 지원이 있는지 이해하기위한 것입니다. 이견있는 사람?
Andy Dufresne

329

들어 자바 7 , 중요한 아무것도. OpenJDK 프로젝트는 주로 Sun이 기증 한 HotSpot 소스 코드를 기반으로 합니다.

또한 OpenJDK는 Java 7에 대한 참조 구현 으로 선정 되었으며 Oracle 엔지니어가 유지 관리합니다.

JVM, JDK, JRE & OpenJDK의 차이점대해 2012 년부터 오라클 블로그 게시물에 링크 된 더 자세한 답변이 있습니다 .

Q : OpenJDK 저장소에있는 소스 코드와 Oracle JDK를 빌드하는 데 사용하는 코드의 차이점은 무엇입니까?

A : 매우 가깝습니다. Oracle JDK 릴리스에 대한 빌드 프로세스는 배포 코드와 같이 Oracle의 Java 플러그인 및 Java WebStart 구현과 일부 폐쇄 소스 3을 포함하여 몇 가지만 추가하여 OpenJDK 7에서 빌드합니다. 그래픽 래스터 라이저와 같은 타사 구성 요소, Rhino와 같은 일부 오픈 소스 타사 구성 요소 및 추가 문서 나 타사 글꼴과 같은 몇 가지 요소가 있습니다. 앞으로 우리는 JRockit Mission Control (Oracle JDK에서는 아직 제공되지 않음)과 같은 상업적 기능을 고려하는 것을 제외하고 Oracle JDK의 모든 부분을 오픈 소스로 만들고, 더 가까운 패리티를 달성하기 위해 방해가되는 타사 구성 요소를 오픈 소스 대안으로 대체하는 것을 목표로합니다. 코드베이스 사이.


42
라이센스 차이도 있습니다.
mcoolive

9
고마워 더 나은 답변을 찾았습니다. stackoverflow.com/questions/17360011/…
astroanu

9
ARM에서는이 두 가지가 성능면에서 크게 다른 것 같습니다. 왜 그런 일이 일어나고 있는지에 대한 프로파일 링을해야하지만 주관적인 차이점은 "Oracle JDK는 괜찮습니다"와 "OpenJDK는 완전히 사용할 수 없습니다"입니다.
배로 증가

1
그럼에도 불구하고 @dualed 안드로이드는 안드로이드 7에서 시작하여 openjdk로 이동하고 있습니다. venturebeat.com/2015/12/29/…
Johnny Doe

1
@JohnnyDoe 구글이 OpenJDK로 옮겨 가면 업스트림에 퍼포먼스 패치를 제공하여 안드로이드 외부의 ARM에서도 잘 동작 할 수 있기를 바란다!
dualed

95

앞으로의 주요 차이점은 출시 일정 및 지원 정책입니다.

OpenJDK

OpenJDK는 6 개월마다 기능 릴리스를 제공하며 다음 기능 릴리스까지만 지원됩니다. 본질적으로 개발자를 대상으로 한 지속적인 릴리스 스트림입니다.

Oracle JDK

Oracle JDK는 안정성을 중시하는 기업 고객을 대상으로합니다. OpenJDK 릴리스 중 하나를 기반으로하지만 장기 지원 (LTS)이 제공됩니다. Oracle JDK는 3 년마다 릴리스를 계획하고 있습니다.

여기에 이미지 설명을 입력하십시오

출처 : https://www.oracle.com/java/java9-screencasts.html?bcid=5582439790001&playerType=single-social&size=events


3
장기 릴리스는 Java 릴리스 6 개월 후에 업데이트를 받으려면 상업적 지원을 구매해야합니다. 단기 릴리스와 비교할 때 장기 릴리스의 중요성은 무엇입니까? JDK 9/10과 같은 단기 릴리스에는 Oracle의 상업적 지원이 없습니까?
Andy Dufresne

@AndyDufresne 왜 단 6 개월 후에 지원 비용을 지불해야한다고 생각하십니까? 타임 라인이 TBD라는 것을 이해하고 있습니다. 6 개월은 끔찍한 것처럼 보이지만 Java 8과 같이 5 년 동안 공개 업데이트를 기대할 수는 없지만 2 ~ 3 년 동안 공개 업데이트가 있었더라도 놀라지 않을 것입니다. 참조-이것은 oracle.com/technetwork/java/eol-135779.html 입니다.
길버트 아레나스 대거

1
오라클 링크에는 "예를 들어 Oracle JDK 11 용 LTS 릴리스 (18.9 LTS)는 Oracle Lifetime Support Policy (Oracle 평생 지원 정책)에 설명 된대로 5 년 이상 지원 될 것"이라고 언급되어 있습니다. 이 정책에는 3 가지 수준의 지원이 있으며 그 중 어느 것도 자유롭지 않은 것으로 보입니다. 또한 azul CTO의 의견 -blog.takipi.com/java-11-will-include-more-than-just-features/…를 본 후 이것을 언급합니다 . 이 새로운 릴리스 전략의 주요 목표는 이전 릴리스를 유지 관리하는 데 시간을 소비하지 않는 것입니다. 지지가 자유롭다면 지금까지와 같은 모델이 될 것입니다.
Andy Dufresne

38

들어 자바 (8) , 오픈 JDK 대 오라클 JDK는 키 차이 걸릴 수도있다 :

  • OpenJDK는 Oracle 및 개방형 Java 커뮤니티에서 제공하는 Java Standard Edition 플랫폼의 개방형 소스 구현입니다.

  • OpenJDK는 라이센스 GPL v2에 따라 릴리스되며 Oracle JDK는 Oracle Binary Code License Agreement에 따라 라이센스가 부여됩니다.

  • 실제로 Oracle JDK의 빌드 프로세스는 OpenJDK 소스 코드에서 빌드됩니다. 따라서 Oracle JDK와 OpenJDK 사이에는 큰 기술적 차이가 없습니다. 기본 코드 외에 Oracle JDK에는 Oracle의 Java Plugin 및 Java WebStart 구현이 포함됩니다. 또한 그래픽 래스터 라이저 및 Rhino 와 같은 타사 비공개 소스 및 공개 소스 구성 요소도 각각 포함합니다. OpenJDK Font Renderer와 Oracle JDK Flight Recorder는 Oracle JDK와 OpenJDK의 주요 차이점입니다.

  • Rockit은 Oracle의 JVM이었으며 Java SE 7부터 HotSpot 및 JRockit이 단일 JVM으로 병합되었습니다. 이제 병합 된 HotSpot JVM 만 사용할 수 있습니다.
  • 사람들이 OpenJDK를 실행하는 동안 문제가 있다고 주장하고 Oracle JDK로 전환하면 해결 된 사례가 있습니다.
  • 트위터에는 자체 JDK가 있습니다.
  • Minecraft와 같은 소프트웨어는 Oracle JDK가 사용될 것으로 예상합니다. 실제로는 경고합니다.

차이점에 대한 전체 목록은 Oracle JDK와 OpenJDK 및 Java JDK 개발 프로세스 의 소스 기사를 참조하십시오.


4
Android Studio의 경우 더 이상 적용되지 않습니다. 최신 OpenJDK 사본은 Android Studio 2.2 이상과 함께 제공되며 이는 Android 프로젝트에 사용하도록 권장하는 JDK 버전입니다. 출처 : developer.android.com/studio/intro/studio-config#jdk
MKesper

“Minecraft와 같은 소프트웨어는 Oracle JDK가 사용될 것으로 예상합니다. 실제로 경고합니다.” 실제로 우분투에서 Mojang의 공식 .deb 설치 프로그램은 실행기를 설치할 때 OpenJDK를 가져옵니다.
Moilleadóir

29

Oracle 및 OpenJDK JVM은 동일하며 GC 기능이 동일합니다 (최신 버전 10 이상). Oracle이 OpenJDK JVM을 관리하기 전에 이전 Openjdk JVM을 여러 환경에서 거의 사용할 수 없게하는 구체적인 차이점이있었습니다. JVM은 이제 동일합니다.

키트의 일부로 JVM을 포함하는 JDK는 라이센스, 릴리스 및 유지 관리 일정 및 JDK에 포함 된 소프트웨어 라이브러리에 따라 다릅니다. 나에게 중요한 차이점은 코드가 존재하지 않으면 코드가 실행되지 않는 것을 의미합니다. 라이센스뿐만 아니라

diff --brief -r openjdk oraclejdk

결정적으로 리눅스 JDK에있는 다른 파일들 외에도 다음 파일이 누락되었습니다 (따라서 코드를 '확장'했다면 OpenJDK에서 작동하지 않았고 javafx를 사용하는 동안 OracleJDK에서 그렇게했습니다. 정확합니다).

Only in jdk-10.0.1/bin: javapackager
Only in jdk-10.0.1/bin: javaws
Only in jdk-10.0.1/bin: jcontrol
Only in jdk-10.0.1/bin: jmc
Only in jdk-10.0.1/bin: jweblauncher
Only in jdk-10.0.1/lib: ant-javafx.jar
Only in jdk-10.0.1/lib: deploy
Only in jdk-10.0.1/lib: deploy.jar
Only in jdk-10.0.1/lib: desktop
Only in jdk-10.0.1/lib: fontconfig.bfc
Only in jdk-10.0.1/lib: fontconfig.properties.src
Only in jdk-10.0.1/lib: fontconfig.RedHat.6.bfc
Only in jdk-10.0.1/lib: fontconfig.RedHat.6.properties.src
Only in jdk-10.0.1/lib: fontconfig.SuSE.11.bfc
Only in jdk-10.0.1/lib: fontconfig.SuSE.11.properties.src
Only in jdk-10.0.1/lib: fonts
Only in jdk-10.0.1/lib: javafx.properties
Only in jdk-10.0.1/lib: javafx-swt.jar
Only in jdk-10.0.1/lib: java.jnlp.jar
Only in jdk-10.0.1/lib: javaws.jar
Only in jdk-10.0.1/lib: jdk.deploy.jar
Only in jdk-10.0.1/lib: jdk.javaws.jar
Only in jdk-10.0.1/lib: jdk.plugin.jar
Only in jdk-10.0.1/lib: jfr
Only in jdk-10.0.1/lib: libavplugin-53.so
Only in jdk-10.0.1/lib: libavplugin-54.so
Only in jdk-10.0.1/lib: libavplugin-55.so
Only in jdk-10.0.1/lib: libavplugin-56.so
Only in jdk-10.0.1/lib: libavplugin-57.so
Only in jdk-10.0.1/lib: libavplugin-ffmpeg-56.so
Only in jdk-10.0.1/lib: libavplugin-ffmpeg-57.so
Only in jdk-10.0.1/lib: libbci.so
Only in jdk-10.0.1/lib: libcmm.so
Only in jdk-10.0.1/lib: libdecora_sse.so
Only in jdk-10.0.1/lib: libdeploy.so
Only in jdk-10.0.1/lib: libfxplugins.so
Only in jdk-10.0.1/lib: libglassgtk2.so
Only in jdk-10.0.1/lib: libglassgtk3.so
Only in jdk-10.0.1/lib: libglass.so
Only in jdk-10.0.1/lib: libgstreamer-lite.so
Only in jdk-10.0.1/lib: libjavafx_font_freetype.so
Only in jdk-10.0.1/lib: libjavafx_font_pango.so
Only in jdk-10.0.1/lib: libjavafx_font.so
Only in jdk-10.0.1/lib: libjavafx_iio.so
Only in jdk-10.0.1/lib: libjfxmedia.so
Only in jdk-10.0.1/lib: libjfxwebkit.so
Only in jdk-10.0.1/lib: libnpjp2.so
Only in jdk-10.0.1/lib: libprism_common.so
Only in jdk-10.0.1/lib: libprism_es2.so
Only in jdk-10.0.1/lib: libprism_sw.so
Only in jdk-10.0.1/lib: librm.so
Only in jdk-10.0.1/lib: libt2k.so
Only in jdk-10.0.1/lib: locale
Only in jdk-10.0.1/lib: missioncontrol
Only in jdk-10.0.1/lib: oblique-fonts
Only in jdk-10.0.1/lib: plugin.jar
Only in jdk-10.0.1/lib: plugin-legacy.jar
Only in jdk-10.0.1/lib/security: blacklist
Only in jdk-10.0.1/lib/security: public_suffix_list.dat
Only in jdk-10.0.1/lib/security: trusted.libraries
Only in openjdk-10.0.1: man`

5
실제 차이점 을 지적 해 주셔서 감사합니다 . 실행되지 않는 코드는 실제 문제입니다. 어디에서 당신을 기반 diff으로 했습니까?
Matthieu

19

오라클 블로그에 따르면 Java 11 이상용 Oracle JDK 릴리스

Java 11부터 Oracle은 오픈 소스 GNU General Public License v2, Classpath Exception (GPLv2 + CPE) 및 Oracle JDK를 Oracle 제품 또는 서비스의 일부로 사용하는 사람들을위한 상업용 라이센스로 JDK 릴리스를 제공합니다. 또는 오픈 소스 소프트웨어를 사용하지 않으려는 사람. 오픈 소스 라이센스와 상업용 라이센스 의 조합은 무료 및 유료 상업용 용어가 결합 된 역사적 " BCL "라이센스를 대체합니다 .

각 라이센스마다 다른 빌드가 제공되지만 이러한 빌드는 아래에 자세히 설명 된 일부 화장품 및 패키징 차이점과 기능적으로 동일합니다.

BCL에서 GPL로

오라클 자바 SE 기술 ( "BCL")에 대한 이진 코드 라이센스는 10 년이 넘게 오라클 자바 SE 기술에 대한 기본 라이센스하고있다. BCL은 특정 조건 하에서 라이센스 비용없이 사용할 수 있습니다. 향후 상황을 단순화하기 위해 Oracle 은 Linux 플랫폼과 동일한 라이센스 모델을 사용하여 Java 9 부터 오픈 소스 라이센스 OpenJDK 빌드제공 하기 시작했습니다 . Oracle Java SE 바이너리를 무료로 얻는 데 익숙한 경우 jdk.java.net 에서 제공되는 Oracle OpenJDK 빌드를 사용하여 계속 진행할 수 있습니다 . Oracle의 상용 제품 또는 서비스의 일부로 Oracle Java SE 바이너리를 얻는 데 익숙하다면 My Oracle Support (MOS) 및 기타 위치를 통해 Oracle JDK 릴리스를 계속 얻을 수 있습니다.

기능적으로 동일하고 상호 교환 가능 ...

Oracle의 BCL 라이센스가있는 JDK에는 역사적으로 OpenJDK 빌드에서는 사용할 수 없었던“상업 기능”이 포함되어있었습니다. 그러나 약속 한대로 지난 1 년 동안 Oracle은 이러한 기능을 OpenJDK 커뮤니티에 기여했습니다.

따라서 Java 11부터 Oracle JDK 빌드와 OpenJDK 빌드 는 본질적으로 동일합니다.

... 화장품과 포장의 차이점이 있지만

OpenJDK 기고자와 논의 할 시간이 더 필요하기 때문에 약간의 차이, 일부는 의도적이며 장식적인 부분이 남아 있습니다.

  • Oracle JDK 11은 -XX : + UnlockCommercialFeatures 옵션을 사용할 때 경고를 표시하지만 OpenJDK 빌드에서는이 옵션으로 오류가 발생합니다. 이 옵션은 OpenJDK의 일부가 아니며 OpenJDK에 상용 기능이 없기 때문에 지금 추가하는 것은 의미가 없습니다. Oracle JDK 10 및 이전 릴리스의 사용자가 Oracle JDK 11 이상으로 쉽게 마이그레이션 할 수 있도록하기 위해 이러한 차이점이 남아 있습니다.
  • Oracle JDK 11은 " Advanced Management Console에 사용 로그 데이터를 제공하도록 구성 할 수 있습니다. 별도의 상용 Oracle 제품인 "도구에 . 우리는 다른 OpenJDK 기고자들과 협력하여 그러한 사용 데이터가 향후 릴리스에서 OpenJDK에서 어떻게 유용 할 수 있는지 논의 할 것입니다. 이러한 차이는 주로 결정이 내려 질 때까지 Oracle 고객에게 일관된 경험을 제공하기 위해 유지됩니다.
  • javac --release 명령은 Java 9 및 Java 10 대상에 대해 다르게 작동합니다. 해당 릴리스에서는 Oracle JDK에 해당 OpenJDK 릴리스의 일부가 아닌 추가 모듈이 포함 되었기 때문입니다.
    • javafx.base
    • javafx.controls
    • javafx.fxml
    • javafx.graphics
    • javafx.media
    • javafx.web
    • java.jnlp
    • jdk.jfr
    • jdk.management.cmm
    • jdk.management.jfr
    • jdk.management.resource
    • jdk.packager.services
    • jdk.snmp

이러한 차이는 특정 종류의 레거시 사용에 일관된 경험을 제공하기 위해 남아 있습니다. 이러한 모듈은 이제 OpenJFX의 일부로 개별적으로 사용 가능 하며, Oracle이 OpenJDK (예 : Flight Recorder)에 기여한 상용 기능이거나 Oracle JDK 11 (예 : JNLP)에서 제거 된 상용 기능이기 때문에 OpenJDK와 Oracle JDK 모두에서 사용할 수 있습니다. .

  • java --version 및 java -fullversion 명령의 출력은 Oracle JDK 빌드와 OpenJDK 빌드를 구별하여 지원 팀이 존재할 수있는 모든 문제를 진단 할 수 있습니다. 특히 Oracle JDK 11 빌드에서 java --version을 실행하면 다음과 같은 결과가 발생합니다.

자바 11 2018-09-25

Java (TM) SE 런타임 환경 18.9 (빌드 11 + 28)

Java HotSpot ™ 64 비트 서버 VM 18.9 (빌드 11 + 28, 혼합 모드)

OpenJDK 11 빌드의 경우 :

openjdk 버전 "11"2018-09-25

OpenJDK 런타임 환경 18.9 (빌드 11 + 28)

OpenJDK 64 비트 서버 VM 18.9 (빌드 11 + 28, 혼합 모드)

  • Oracle JDK는 항상 타사 암호화 공급자가 알려진 인증서로 서명해야했습니다. OpenJDK의 암호화 프레임 워크에는 개방형 암호화 인터페이스가 있으므로 사용할 수있는 공급자를 제한하지 않습니다. Oracle JDK 11은 계속 요구할 것입니다 유효한 서명 하며, Oracle OpenJDK 빌드는 유효한 서명 또는 서명되지 않은 타사 암호화 공급자를 계속 사용할 수 있습니다.
  • Oracle JDK 11은 레거시 데스크탑 사용과 일관된 경험을 위해 설치 프로그램, 브랜딩 및 JRE 패키징을 계속 포함합니다. Oracle OpenJDK 빌드는 현재 zip 및 tar.gz 파일로 제공되며 대체 배포 형식도 고려됩니다.

10

Oracle JDK 11과 OpenJDK 11의 나머지 화장품 및 패키징 차이점은이 블로그 게시물에서 확인할 수 있습니다.

https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later

한마디로 :

  • -XX : + UnlockCommercialFeatures 옵션을 사용할 때 Oracle JDK 11이 경고를 표시합니다.
  • "고급 관리 콘솔"도구에 사용 로그 데이터를 제공하도록 구성 할 수 있습니다.
  • 항상 타사 암호화 공급자가 알려진 인증서로 서명해야했습니다.
  • 설치 프로그램, 브랜딩 및 JRE 패키징이 계속 포함됩니다.
  • javac --release 명령은 Java 9 및 Java 10 대상에 대해 약간 다르게 동작합니다.
  • java --version 및 java -fullversion 명령의 출력은 Oracle JDK 빌드와 OpenJDK 빌드를 구별합니다.

2
귀하의 답변 대부분에 서명이있는 것으로 나타났습니다. 나는 그것들을 편집했다. 태그 라인 및 서명이 허용되지 않습니까?를 읽으십시오 . stackoverflow.com/help/behavior (특히 "서명, 태그 라인 또는 인사말을 사용하지 마십시오"섹션)
Mark Rotteveel

7
  1. Oracle은 3 년마다 릴리스를 제공하며 OpenJDK는 6 개월마다 릴리스됩니다.
  2. 오라클은 릴리스에 대한 장기적인 지원을 제공합니다. 반면 OpenJDK는 다음 버전이 출시 될 때까지만 릴리스 변경 사항을 지원합니다.
  3. Oracle JDK는 Oracle Binary Code License Agreement에 따라 라이센스가 부여 된 반면 OpenJDK에는 GNU GPL (General Public License) 버전 2가 있으며 링크 예외가 있습니다.
  4. Oracle 제품에는 Flight Recorder, Java Mission Control 및 Application Class-Data Sharing 기능이 있으며 OpenJDK에는 Font Renderer 기능이 있으며, 더 많은 가비지 콜렉션 옵션과 더 나은 렌더러가 있습니다.
  5. Oracle JDK는 Oracle Corporation에서 완전히 개발 한 반면 OpenJDK는 Oracle, OpenJDK 및 Java Community에서 개발했습니다. 그러나 Red Hat, Azul Systems, IBM, Apple Inc., SAP AG와 같은 최고의 회사들도 개발에 적극적으로 참여하고 있습니다.

Java 11에서 큰 변화로

오라클은 오픈 소스와 상용 라이센스의 조합으로 과거“BCL”라이센스를 변경합니다

  • -XX : + UnlockCommercialFeatures 옵션을 사용하면 Java 11 용 Oracle 키트에서 경고가 발생하지만 OpenJDK 빌드에서는이 옵션으로 인해 오류가 발생합니다.
  • Oracle JDK는 "Advanced Management Console"도구에 사용 로그 데이터를 제공하는 구성을 제공합니다.
  • Oracle은 항상 타사 암호화 공급자가 알려진 인증서로 서명해야했지만 OpenJDK의 암호화 프레임 워크에는 개방형 암호화 인터페이스가 있으므로 어떤 공급자를 사용할 수 있는지에 대한 제한이 없습니다.
  • Oracle JDK 11에는 설치 프로그램, 브랜딩 및 JRE 패키징이 계속 포함되지만 OpenJDK 빌드는 현재 zip 및 tar.gz 파일로 제공됩니다.
  • javac –release 명령은 Oracle 릴리스에 일부 추가 모듈이 있기 때문에 Java 9 및 Java 10 대상에 대해 다르게 작동합니다.
  • java –version 및 java -fullversion 명령의 출력은 Oracle 빌드와 OpenJDK 빌드를 구별합니다.


업데이트 : 2019 년 8 월 25 일



여기에 이미지 설명을 입력하십시오

자세한 내용은 oracle-vs-openjdk



5

명백한 라이센싱 차이 외에도 OpenJDK와 OracleJDK 11의 주요 차이점은 안정성 및 성능 업데이트입니다.

출처 : https://www.youtube.com/watch?v=Adv9--6IcQI&t=385

6 개월마다 두 개의 코드베이스가 동기화됩니다. 그러나 6 개월 동안 OpenJDK는 보안 업데이트 만 받고 OracleJDK는 추가 안정성 및 성능 업데이트를받습니다.

OpenJDK와 OracleJDK 둘 다에 대해 업데이트 릴리스가 3 개월마다 발생한다는 것을 감안할 때 이는 다음 주요 릴리스가 나오고 업그레이드 할 때까지 최대 3 개월간 수정 사항이 누락되었음을 의미합니다. 그러나 LTS 릴리스를 고수하기로 선택하면 상업용 라이센스가 더 의미가 있습니다.


3

또한 Java 8의 경우 AMIS Technology Blog가 다양한 JVM에서 호스팅하는 반응성 (비 차단) Spring Boot REST 응용 프로그램에 대한 흥미로운 성능 벤치 마크가 2018 년 11 월에 발표되어 다음과 같은 차이점이 있습니다.

  • OpenJDK는 OracleJDK보다 CPU 사용량이 높습니다.
  • OpenJDK는 OracleJDK보다 응답 시간이 약간 낮습니다.
  • OpenJDK는 OracleJDK보다 메모리 사용량이 높습니다.

자세한 내용은 소스 기사를 참조하십시오.

물론 YMMV는 벤치 마크 중 하나 일뿐입니다.


3

본인은 Oracle JDK를 프로덕션 환경에서 사용할 수 없으므로 회사를 위해 구축중인 웹 응용 프로그램에 대해 합법적으로 (유료없이) 사용할 수 없다는 것을 알고 있습니다. OpenJDK를 사용해야합니다. 내가 틀렸다면 정정 해주세요! 에서 이 문서 .

Java 11부터 Oracle JDK는 개발 및 테스트 환경으로 제한됩니다. 상업적 지원을 구매 한 경우 Oracle JDK는 프로덕션 환경에서만 사용할 수 있습니다. 대신 오라클은 OpenJDK 기반의 Java 빌드를 무료로 제공하여 프로덕션 환경에서 사용할 수 있습니다. 그러나 공식 Oracle JDK의 경우 실제 로드맵은 다음과 같습니다.

업데이트 : 나는 틀렸다. Oracle JDK를 무료로 사용할 수는 있지만 6 개월 후에 보안 업데이트를받지 못하므로 위험을 감수해야합니다. 위의 링크 된 기사 섹션 "새 릴리스 기차가 내 회사에 어떤 의미가 있습니까?"를 참조하십시오.


Oracle에 따르면 이는 더 이상 JDK 13에 해당되지 않을 수 있습니다. Oracle에 따르면 Oracle JDK에 대한 새 라이센스가 있습니다. 이전 Oracle JDK 라이센스는 더 이상 사용할 수 없습니다. " oracle.com/downloads/licenses/javase-license1.html을 참조하십시오 .
AL Flanagan

Oracle jdk8u241의 현재 릴리스는 프로덕션 용으로 무료입니까?
Nirav Shah
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.