OpenJDK와 Adoptium / AdoptOpenJDK의 차이점


183

최근 Oracle Java SE 지원 로드맵 정책 업데이트 (특히 2019 년 3 월 이후 Oracle의 무료 릴리스 업데이트 종료) 로 인해 Oracle Java에 대한 대안을 찾고있었습니다. OpenJDK가 오픈 소스 대안이라는 것을 알았습니다. 그리고 내가 발견 한 AdoptOpenJDK , 지금 알려진 A는 Adoptium로, 사전 구축 된 바이너리를 . 퍼즐.

OpenJDK와 Adoptium / AdoptOpenJDK의 차이점은 무엇입니까?


업데이트 : AdoptOpenJDK는 그것의 이름을 변경했습니다 Adoptium 그것의 일환으로 이클립스 재단에 이동 .
바질 부르 케

답변:


272

한마디로 :

  • OpenJDK 는 여러 가지 의미를 가지며 다음을 참조 할 수 있습니다.
    • Java SE (Java Platform, Standard Edition)의 무료 공개 소스 구현
    • 오픈 소스 저장소 — Java 소스 코드, 일명 OpenJDK 프로젝트
    • Oracle에서 유지 관리하는 사전 구축 된 OpenJDK 바이너리
    • OpenJDK 커뮤니티에 의해 유지 관리되는 사전 빌드 된 OpenJDK 바이너리
  • AdoptOpenJDK — 커뮤니티에서 유지 관리하는 사전 빌드 된 OpenJDK 바이너리 ( 오픈 소스 라이센스 )

설명:

사전 구축 된 OpenJDK (또는 배포) — http://hg.openjdk.java.net/ 에서 빌드되고 바이너리 또는 설치 프로그램으로 제공되는 바이너리이며 지원 계약이 가능한 다양한 플랫폼에 제공됩니다.

소스 저장소 ( OpenJDK 프로젝트 라고도 함) 인 OpenJDKhttp://hg.openjdk.java.net 에서 호스팅 되는 Mercurial 기반 오픈 소스 저장소입니다 . 입니다. 자바 소스 코드. VM 및 코어 라이브러리에서 컴파일러에 이르는 대부분의 Java 기능은이 소스 리포지토리에만 기반합니다. 오라클은 이것의 대체 포크를 가지고 있습니다.

배포판 인 OpenJDK (아래 제공 업체 목록 참조)- 맥주마찬가지로 무료이며 말과 같이 무료입니다 과 이지만, 문제가있는 경우 Oracle에 연락 할 수 없습니다. 지원 계약이 없습니다. 또한 Oracle은 LTS (장기 지원) 릴리스를 포함하여 해당 릴리스가 최신 Java 릴리스 인 경우 모든 OpenJDK (배포) 버전에 대한 업데이트 만 릴리스합니다. Oracle이 OpenJDK (배포) 버전 12.0을 릴리스하는 날 OpenJDK (배포) 버전 11.0에 보안 문제가 있어도 Oracle은 11.0의 업데이트를 릴리스하지 않습니다. Oracle에 의해서만 유지 관리됩니다.

OpenJDK 8OpenJDK 11 과 같은 일부 OpenJDK 프로젝트 는 OpenJDK 커뮤니티에서 유지 관리하며 일부 플랫폼의 일부 OpenJDK 버전에 대한 릴리스를 제공합니다. 커뮤니티 회원은이 OpenJDK 버전에서 보안 취약점에 대한 픽스를 릴리스 할 책임이 있습니다.

배포판 은 Oracle의 OpenJDK 배포판과 매우 유사합니다 (무료이며, OpenJDK 소스 리포지토리에서 소스를 컴파일하여 생성 된 빌드입니다). 엔티티로서의 AdoptOpenJDK는 패치를 백 포트하지 않습니다. 즉, 업스트림과 실질적으로 다른 AdoptOpenJDK '포크 / 버전'은 없습니다 (Win32 지원과 같은 일부 빌드 스크립트 패치 제외). 즉, 커뮤니티의 구성원 (Oracle 또는 다른 사람이지만 AdoptOpenJDK가 아닌 엔터티로)은 OpenJDK LTS 버전의 업데이트에 대한 보안 수정 사항을 백 포트하면 AdoptOpenJDK가 해당 구성을 제공합니다. OpenJDK 커뮤니티에서 유지 보수합니다.

OracleJDK- 또 다른 배포판입니다. JDK12부터는 OracleJDK의 무료 버전이 없습니다. Oracle의 JDK 배포 제품은 상업적 지원을 목적으로합니다. 이 비용을 지불하면 지원을 위해 Oracle에 의존하게됩니다. Oracle의 OpenJDK 제품과 달리 OracleJDK는 LTS 버전을 더 오래 지원합니다. 개발자는이 특정 JDK의 개인 / 개발 용도로만 무료 라이센스를받을 수 있지만 '단지 바이너리'는 기본적으로 OpenJDK 바이너리와 동일하기 때문에 대부분 빨간색 청어입니다. LTS JDK의 보안 패치 버전을 상업적으로 사용하지 않는 한 오라클 웹 사이트에서 다운로드 할 수 있다는 의미입니다.

참고 . Oracle의 OpenJDK 빌드를 "Oracle OpenJDK 빌드"라고 부르는 것이 가장 좋습니다.

오라클의 Java 제품 관리자 인 Donald Smith 다음과 같이 썼습니다 .

이상적으로는 상황에 따라 모든 Oracle JDK 빌드를 GPL 또는 상업용 라이센스에 따라 "Oracle JDK"라고합니다. 그러나 역사적 이유로 남아있는 작은 차이는 있지만 Oracle의 OpenJDK 빌드와 Oracle JDK로 따로 언급 할 것입니다.


OpenJDK 제공 업체 및 비교

-------------------------------------------------- --------------------------------------
| 공급자 | 무료 빌드 | 무료 이진 | 확장 | 상업용 | 허용 |
| | 출처에서 | 배포판 | 업데이트 | 지원 | 라이센스 |
| ------------------------------------------------- ------------------------------------- |
| AdoptOpenJDK | 예 | 예 | 예 | 아니요 | 예 |
| 아마존 – 코레 토 | 예 | 예 | 예 | 아니요 | 예 |
| 아줄 줄루 | 아니요 | 예 | 예 | 예 | 예 |
| BellSoft 리비아 | 아니요 | 예 | 예 | 예 | 예 |
| IBM | 아니요 | 아니요 | 예 | 예 | 예 |
| jClarity | 아니요 | 아니요 | 예 | 예 | 예 |
| OpenJDK | 예 | 예 | 예 | 아니요 | 예 |
| Oracle JDK | 아니요 | 예 | 아니오 ** | 예 | 아니요 |
| Oracle OpenJDK | 예 | 예 | 아니요 | 아니요 | 예 |
| ojdkbuild | 예 | 예 | 아니요 | 아니요 | 예 |
| 레드햇 | 예 | 예 | 예 | 예 | 예 |
| 수액 기계 | 예 | 예 | 예 | 예 | 예 |
-------------------------------------------------- --------------------------------------

소스에서 무료 빌드 -배포 소스 코드는 공개적으로 사용 가능하며 자체 빌드를 조립할 수 있습니다

무료 바이너리 배포판 -배포 바이너리를 공개적으로 다운로드하여 사용할 수 있습니다

확장 업데이트 -일명 LTS (장기 지원)-6 개월 릴리스 수명주기 이후 공개 업데이트

상업적 지원 -일부 공급자는 유료 고객에게 확장 된 업데이트 및 고객 지원을 제공합니다 (예 : Oracle JDK ( 지원 세부 정보 )).

허가 라이센스 -배포 라이센스는 비보호입니다 (예 : Apache 2.0)


어떤 Java 배포를 사용해야합니까?

Sun / Oracle 시절에는 일반적으로 OpenJDK 소스를 기반으로 독점 다운 스트림 JDK 배포를 생성하는 것은 Sun / Oracle이었습니다. 최근 오라클은 상용 지원 만 첨부하여 자체 소유 빌드를 수행하기로 결정했습니다. https://jdk.java.net/ 에서도 OpenJDK 빌드를 자비 롭게 게시합니다. 사이트 .

JDK 11부터는 단일 벤더 (Oracle) 사고 방식에서 원하는 조건에 따라 제품 배포를 제공하는 제공자를 선택하는 사고 방식으로 전환하는 것이 있습니다. 구축 플랫폼, 릴리스 빈도 및 신속성 지원이 구조화되는 방식 등 기존 공급 업체를 신뢰하지 않는 경우 OpenJDK를 직접 구축 할 수도 있습니다.

OpenJDK의 각 빌드는 일반적으로 동일한 원본 업스트림 소스 저장소 (OpenJDK“프로젝트”)로 만들어집니다. 그러나 각 빌드는 매우 독특합니다. $ free 또는 상업용, 브랜드 또는 비 브랜드, 순수 또는 번들 (예 : BellSoft Liberica JDK는 번들 JavaFX를 제공하며 JDK 11부터 Oracle 빌드에서 제거됨).

환경 (예 : Linux) 및 / 또는 라이센스 요구 사항이 특정 배포를 정의하지 않고 가장 표준적인 JDK 빌드 를 원하는 경우 Oracle 또는 AdoptOpenJDK의 OpenJDK를 사용하는 것이 가장 좋습니다.


추가 정보

Stephen Colebourne 의 Oracle JDK넘어서는 시간

Java는 여전히 Java Champions 커뮤니티에서 무료 입니다 (2018 년 9 월 17 일에 게시 됨)

Java는 Java Champions 커뮤니티에서 여전히 무료입니다 2.0.0 (2019 년 3 월 3 일에 게시)

Opsian의 JDK 업데이트 인터뷰에 대한 Aleksey Shipilev (2019 년 6 월 27 일에 게시)


8
다른 공급 업체 가 Azul SystemsZuluZing 제품 과 같은 OpenJDK 기반 Java 구현을 제공한다고 언급 할 수 있습니다 . 다른 하나는 Eclipse OpenJ9 프로젝트입니다.
Basil Bourque


1
@MikhailKholodkov Apache 라이센스에 대해 올바르지 않습니다. Apache License 2.0을 사용하는 AdoptOpenJDK에 대한 링크는 바이너리를 생성하기 위해 작성한 빌드 스크립트에만 적용됩니다. 바이너리는 링크 예외 라이센스와 함께 GPL을 사용하여 OpenJDK 프로젝트에서 얻은 소스 코드에서 빌드됩니다.
Basil Bourque

2
@GarrettWilson AdoptOpenJDK는 다음 두 가지만 수행합니다. (a) OpenJDK에서 제공하는 소스 코드를 사용하여 바이너리 및 설치 프로그램을 빌드하고 (b) 해당 바이너리에서 테스트를 실행합니다. AdoptOpenJDK는 Java 플랫폼을 구현하기위한 소스 코드 저장소를 유지 하지 않습니다 . 따라서 : OpenJDK는 소스 코드 일 뿐이며 AdoptOpenJDK는 바이너리 + 설치 자일뿐입니다. AdoptOpenJDK는 빌드 도구 및 테스트 스위트에 대해서만 코드를 작성합니다. AdoptOpenJDK 외에도 다른 여러 회사에서도 OpenJDK 프로젝트에서 제공하는 소스 코드 (Azul Systems, Oracle, BellSoft, Amazon AWS, RedHat / IBM, SAP 등)를 기반으로 빌드를 제공합니다.
바질 부르 케

1
@GarretWilson 저는 AdoptOpenJDK가 세 번째 작업을 수행한다고 덧붙여 야합니다. (c) 이전 의견에서 언급 한 건물 및 테스트를 지원하는 툴링 을 작성 하고 유지 관리 합니다.
Basil Bourque

63

업데이트 : AdoptOpenJDK는 그것의 이름을 변경했습니다 Adoptium 그것의 일환으로 이클립스 재단에 이동 .


OpenJDK ➙ 소스 코드
Adoptium / AdoptOpenJDK ➙ 빌드

OpenJDK와 AdoptOpenJDK의 차이점

첫 번째는 source-code 를 제공하고 다른 하나는 해당 소스 코드의 빌드 를 제공 합니다 .

Java 및 OpenJDK의 여러 공급 업체

Adoptium이클립스 재단 이전으로 알려진 AdoptOpenJDK는 , 단 하나의 Java 플랫폼의 구현을 배포 여러 공급 업체입니다. 여기에는 다음이 포함됩니다.

  • 이클립스 재단 (Adoptium / AdoptOpenJDK)
  • 아줄 시스템
  • 신탁
  • 레드햇 / IBM
  • BellSoft
  • 수액
  • 아마존 AWS
  • … 그리고 더

Java 플랫폼 구현을위한 공급 업체를 선택하는 데 도움이되도록이 플로우 차트를 참조하십시오. 클릭 / 탭하여 확대합니다.

Java 11 구현을위한 공급 업체 선택을 안내하는 순서도

다른 자료 : 이 비교표 Azul Systems 는 유용하며, 제 생각에는 진실하고 공정한 것 같습니다.

다음은 공급 업체 및 구현을 선택할 때 고려해야 할 고려 사항 및 동기 부여 목록입니다.

Java 공급 업체 선택 동기

일부 공급 업체는 JIT 기술을 선택할 수 있습니다.

AdoptOpenJDK에서 사용 가능한 HotSpot 및 JRockit 병합 및 OpenJ9의 히스토리를 보여주는 다이어그램

이 Java 생태계에 대한 자세한 내용을 보려면 Java는 여전히 무료입니다


1
'OpenJDK'가 소스를 참조하는 경우 hub.docker.com/_/openjdkhub.docker.com/_/adoptopenjdk 의 차이점은 무엇 입니까?
bcoughlan

1
@bcoughlan 다음 두 제품의 게시자에게 문의해야합니다. Docker, Inc. 링크 된 웹 페이지는 두 번째는 AdoptOpenJDK 프로젝트에 의해 유지되고 첫 번째는 "Docker Community"에 의해 유지된다고 주장합니다. 첫 번째는 OpenJDK 프로젝트가 로고를 제작했다는 인상을 주었을 때 로고 사용 및 이름 지정에 오해의 소지가 있습니다. 첫 번째는 OpenJDK가 제공 한 상표권 고지 사항 # 2를 위반하는 것일 수도 있지만 변호사는 아닙니다.
바질 부르 케

1
@SanderVerhagen OpenJDK 사이트에서 해당 다운로드 페이지에 대한 링크를 제공 할 수 있습니까? 그런 제안이 없습니다. 다른 웹 사이트 jdk.java.net 에서 Windows, macOS 및 Linux 용 Oracle OpenJDK JDK 바이너리에 대한 링크를 찾을 수 있습니다 . 이 사이트와 바이너리 다운로드는 OpenJDK 프로젝트가 아니라 Oracle에 의해 커뮤니티에 의해 제공됩니다. 는 AS 홈페이지가 말한다 : 자바 개발 키트는 Oracle에서 빌드 . 이 제품을 플로우 차트의 오른쪽 상단 모서리에있는 파란색 배럴에서 두 번째 버블로 표시합니다.
Basil Bourque

1
에 귀하의 링크 리드를 @SanderVerhagen 다른 웹 사이트 나 의심으로, 오픈 JDK의 외부 . 이 사이트 jdk.java.net/14 입니다 하지 오픈 JDK 웹 사이트의 일부도는 오픈 JDK 프로젝트의 일부입니다. 즉, openjdk.java.net은 아니다 jdk.java.net . 다시, 플로우 차트에서 파란색 배럴의 상단에있는 두 개의 거품을보십시오. 왼쪽 상단에있는 Oracle 제품은 상용 제품입니다. 오른쪽 상단에있는 Oracle 제품은 GPL 라이센스의 무료 빌드입니다. 귀하의 링크는이 특정 제품으로 연결됩니다.
Basil Bourque

1
@SanderVerhagen 제품 이름이 혼란스러워하는 것 같습니다. “Java”라는 단어는 Oracle에서 상표를 등록했으며 허가를받은 경우에만 사용할 수 있습니다. 따라서 대부분의 공급 업체는 해당 상표를 사용하지 않습니다. 대신 대부분의 공급 업체는“Java”가 아니라“OpenJDK”라는 용어를 이름의 일부로 사용합니다. 이 벤더들은 OpenJDK 프로젝트 에서 얻은 소스 코드로 빌드를하고 있습니다. 오픈 JDK 프로젝트는 소스 코드를 제공 하지 설치를 구축하지. 빌드 / 설치 프로그램의 경우 직접 만들거나 공급 업체로부터 구입해야합니다. Java is Still Free를 읽는 것이 좋습니다 .
Basil Bourque
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.