OpenJDK ve Adoptium / AdoptOpenJDK arasındaki fark


184

Son zamanlarda Oracle Java SE Desteği Yol Haritası politika güncellemesi (özellikle Mart 2019'dan sonra Oracle'dan ücretsiz sürüm güncellemelerinin sonu) nedeniyle Oracle Java'ya alternatifler arıyorum. OpenJDK'nın açık kaynaklı bir alternatif olduğunu gördüm. Ve buldum AdoptOpenJDK , şimdi bilinen bir olduğu Adoptium olarak, önceden oluşturulmuş ikili . Bulmaca.

OpenJDK ve Adoptium / AdoptOpenJDK arasındaki fark nedir?


Güncelleme: AdoptOpenJDK , Eclipse Foundation'a taşınmasının bir parçası olarak adını Adoptium olarak değiştirdi .
Basil Bourque

Yanıtlar:


274

Kısacası:

  • OpenJDK'nın birden çok anlamı vardır ve aşağıdakilere başvurabilir:
    • Java Platform, Standard Edition'ın (Java SE) ücretsiz ve açık kaynak uygulaması
    • açık kaynak deposu - Java kaynak kodu aka OpenJDK projesi
    • Oracle tarafından sağlanan önceden oluşturulmuş OpenJDK ikili dosyaları
    • OpenJDK topluluğu tarafından tutulan önceden oluşturulmuş OpenJDK ikili dosyaları
  • AdoptOpenJDK - topluluk tarafından sağlanan önceden oluşturulmuş OpenJDK ikili dosyaları ( açık kaynak lisanslı )

Açıklama:

Önceden oluşturulmuş OpenJDK (veya dağıtım) - http://hg.openjdk.java.net/ adresinden oluşturulan , arşiv veya yükleyici olarak sağlanan ve çeşitli platformlar için olası bir destek sözleşmesiyle sunulan ikili dosyalar .

OpenJDK, kaynak deposu (diğer adıyla OpenJDK projesi ) - Bir olan Mercurial barındırılan açık kaynak deposu, tabanlı http://hg.openjdk.java.net . Java kaynak kodu. Java özelliklerinin büyük çoğunluğu (VM ve çekirdek kütüphanelerden derleyiciye kadar) yalnızca bu kaynak deposuna dayanır. Oracle'ın bunun alternatif bir çatalı var.

OpenJDK, dağıtım (aşağıda sağlayıcılarının listesine bakın) - olduğu bira gibi serbest ve tür konuşmada serbest Eğer onunla sorunları varsa Oracle aramaya alamadım, ama. Destek sözleşmesi yoktur. Ayrıca, Oracle, herhangi bir OpenJDK (dağıtım) sürümüne yönelik güncellemeleri yalnızca LTS (uzun süreli destek) sürümleri de dahil olmak üzere en son Java sürümü ise yayınlar. Oracle'ın OpenJDK (dağıtım) sürüm 12.0'ı çıkardığı gün, OpenJDK (dağıtım) sürüm 11.0'da bir güvenlik sorunu olsa bile, Oracle 11.0 için bir güncelleştirme yayınlamaz. Yalnızca Oracle tarafından korunur.

OpenJDK 8 ve OpenJDK 11 gibi bazı OpenJDK projeleri OpenJDK topluluğu tarafından sürdürülür ve bazı platformlar için bazı OpenJDK sürümleri için sürümler sağlar. Topluluk üyeleri, bu OpenJDK sürümlerinde güvenlik açıkları için düzeltmeler yayınlama sorumluluğunu üstlenmiştir.

AdoptOpenJDK, dağıtım Oracle'ın OpenJDK dağıtımına çok benzer (ücretsiz olması ve OpenJDK kaynak deposundan kaynakların derlenmesi ile üretilen bir derleme). Bir varlık olarak AdoptOpenJDK, backporting yamaları olmayacaktır, yani, yukarı akıştan önemli ölçüde farklı bir AdoptOpenJDK 'fork / version' olmayacaktır (Win32 desteği gibi şeyler için bazı komut dosyası yamaları hariç). Yani, topluluk üyeleri (Oracle veya diğerleri, ancak bir varlık olarak AdoptOpenJDK değil) OpenJDK LTS sürümlerinin güncellemelerine güvenlik düzeltmeleri yaparsa, AdoptOpenJDK bunlar için derlemeler sağlar. OpenJDK topluluğu tarafından sürdürülür.

OracleJDK - başka bir dağıtımdır. JDK12 ile başlayarak OracleJDK'nin ücretsiz sürümü olmayacaktır. Oracle'ın JDK dağıtım teklifi ticari destek amaçlıdır. Bunun için ödeme yaparsınız, ancak destek için Oracle'a güvenirsiniz. Oracle'ın OpenJDK teklifinin aksine, OracleJDK, LTS sürümleri için daha uzun destekle birlikte gelir. Bir geliştirici olarak, sadece bu belirli JDK'nın kişisel / geliştirme kullanımı için ücretsiz bir lisans alabilirsiniz, ancak 'sadece ikili' temelde OpenJDK ikili ile aynı olduğu için çoğunlukla kırmızı bir ringa balığı. Sanırım ticari olarak kullanmayacağınıza söz verdiğiniz sürece, LTS JDK'ların güvenlik yamalı sürümlerini Oracle'ın web sitelerinden indirebilirsiniz.

Not . Oracle tarafından OpenJDK yapılarını "Oracle OpenJDK yapıları" olarak adlandırmak en iyisi olabilir.

Oracle'ın Java ürün yöneticisi Donald Smith şunları yazıyor :

İdeal olarak, tüm Oracle JDK yapılarına, durumunuza bağlı olarak GPL veya ticari lisans altında "Oracle JDK" olarak atıfta bulunuruz. Ancak, tarihsel nedenlerden dolayı, kalan küçük farklar mevcut olsa da, bunlara ayrı ayrı Oracle'ın OpenJDK derlemeleri ve Oracle JDK olarak değineceğiz.


OpenJDK Sağlayıcıları ve Karşılaştırma

-------------------------------------------------- --------------------------------------
| Sağlayıcı | Ücretsiz Yapılar | Ücretsiz İkili | Genişletilmiş | Ticari | İzin verici |
| | Kaynak | Dağıtımlar | Güncellemeler | Destek | Lisansı |
| ------------------------------------------------- ------------------------------------- |
| AdoptOpenJDK | Evet | Evet | Evet | Hayır | Evet |
| Amazon - Corretto | Evet | Evet | Evet | Hayır | Evet |
| Azul Zulu | Hayır | Evet | Evet | Evet | Evet |
| BellSoft Liberica | Hayır | Evet | Evet | Evet | Evet |
| IBM | Hayır | Hayır | Evet | Evet | Evet |
| jClarity | Hayır | Hayır | Evet | Evet | Evet |
| OpenJDK | Evet | Evet | Evet | Hayır | Evet |
| Oracle JDK | Hayır | Evet | Hayır ** | Evet | Hayır |
| Oracle OpenJDK | Evet | Evet | Hayır | Hayır | Evet |
| ojdkbuild | Evet | Evet | Hayır | Hayır | Evet |
| RedHat | Evet | Evet | Evet | Evet | Evet |
| SapMachine | Evet | Evet | Evet | Evet | Evet |
-------------------------------------------------- --------------------------------------

Kaynaktan Ücretsiz Yapılar - dağıtım kaynak kodu herkese açıktır ve kendi yapısını oluşturabilir

Ücretsiz İkili Dağıtımlar - dağıtım ikili dosyaları karşıdan yüklenebilir ve kullanılabilir

Genişletilmiş Güncellemeler - aka LTS (uzun vadeli destek) - 6 aylık sürüm yaşam döngüsünün ötesinde Herkese Açık Güncellemeler

Ticari Destek - bazı sağlayıcılar Oracle JDK gibi ücretli müşterilere genişletilmiş güncellemeler ve müşteri desteği sunar ( destek ayrıntıları )

İzinli Lisans - dağıtım lisansı koruyucu değildir, örneğin Apache 2.0


Hangi Java Dağıtımını Kullanmalıyım?

Sun / Oracle günlerinde, genellikle Sun / Oracle, OpenJDK kaynaklarına dayanan tescilli aşağı akış JDK dağıtımlarını üretiyordu. Son zamanlarda Oracle, yalnızca ticari destek ekleyerek kendi tescilli yapılarını yapmaya karar vermişti. OpenJDK yapılarını https://jdk.java.net/ sitesinde de nezaketle yayınlıyorlar .

JDK 11'i başlatan şey, tek tedarikçi (Oracle) zihniyetinden, istediğiniz koşullar altında size ürün için bir dağıtım sağlayan bir sağlayıcı seçtiğiniz zihniyete geçiştir: oluşturdukları platformlar, sürümlerin sıklığı ve çabukluğu Mevcut satıcılardan hiçbirine güvenmiyorsanız, OpenJDK'yı kendiniz de oluşturabilirsiniz.

Her OpenJDK derlemesi genellikle aynı orijinal yukarı akış kaynak deposundan (OpenJDK “proje”) yapılır. Bununla birlikte, her yapı oldukça benzersizdir - ücretsiz veya ticari, markalı veya markasız, saf veya paketlenmiş (örn. BellSoft Liberica JDK, JDK 11'den başlayarak Oracle derlemelerinden kaldırılmış paketlenmiş JavaFX sunar).

Hiçbir ortam (ör. Linux) ve / veya lisans gereksinimi belirli bir dağıtım tanımlamazsa ve en standart JDK derlemesini istiyorsanız, muhtemelen en iyi seçenek OpenJDK'yı Oracle veya AdoptOpenJDK ile kullanmaktır.


Ek bilgi

Stephen Colebourne'un Oracle JDK'sının ötesine bakma zamanı

Java Şampiyonlar topluluğu tarafından Java Hala Ücretsiz (17 Eylül 2018'de yayınlandı)

Java, Champions Champions topluluğu tarafından Hala Ücretsiz 2.0.0 (3 Mart 2019'da yayınlandı)

Aleksey Shipilev , JDK'nın Opsian tarafından yaptığı röportaj hakkında (27 Haziran 2019'da yayınlandı)


8
Diğer satıcıların, OpenJDK tabanlı, Azul Systems'ın Zulu ve Zing ürünleri gibi Java uygulamaları sağladığını da belirtebilirsiniz . Diğeri Eclipse OpenJ9 projesidir.
Basil Bourque


1
@MikhailKholodkov Apache lisansı hakkında yanlış. Apache License 2.0 kullanan AdoptOpenJDK'ye bağlantınız yalnızca ikili dosyalarını oluşturmaya yardımcı olmak için yazdıkları derleme komut dosyaları için geçerlidir. İkili dosyalar, bağlantı istisnası lisansıyla GPL kullanılarak OpenJDK projesinden elde edilen kaynak kodundan oluşturulur.
Basil Bourque

2
@GarrettWilson AdoptOpenJDK sadece 2 şey yapar: (a) OpenJDK tarafından sağlanan kaynak kodunu kullanarak ikili dosyalar ve montajcılar oluşturun ve (b) Bu ikili dosyalar üzerinde testler yapın. AdoptOpenJDK yok değil Java platformunu uygulanması için kaynak kodunun bir depo korumak. Yani: OpenJDK sadece kaynak kodu, AdoptOpenJDK sadece ikili dosyalar + yükleyicilerdir. AdoptOpenJDK yazarları yalnızca yapı araçları ve test paketleri için kod yazar. AdoptOpenJDK'nın yanı sıra, diğer birçok şirket de OpenJDK projesi tarafından sağlanan kaynak koduna göre derlemeler sağlar: Azul Systems, Oracle, BellSoft, Amazon AWS, RedHat / IBM, SAP ve daha fazlası.
Basil Bourque

1
@GarretWilson AdoptOpenJDK'nın üçüncü bir şey yaptığını eklemeliyim: (c) Önceki yorumumda belirtilen bina ve testi desteklemek için araçlar oluşturur ve korur .
Basil Bourque

64

Güncelleme: AdoptOpenJDK , Eclipse Foundation'a taşınmasının bir parçası olarak adını Adoptium olarak değiştirdi .


OpenJDK ➙ kaynak kodu
Adoptium / AdoptOpenJDK ➙ builds

OpenJDK ve AdoptOpenJDK arasındaki fark

Birincisi kaynak kodu , diğeri bu kaynak kodunun derlemelerini sağlar .

Çeşitli Java ve OpenJDK tedarikçileri

Adoptium ait Eclipse Foundation eskiden olarak bilinen AdoptOpenJDK , tek Java platformunun uygulamalarını dağıtarak çeşitli satıcılarının olduğunu. Bunlar:

  • Eclipse Vakfı (Adoptium / AdoptOpenJDK)
  • Azul Sistemleri
  • torpil
  • Red Hat / IBM
  • BellSoft
  • SAP
  • Amazon AWS
  • … ve dahası

Java platformunun uygulanması için bir satıcı seçmenize yardımcı olması için bu akış şemasına bakın. Yakınlaştırmak için tıklayın / dokunun.

Java 11 uygulaması için bir satıcı seçmenizde size yol gösteren akış şeması

Başka bir kaynak: Azul Systems'ın bu karşılaştırma matrisi faydalıdır ve bence gerçek ve adil görünüyor.

Burada bir satıcı ve uygulama seçerken göz önünde bulundurulması gereken hususların ve motivasyonların bir listesi bulunmaktadır.

Java için bir satıcı seçmede motivasyonlar

Bazı satıcılar size JIT teknolojisi seçenekleri sunar.

HotSpot ve JRockit birleşmesinin geçmişini gösteren diyagram ve hem AdoptOpenJDK'da bulunan OpenJ9

Bu Java ekosistemi hakkında daha fazla bilgi edinmek için Java Hala Ücretsiz


1
'OpenJDK' kaynağa atıfta bulunuyorsa, hub.docker.com/_/openjdk ve hub.docker.com/_/adoptopenjdk arasındaki fark nedir ?
bcoughlan

1
@bcoughlan Bu iki ürünün yayıncısına sormanız gerekir: Docker, Inc. Bağlantılı web sayfalarınız, ikincisinin AdoptOpenJDK projesi tarafından korunduğunu, birincisi ise "Docker Topluluğu" tarafından korunduğunu iddia ediyor. Bunlardan ilki, OpenJDK projesinin onu ürettiği izlenimini vermiş olabileceği için logoyu ve adlandırmada yanıltıcıdır, durum böyle değildir. Birincisi OpenJDK tarafından verilen ticari marka bildiriminin 2. maddesini bile ihlal ediyor olabilir , ancak ben bir avukat değilim.
Basil Bourque

1
@SanderVerhagen OpenJDK sitesindeki bu indirme sayfasına bir link verebilir misiniz? Böyle bir teklif bulamıyorum. Başka bir web sitesinde Oracle'ın Windows, macOS ve Linux için OpenJDK JDK ikili dosyalarına bir bağlantı buluyorum: jdk.java.net . Bu site ve ikili indirmeleri, OpenJDK projesi tarafından değil, Oracle tarafından topluluğun izniyle sunulmaktadır. Gibi ana sayfası diyor ki: Java Development Kit Oracle'dan, inşa . Bu ürünü, sağ üst köşemdeki akış şemamın mavi varilindeki ikinci kabarcık olarak gösteriyorum.
Basil Bourque

1
@SanderVerhagen Bağlantınız , şüphelendiğim gibi OpenJDK dışında farklı bir web sitesine yönlendiriyor . Site jdk.java.net/14 olduğu değil OpenJDK web sitesinin bir parçası, ne de OpenJDK projesinin bir parçasıdır. Başka bir deyişle, openjdk.java.net değildir jdk.java.net . Yine, akış şemamdaki mavi varilin üstündeki iki baloncuka bakın. Sol üstteki Oracle ürünü ticari ürünleridir. Sağ üstteki Oracle ürünü, GPL lisanslı ücretsiz yapılarıdır - bağlantınız bu ürüne yönlendirir.
Basil Bourque

1
@SanderVerhagen Ürün adlandırma ile karıştırıldığından şüpheleniyorum. “Java” kelimesi Oracle tarafından tescillenmiştir ve sadece onların izniyle kullanılabilir. Çoğu satıcı bu markayı kullanmıyor. Bunun yerine, çoğu satıcı “OpenJDK” terimini adlandırmalarının bir parçası olarak “Java” yerine kullanıyor. Bu satıcılar yapılarını OpenJDK projesinden elde edilen kaynak kodundan yapıyorlar . OpenJDK projesi sadece kaynak kodu sağlar değil montajcılar, inşa değil. Bir derleme / montajcı için kendinizinkini oluşturmalı veya bir satıcıdan bir tane almalısınız. Ben okumanızı öneririz Java Hala Bedava mı .
Basil Bourque
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.