Oracle JDK ve OpenJDK arasındaki farklar


700

NOT: Bu soru 2014'ten gelmektedir. Java 11'den itibaren OpenJDK ve Oracle JDK birbirine yaklaşmaktadır.

Oracle ve OpenJDK arasında önemli farklar var mı?

Örneğin, çöp toplama ve diğer JVM parametreleri aynı mı?

GC ikisi arasında farklı mı çalışıyor?


3
Oracle artık ücretsiz olmadığından Oracle'dan OpenJDK'ya geçmeyi planlıyorsanız bu da önemli olabilir. developers.redhat.com/blog/2018/11/05/…
Leo Ufimtsev

Yanıtlar:


338

Hem OpenJDK hem de Oracle JDK şu anda yalnızca Oracle tarafından oluşturulmakta ve korunmaktadır.

OpenJDK ve Oracle JDK, TCK'dan (Java Teknoloji Sertifikasyon Kiti) geçen aynı Java spesifikasyonunun uygulamalarıdır.

JDK satıcılarının çoğu, TCK uyumluluğunu bozmadan [çoğunlukla lisanslı tescilli parçaları değiştirmek / yalnızca belirli işletim sistemlerinde çalışan daha yüksek performanslı öğelerle değiştirmek] için birkaç ince ayar yaparak OpenJDK'nın üzerine yazılmıştır.

Birçok tedarikçi Java spesifikasyonunu uyguladı ve TCK'yı geçti. Örneğin, IBM J9, Azul Zulu, Azul Zing ve Oracle JDK.

Neredeyse her mevcut JDK, OpenJDK'den türetilmiştir.

Birçok kişi tarafından önerildiği gibi, lisanslama JDK'lar arasındaki bir değişikliktir.

JDK 11'in uzun süreli desteğe erişmesi ile başlayarak Oracle JDK / Java SE için artık ticari lisans gerekir. Abonelik olmadan Oracle JDK olarak durabileceğinden, hangi JDK'yı yüklediğinize dikkat etmelisiniz. kaynak

Ref: Java sanal makinelerinin listesi


13
Yani openjdk'ın diğer tüm jdk'ler için temel olduğunu söylüyorsunuz, sadece kopyalayıp kendi özelliklerinden sonra ayarlıyorlar mı?
K - SO'da toksisite artıyor.

24
Partiye geç kaldım, ama yine de soracağım. JDK OpenJDK'nın yapmadığı tabloya ne getiriyor? Tüm bu cevaplar openjdk'e her şekilde eşit veya üstün gibi geliyor, ancak eğer öyleyse Oracle neden jdk'yi korumaktan rahatsız oluyor?
Kefka

@ Karl Morrison Bildiğim kadarıyla, .. sadece JVM spec uygulayan herkes sadece bu şekilde yapıyor .. ama birinin bu şekilde izlemesi gerektiği açık bir kural yok ...
Venkateswara Rao

13
@ Mella OpenJDK <= OracleJDK Örneğin, Oracle JDK'da OpenJDK'da olmayan birkaç güvenilir anahtar var (Artık insanlar bu boşluğu doldurmak için onları içe aktarıyorlar) Oracle JDK, oluşturma işlemini hızlandırmak için özel olan bazı SWING kütüphanelerine sahip .. (Kim sunucu uygulamaları yapan, onlar için ilgisiz olabilir) Oracle JDK Applet eklentisine sahiptir (yukarıdaki aynı nedenden ötürü) Oracle JDK bugfix / düzeltmesi Oracle tarafından düzgün bir şekilde dağıtılacak ve işlenecektir. yamalar uygulanır ve hangi çatışmaları olurlardı
Venkateswara Rao

Java için yeni sürüm modeliyle dikkat çeken Oracle, her iki jdk arasındaki boşluğu mümkün olduğunca azaltmayı planlıyor. Jdk'yi oracle geliştiricileri dışında açmak için başka açık kaynak katkıda bulunanlar var mı? Bu, bir düzeltmeyi en son sürümden önceki sürüme geri döndürmek için yeterli destek olup olmadığını anlamak içindir. Düşüncesi olan var mı?
Andy Dufresne

329

İçin Java 7 , önemli bir şey. OpenJDK projesi çoğunlukla Sun tarafından bağışlanan HotSpot kaynak koduna dayanmaktadır .

Ayrıca, OpenJDK, Java 7 için referans uygulama olarak seçilmiştir ve Oracle mühendisleri tarafından korunmaktadır.

Bir Oracle blog yayınına bağlanan JVM, JDK, JRE ve OpenJDK arasındaki fark hakkında 2012'den daha ayrıntılı bir cevap var :

S : OpenJDK deposunda bulunan kaynak kodu ile Oracle JDK'yı oluşturmak için kullandığınız kod arasındaki fark nedir?

C : Çok yakın - Oracle JDK için oluşturma sürecimiz, Oracle'ın Java Plugin ve Java WebStart uygulamasını ve ayrıca bazı kapalı kaynak üçüncü uygulamaları içeren dağıtım kodu gibi sadece birkaç parça ekleyerek OpenJDK 7'yi geliştiriyor grafik rasterleştirici gibi parti bileşenleri, Rhino gibi bazı açık kaynaklı üçüncü taraf bileşenler ve ek belgeler veya üçüncü taraf yazı tipleri gibi birkaç bit ve parça burada. İleride amacımız, JRockit Mission Control (henüz Oracle JDK'da mevcut değil) gibi ticari özellikleri dikkate aldığımız durumlar dışında Oracle JDK'nın tüm parçalarını açık kaynak yapmak ve daha yakın parite elde etmek için ipli üçüncü taraf bileşenlerini açık kaynak alternatifleriyle değiştirmek kod tabanları arasında.


42
Ayrıca lisanslama farklılıkları da vardır.
mcoolive

9
teşekkürler daha iyi bir cevap buldum. stackoverflow.com/questions/17360011/…
astroanu

9
ARM'de en azından bu ikisi performans açısından önemli ölçüde farklı görünüyor. Neden olduğuna dair bazı profiller yapmak zorundayım, ancak öznel fark "Oracle JDK iyi" ve "OpenJDK tamamen kullanılamaz".
çift

1
@dualed yine de android android 7 başlayan openjdk taşıyor. Görünüşe göre önemli gelişmeler hazırlanıyorlar. venturebeat.com/2015/12/29/…
Johnny Doe

1
@JohnnyDoe Google'ın OpenJDK'ya geçmesi durumunda performans yamaları sunacaklarını umuyoruz, böylece Android dışındaki ARM'de de iyi çalışır!
16'da ikili

95

Gelecekte önemli bir fark, sürüm programı ve destek politikasıdır.

OpenJDK

OpenJDK, her 6 ayda bir, yalnızca bir sonraki özellik sürümüne kadar desteklenen bir özellik sürümüne sahip olacaktır. Bu aslında geliştiricilere yönelik sürekli bir yayın akışıdır.

Oracle JDK

Oracle JDK daha çok istikrara değer veren bir kurumsal kitleye yöneliktir. OpenJDK sürümlerinden birine dayanmaktadır, ancak daha sonra uzun vadeli destek (LTS) verilmektedir. Oracle JDK, her 3 yılda bir planlanan sürümleri yayınlamaktadır.

resim açıklamasını buraya girin

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


3
Uzun süreli yayınlar, java yayınından 6 ay sonra güncelleme almak için ticari destek satın almanızı gerektirir. Kısa süreli sürümlerle karşılaştırıldığında uzun süreli sürümlerin önemi nedir? JDK 9/10 gibi kısa süreli sürümlerin Oracle'dan ticari desteği yok mu?
Andy Dufresne

@AndyDufresne Neden sadece 6 ay sonra destek için ödeme yapmanız gerektiğini düşünüyorsunuz? Anladığım kadarıyla zaman çizelgesi TBD. 6 ay çok kısa görünüyor ... Java 8'in aldığı gibi 5 yıl boyunca herkese açık güncellemeler beklediğimizden şüpheliyim, ancak 2 veya 3 yıl boyunca genel güncellemeler olsaydı şaşırmam. Referans - Bu: oracle.com/technetwork/java/eol-135779.html .
Gilbert Arenas Hançer

1
Oracle bağlantısı "Örneğin, Oracle JDK 11 için LTS sürümü (18.9 LTS), Oracle Lifetime Support Policy'de açıklandığı gibi en az 5 yıl desteklenecektir". Politika 3 destek seviyesine sahiptir ve bunların hiçbiri ücretsiz görünmemektedir. Ayrıca burada azul CTO'nun yorumuna baktıktan sonra da bahsediyorum - blog.takipi.com/java-11-will-include-more-than-just-features/… . Bu yeni sürüm stratejisinin temel amacı, eski sürümleri korumak için zaman harcamamaktır. Destek ücretsiz olsaydı, model şimdiye kadar olduğu gibi olurdu.
Andy Dufresne

38

İçin Java 8 , OpenJDK vs Oracle JDK temel farklılıklardan almak Gözat:

  • OpenJDK, Oracle ve açık Java topluluğunun katkılarıyla Java Standard Edition platformunun açık kaynaklı bir uygulamasıdır.

  • OpenJDK, Oracle JDK'nın Oracle Binary Code Lisans Anlaşması kapsamında lisanslandığı GPL v2 lisansı altında yayınlandı.

  • Aslında, Oracle JDK'nın oluşturma işlemi OpenJDK kaynak kodundan oluşturulur. Dolayısıyla, Oracle JDK ve OpenJDK arasında önemli bir teknik fark yoktur. Temel kodun yanı sıra Oracle JDK, Oracle'ın Java Plugin ve Java WebStart uygulamasını içerir. Ayrıca sırasıyla üçüncü taraf kapalı kaynak ve grafik rasterleştirici ve Rhino gibi açık kaynak bileşenleri içerir . OpenJDK Yazı Tipi Oluşturucu ve Oracle JDK Uçuş Kaydedici, Oracle JDK ve OpenJDK arasındaki önemli farklardır.

  • Rockit Oracle'ın JVM'siydi ve Java SE 7'den HotSpot ve JRockit tek bir JVM'de birleşti. Şimdi sadece birleştirilmiş HotSpot JVM var.
  • İnsanların OpenJDK'yi çalıştırırken sorun yaşadıklarını ve Oracle JDK'ya geçildiğinde çözüldüklerini iddia ettikleri durumlar vardır.
  • Twitter'ın kendi JDK'sı var.
  • Minecraft gibi yazılımlar Oracle JDK'nın kullanılmasını bekliyor. Aslında uyarıyor.

Farklılıkların tam listesi için lütfen kaynak makaleye bakın: Oracle JDK vs OpenJDK ve Java JDK Geliştirme Süreci


4
Android Studio için bu artık geçerli değil: En son OpenJDK'nin bir kopyası Android Studio 2.2 ve daha üstü ile birlikte gelir ve bu, Android projeleriniz için kullanmanızı önerdiğimiz JDK sürümüdür. Kaynak: developer.android.com/studio/intro/studio-config#jdk
MKesper

“Minecraft gibi yazılımlar Oracle JDK'nın kullanılmasını bekliyor. Aslında uyarıyor. ” Aslında, Ubuntu'da Mojang'ın resmi .deb yükleyicisi, başlatıcıyı kurarken OpenJDK'yı çekiyor.
Mart'ta

29

Oracle ve OpenJDK JVM'leri aynıdır ve aynı GC özelliklerine sahiptir (en son 10+ sürümünden itibaren). Oracle'ın OpenJDK JVM'yi yönetmesinden önce, eski Openjdk JVM'yi birçok ortamda neredeyse kullanılamaz hale getiren somut farklılıklar vardı. JVM'ler artık aynı.

Kit'in bir parçası olarak JVM'yi içeren JDK'lar lisanslama, sürüm ve bakım programına ve JDK'da bulunan yazılım kitaplıklarına göre farklılık gösterir. Benim için önemli farklılıklar, kodun mevcut olmaması durumunda çalıştırılmasını sağlayacak şeyler anlamına da geliyor. Sadece lisanslama değil.

diff --brief -r openjdk oraclejdk

Önemli olarak, aşağıdaki dosyalar linux JDK'daki diğer gruplara ek olarak eksiktir (Bu nedenle, bu kodu OpenJDK üzerinde çalışmadı ve javafx kullanırken OracleJDK'da yaptığını iddia ederseniz, o zaman doğruydunuz):

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
Gerçek farklılıklara işaret ettiğiniz için teşekkür ederiz : Kod çalışmıyor gerçek hayattaki bir konudur. Nereye dayandın diff?
Matthieu

19

Oracle bloguna göre, Java 11 ve Üstü için Oracle JDK Bültenleri

Java 11'den başlayarak Oracle, açık kaynak GNU Genel Kamu Lisansı v2 altında, Classpath İstisnası (GPLv2 + CPE) ve Oracle JDK'yı Oracle ürün veya hizmetinin bir parçası olarak kullananlar için ticari lisans altında JDK sürümleri sunacaktır. veya açık kaynaklı yazılım kullanmak istemeyenler. Açık kaynak lisansı ve ticari lisans kullanmanın bu birleşimi, ücretsiz ve ücretli ticari terimlerin birleşimine sahip olan tarihi “ BCL ” lisansının yerini alır .

Her lisans için farklı sürümler sağlanacaktır, ancak bu sürümler, aşağıda ayrıntılı olarak açıklanan bazı kozmetik ve ambalaj farklılıkları dışında işlevsel olarak aynıdır.

BCL'den GPL'ye

Oracle Java SE teknolojilerinin ( “BCL”) için İkili Kod Lisans iyi bir on yıl için Oracle Java SE teknolojiler için birincil lisans olmuştur. BCL, belirli koşullar altında lisans ücreti olmadan kullanıma izin verir. İleride işleri kolaylaştırmak için Oracle , Linux platformuyla aynı lisans modelini kullanarak Java 9'dan itibaren açık kaynaklı lisanslı OpenJDK derlemeleri sağlamaya başladı . Oracle Java SE ikili dosyalarını ücretsiz almaya alışkınsanız , jdk.java.net adresinde bulunan Oracle'ın OpenJDK yapılarıyla bunu yapmaya devam edebilirsiniz . Oracle'ın ticari bir ürün veya hizmetinin bir parçası olarak Oracle Java SE ikili dosyalarını almaya alışkınsanız, Oracle Destek (MOS) ve diğer konumlar aracılığıyla Oracle JDK sürümlerini almaya devam edebilirsiniz .

İşlevsel olarak aynı ve değiştirilebilir ...

Oracle'ın BCL lisanslı JDK'sında tarihsel olarak OpenJDK sürümlerinde bulunmayan “ticari özellikler” vardı. Bununla birlikte, vaat edildiği gibi, geçtiğimiz yıl boyunca Oracle, OpenJDK Topluluğuna şu özelliklere katkıda bulundu:

Bu nedenle Java 11'den itibaren Oracle JDK derlemeleri ve OpenJDK derlemeleri esasen aynı olacaktır.

... yine de bazı kozmetik ve ambalaj farklılıklarıyla

Bazıları kasıtlı ve kozmetik olan az sayıda farklılık kalmıştır ve bazıları sadece OpenJDK katılımcılarıyla görüşmek için daha fazla zaman gerektiğinden garanti edilmektedir.

  • Oracle JDK 11, -XX: + UnlockCommercialFeatures seçeneğini kullanırken bir uyarı verirken, OpenJDK'da bu seçenek hataya neden olur. Bu seçenek hiçbir zaman OpenJDK'nın bir parçası değildi ve OpenJDK'da hiçbir ticari özellik olmadığı için şimdi eklemek mantıklı olmaz. Bu fark, Oracle JDK 10 ve önceki sürümlerin kullanıcılarının Oracle JDK 11 ve sonraki sürümlere geçişini kolaylaştırmak için kalır.
  • Oracle JDK 11, ayrı bir ticari Oracle ürünü olan “ Gelişmiş Yönetim Konsolu ” aracına kullanım günlüğü verileri sağlayacak şekilde yapılandırılabilir . Gelecekteki sürümlerde bu tür kullanım verilerinin OpenJDK'da nasıl yararlı olabileceğini tartışmak için diğer OpenJDK katılımcılarıyla birlikte çalışacağız. Bu fark öncelikli olarak, bu tür kararlar alınana kadar Oracle müşterilerine tutarlı bir deneyim sağlamaktır.
  • Javac --release komutu, Java 9 ve Java 10 hedefleri için farklı davranır, çünkü bu sürümlerde Oracle JDK, karşılık gelen OpenJDK sürümlerinin bir parçası olmayan bazı ek modüller içeriyordu:
    • 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

Bu fark, belirli eski kullanım türleri için tutarlı bir deneyim sağlamak amacıyla devam etmektedir. Bu modüller artık OpenJFX'in bir parçası olarak ayrı olarak satılmaktadır , hem OpenJDK'da hem de Oracle JDK'da bulunmaktadır , çünkü bunlar Oracle'ın OpenJDK'ya katkıda bulunduğu (örneğin, Uçuş Kaydedici) ticari özelliklerdi veya Oracle JDK 11'den (örn. JNLP) kaldırıldı. .

  • Java --version ve java -fullversion komutlarının çıktısı, Oracle JDK yapılarını OpenJDK yapılarından ayıracak, böylece destek ekipleri var olabilecek sorunları tanılayabilecektir. Özellikle, bir Java JDK 11 derlemesi ile java --version çalıştırmanın sonuçları:

java 11 2018-09-25

Java (TM) SE Çalışma Zamanı Ortamı 18.9 (derleme 11 + 28)

Java HotSpot (TM) 64 Bit Sunucu VM 18.9 (derleme 11 + 28, karışık mod)

Ve bir OpenJDK 11 yapısı için:

openjdk sürümü "11" 2018-09-25

OpenJDK Çalışma Zamanı Ortamı 18.9 (derleme 11 + 28)

OpenJDK 64 Bit Sunucu VM 18.9 (derleme 11 + 28, karışık mod)

  • Oracle JDK her zaman bilinen bir sertifika ile üçüncü taraf şifreleme sağlayıcılarının imzalanmasını zorunlu kılmıştır. OpenJDK'daki şifreleme çerçevesi açık bir şifreleme arabirimine sahiptir, yani hangi sağlayıcıların kullanılabileceğini kısıtlamaz. Oracle JDK 11 geçerli bir imza gerektirmeye devam edecek ve Oracle OpenJDK derlemeleri geçerli bir imza veya imzalanmamış üçüncü taraf şifreleme sağlayıcısı kullanımına izin vermeye devam edecektir.
  • Oracle JDK 11, eski masaüstü kullanımlarıyla tutarlı bir deneyim için yükleyicileri, markaları ve JRE paketlerini dahil etmeye devam edecek. Oracle OpenJDK derlemeleri şu anda zip ve tar.gz dosyaları olarak kullanılabilirken, alternatif dağıtım biçimleri de dikkate alınmaktadır.

10

Oracle JDK 11 ve OpenJDK 11 arasında kalan kozmetik ve ambalaj farklılıklarının bir listesi bu blog gönderisinde bulunabilir:

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

Kısacası:

  • Oracle JDK 11, -XX: + UnlockCommercialFeatures seçeneğini kullanırken bir uyarı yayınlar,
  • “Gelişmiş Yönetim Konsolu” aracına kullanım günlüğü verileri sağlayacak şekilde yapılandırılabilir,
  • her zaman bilinen bir sertifika ile üçüncü taraf şifreleme sağlayıcılarının imzalanmasını gerektirmiştir,
  • montajcıları, marka bilinci oluşturma ve JRE paketlemesini içermeye devam edecek,
  • javac --release komutu Java 9 ve Java 10 hedefleri için biraz farklı davranır ve
  • java --version ve java -fullversion komutlarının çıktısı Oracle JDK derlemelerini OpenJDK derlemelerinden ayıracaktır.

2
Yanıtlarınızın çoğunun bir imzası olduğunu fark ettim. Onları düzenledim. Lütfen okuyun Kısa açıklamalara ve imzalara izin verilmiyor mu? ve stackoverflow.com/help/behavior (özellikle "İmza, kısa açıklama veya selamlama kullanmayın" bölümü)
Mark Rotteveel

7
  1. Oracle her üç yılda bir piyasaya çıkarken, OpenJDK altı ayda bir piyasaya sürülecek.
  2. Oracle, sürümleri için uzun vadeli destek sağlar. Öte yandan, OpenJDK bir sürümdeki değişiklikleri yalnızca bir sonraki sürüm piyasaya sürülene kadar destekler.
  3. Oracle JDK, Oracle İkili Kod Lisans Sözleşmesi kapsamında lisanslanmıştır, OpenJDK ise bağlantı istisnası olan GNU Genel Kamu Lisansı (GNU GPL) sürüm 2'ye sahiptir.
  4. Oracle ürününde Uçuş Kaydedici, Java Görev Kontrolü ve Uygulama Sınıfı Veri Paylaşımı özellikleri bulunurken, OpenJDK Font Oluşturucu özelliğine sahiptir.Ayrıca Oracle, daha fazla Çöp Toplama seçeneği ve daha iyi oluşturuculara sahiptir.
  5. Oracle JDK tamamen Oracle Corporation tarafından geliştirilirken, OpenJDK Oracle, OpenJDK ve Java Community tarafından geliştirilmiştir. Bununla birlikte, Red Hat, Azul Systems, IBM, Apple Inc., SAP AG gibi birinci sınıf şirketler de gelişiminde aktif rol alıyor.

Java 11'den büyük bir değişikliğe dönüşün

Oracle, tarihsel “BCL” lisansını açık kaynak koduyla ticari lisans kombinasyonuyla değiştirecek

  • Oracle'ın Java 11 kiti -XX: + UnlockCommercialFeatures seçeneğini kullanırken bir uyarı verirken, OpenJDK derlemelerinde bu seçenek bir hataya neden olur
  • Oracle JDK, “Gelişmiş Yönetim Konsolu” aracına kullanım günlüğü verileri sağlamak için bir yapılandırma sunar
  • Oracle her zaman üçüncü taraf şifreleme sağlayıcılarının bilinen bir sertifika ile imzalanmasını zorunlu tutarken, OpenJDK'daki şifreleme çerçevesinin açık bir şifreleme arabirimi vardır, yani hangi sağlayıcıların kullanılabileceği konusunda herhangi bir kısıtlama yoktur
  • Oracle JDK 11, yükleyicileri, markaları ve JRE paketlerini dahil etmeye devam ederken, OpenJDK yapıları şu anda zip ve tar.gz dosyaları olarak mevcuttur
  • Javac –release komutu, Oracle'ın sürümünde bazı ek modüllerin bulunması nedeniyle Java 9 ve Java 10 hedefleri için farklı davranır
  • Java –version ve java -fullversion komutlarının çıktısı Oracle'ın yapılarını OpenJDK yapılarından ayıracaktır


Güncelleme: 25-Ağustos-2019



resim açıklamasını buraya girin

daha fazla bilgi için oracle-vs-openjdk



5

Açık lisans farkının yanı sıra, OpenJDK ve OracleJDK 11 arasındaki en büyük fark kararlılık ve performans güncellemeleridir.

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

Her 6 ayda bir iki kod tabanı senkronize olacaktır. Ancak 6 aylık pencere boyunca OpenJDK yalnızca güvenlik güncellemeleri alırken OracleJDK ek kararlılık ve performans güncellemeleri alacak.

Güncelleme sürümlerinin hem OpenJDK hem de OracleJDK için yalnızca 3 ayda bir gerçekleştiği göz önüne alındığında, bir sonraki büyük sürüm çıkana ve yükseltme yapana kadar (en fazla) 3 aylık düzeltmeleri kaçırdığınız anlamına gelir. Ancak, LTS sürümlerine bağlı kalmayı seçerseniz, ticari bir lisans daha anlamlı olmaya başlar.


3

Ayrıca için Java 8 bir reaktif (engellenmeyen) için ilginç performans kriter Bahar Boot DİNLENME uygulama Nov 2018 yılında yayımlanmıştır AMIS Teknoloji Blog tarafından çeşitli JVM'lerle barındırılan diğer farklılıklar arasında, yani gösterilen:

  • OpenJDK, OracleJDK'dan daha yüksek CPU kullanımına sahiptir,
  • OpenJDK'nın yanıt süresi OracleJDK'dan biraz daha düşüktür,
  • OpenJDK, OracleJDK'dan daha yüksek bellek kullanımına sahiptir,

Ayrıntılar için lütfen kaynak makaleye bakın.

Tabii ki YMMV, bu sadece kriterlerden biri.


3

Anladığım kadarıyla Oracle JDK üretimde kullanılamıyor, bu nedenle şirketim için geliştirdiğim web uygulaması için yasal olarak (ödemeden) kullanamıyorum. OpenJDK kullanmak zorundayım. Yanlışım varsa lütfen düzelt! Gönderen bu makalede .

Java 11'den başlayarak, Oracle JDK geliştirme ve test ortamlarıyla sınırlıdır. Oracle JDK'lar yalnızca ticari destek satın alırsanız üretimde kullanılabilir. Bunun yerine Oracle, üretimde kullanılabilecek OpenJDK tabanlı Java yapılarını ücretsiz olarak sağlayacaktır. Ancak resmi Oracle JDK için gerçek yol haritası şöyle görünecek:

GÜNCELLEME: Yanılıyorum. Oracle JDK'yı ücretsiz olarak kullanabilirim, ancak 6 mos sonra güvenlik güncellemeleri almayacağım ve riski üstlenmemiz gerekecek. Yukarıdaki "Yeni sürüm treni şirketim için ne anlama geliyor?" Başlıklı makaleye bakın.


Oracle'a göre bu artık JDK 13'ten itibaren geçerli olmayabilir: Oracle'a göre Oracle JDK için yeni bir lisans var: "Yeni lisans, kişisel kullanım ve geliştirme kullanımı gibi belirli kullanımlara ücretsiz olarak izin veriyor - ancak önceki Oracle JDK lisansları artık kullanılamayabilir ". Oracle.com/downloads/licenses/javase-license1.html adresine bakın .
AL Flanagan

Sadece bilmek istedim, oracle jdk8u241'in mevcut sürümü üretim kullanımı için ücretsiz mi?
Nirav Shah
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.