JVM, JDK, JRE ve OpenJDK arasındaki fark nedir?


Yanıtlar:


375

JVM

Java Virtual Machine (JVM) Java koddan çalışan sanal makinedir. JVM, Java kaynak kodunu anlamıyor; bu nedenle JVM tarafından anlaşılan bayt kodlarını içeren dosyaları *.javaelde etmek için dosyalarınızı derlemeniz gerekir *.class. Ayrıca Java'nın "taşınabilir bir dil" olmasına izin veren varlıktır (bir kez yaz, her yerde çalıştır ). Aslında, JVM'nin farklı sistemler için belirli uygulamaları vardır (Windows, Linux, macOS, Wikipedia listesine bakın ), amaç aynı bayt kodları ile hepsinin aynı sonuçları vermesidir.

JDK ve JRE

JDK ve JRE arasındaki farkı açıklamak için en iyisi Oracle belgelerini okumak ve şemaya başvurmaktır:

Java Çalışma Zamanı Ortamı (JRE)

Java Runtime Environment (JRE), Java programlama dilinde yazılmış uygulamaları ve uygulamaları çalıştırmak için kitaplıklar, Java Sanal Makinesi ve diğer bileşenleri sağlar. Ayrıca, iki önemli dağıtım teknolojisi JRE'nin bir parçasıdır: Java eklentisi, uygulamaların popüler tarayıcılarda çalışmasını sağlar; ve bağımsız uygulamaları bir ağ üzerinden dağıtan Java Web Start. Ayrıca, kurumsal yazılım geliştirme ve dağıtım için Java 2 Platform, Enterprise Edition'daki (J2EE) teknolojilerin temelidir. JRE, uygulamaların ve uygulamaların geliştirilmesi için derleyiciler veya hata ayıklayıcılar gibi araçlar ve yardımcı programlar içermez.

Java Geliştirme Kiti (JDK)

JDK, JRE'nin bir üst kümesidir ve JRE'deki her şeyi ve ayrıca uygulama ve uygulamalar geliştirmek için gerekli derleyiciler ve hata ayıklayıcılar gibi araçları içerir.

Oracle'ın JDK sağlayan tek kişi olmadığını unutmayın.

OpenJDK

OpenJDK , JDK'nın açık kaynaklı bir uygulaması ve Oracle JDK'nın temelidir. Oracle JDK ve OpenJDK arasında neredeyse hiçbir fark yoktur.

Farklılıklar bu blogda belirtilmiştir :

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 düşündüğü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şenleri açık kaynak alternatifleriyle değiştirmek. kod tabanları arasında.

JDK 11 Güncellemesi - Donald Smith'ten bir makale, Oracle JDK ile Oracle'ın OpenJDK arasındaki farkı belirsizleştirmeye çalışıyor: https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11- ve sonra


@ alain.janinm, Geliştirmeniz için OracleJDK veya OpenJDK'yı seçer misiniz?
Pacerier

@Pacerier İşte OracleJDK kullanmaya alışkınım ama OpenJDK'ya karşı hiçbir şeyim yok :) Aslında aralarında seçim yapmamı sağlayan somut bir farkla karşılaşmadım. Açık kaynağı tercih ediyorsanız ve tescilli lisans kullanmanız gerekmiyorsa OpenJDK'ya gidin.
alain.janinm

1
Lütfen bana aşağıdakiler hakkında doğru olup olmadığımı söyle: Temelde JRE olmadan hiçbir gerçek Java uygulaması çalıştırılamaz. Böylece tüm indirmeler (belki geliştiriciler için bazı egzotik şeyler hariç) hem JVM hem de JRE içerir (üst küme JDK değilse)?
Mads Skjern

8
@MadsSkjern Evet, Java uygulamasını çalıştırmak için bir JRE'ye ihtiyacınız var. Ancak bir Java uygulaması indirdiğinizde JRE ile birlikte gelmez, bilgisayarınızda yüklü bir tane olması beklenir.
alain.janinm

92

JVM, Java Sanal Makinesi'dir - aslında Java ByteCode'u çalıştırır.

JRE, Java Çalışma Zamanı Ortamıdır - diğer şeylerin yanı sıra bir JVM içerir ve bir Java programı çalıştırmak için ihtiyacınız olan şeydir.

JDK Java Geliştirme Kiti'dir - JRE'dir, ancak javac (Java kaynak kodunu derlemek için ihtiyacınız olan şeydir) ve diğer programlama araçları eklenmiştir.

OpenJDK belirli bir JDK uygulamasıdır.


3
Muhtemelen other thingsbir JVM içerdiği bahsetmediniz çünkü . Onlar neler ? - Bu makalenin tam bu soruya cevap mı javabeat.net/what-is-the-difference-between-jrejvm-and-jdk
Erran Morad

OpenJDK, JVM Spesifikasyonu'nun uygulamalarından biri olan JVM'yi içerir. Oracle JDK, JVM Spesifikasyonu'nun başka bir uygulamasını içeriyor
AKh

46

JDK (Java Geliştirme Kiti)

Java Developer Kit, Java programlarını geliştirmek için gerekli araçları ve programları çalıştırmak için JRE'yi içerir. Araçlar derleyici (javac.exe), Java uygulama başlatıcısı (java.exe), Appletviewer vb.

Derleyici, java kodunu bayt koduna dönüştürür. Java uygulama başlatıcısı bir JRE açar, sınıfı yükler ve ana yöntemini çağırır.

Kendi programlarınızı yazmak ve derlemek için JDK'ya ihtiyacınız vardır. Java programlarını çalıştırmak için JRE yeterlidir.

JRE, Java dosyalarının yürütülmesi için hedeflenmiştir

yani JRE = JVM + Java Paketleri Sınıfları (util, math, lang, awt, swing vb.) + çalışma zamanı kütüphaneleri.

JDK esas olarak java gelişimi için hedeflenmiştir. Yani Bir Java dosyası (Java paketleri yardımıyla) oluşturabilir, bir Java dosyası derleyebilir ve bir java dosyası çalıştırabilirsiniz.

JRE (Java Çalışma Zamanı Ortamı)

Java Runtime Environment, JVM, sınıf kitaplıkları ve diğer destek dosyalarını içerir. Derleyici, hata ayıklayıcı, vb. Gibi geliştirme araçları içermez. Aslında JVM programı çalıştırır ve JRE'de sağlanan sınıf kitaplıklarını ve diğer destek dosyalarını kullanır. Herhangi bir java programını çalıştırmak istiyorsanız, sistemde JRE yüklü olmalıdır

Java Sanal Makinesi, kod yürütmek için platformdan bağımsız bir yol sağlar; Bu herhangi bir makinede bir kez derlemek ve herhangi bir yerde (herhangi bir makine) çalıştırmak anlamına gelir.

JVM (Java Sanal Makinesi)

Bir Java dosyasını derlediğimiz zaman hepimizin bildiği gibi, çıktı bir 'exe' değil, bir '.class' dosyasıdır. '.class' dosyası JVM tarafından anlaşılabilen Java bayt kodlarından oluşur. Java Sanal Makinesi, temel işletim sistemine ve donanım kombinasyonuna bağlı olarak bayt kodunu makine koduna yorumlar. Çöp toplama, dizi sınırları kontrolü vb. Her şeyden sorumludur. JVM platforma bağlıdır.

JVM, “sanal” olarak adlandırılır çünkü temeldeki işletim sistemine ve makine donanım mimarisine bağlı olmayan bir makine arayüzü sağlar. Donanım ve işletim sisteminden bu bağımsızlık, Java programlarının bir kez yazılan her yerde çalıştır değerinin temel taşıdır.

Orada farklı JVM uygulamaları vardır. Bunlar performans, güvenilirlik, hız, vb. Gibi konularda farklılık gösterebilir. Bu uygulamalar, Java belirtiminin özelliklerin nasıl uygulanacağından bahsetmediği, çöp toplama işleminin nasıl çalıştığı JVM'ye bağımlı olduğu, Java spec'in değişmediği alanlarda farklılık gösterecektir. bunu yapmak için herhangi bir özel yol tanımlayın.


23

Bir Java sanal makinesi (JVM) Java bytecode yürütebileceği bir sanal makinedir. Java yazılım platformunun kod yürütme bileşenidir.

Java Development Kit (JDK) Java geliştiricileri amaçlayan bir Oracle Corporation ürünüdür. Java'nın piyasaya sürülmesinden bu yana, en yaygın olarak kullanılan Java Yazılım Geliştirme Kiti (SDK) olmuştur.

Java Çalışma Zamanı Ortamı , Java Çalışma Zamanı Ortamı , Çalışma Zamanı Ortamı olarak da bilinir

OpenJDK (Açık Java Geliştirme Kiti) , Java programlama dilinin ücretsiz ve açık kaynaklı bir uygulamasıdır. Bu, Sun Microsystems'ın 2006 yılında başlattığı bir çabanın sonucudur. Uygulama, GNU Genel Kamu Lisansı (GPL) kapsamında bağlantı istisnasıyla lisanslanmıştır.


İyi cevap, ama bir açıklama. Oracle dışındakiler JDK üretiyor - örneğin AIX ve z / OS için IBM, HP-UX için HP, vb.
Trent Gray-Donald

16

JVM , Java kodunun yürütüldüğü sanal makinedir

JRE , Java uygulamalarını çalıştırmak için gereken ortamdır (standart kütüphaneler ve JVM)

JDK , geliştirici araçları ve belgeleriyle JRE

OpenJDK , Oracle'a ait ortak JDK'nin aksine, JDK'nın açık kaynaklı bir sürümüdür


15

JDK (Java Geliştirme Kiti):

  • Java programlarını geliştirmek için gerekli araçları içerir.
  • Kendi programlarınızı yazmak ve derlemek için JDK'ya ihtiyacınız vardır.
  • JDK esas olarak java gelişimi için hedeflenmiştir.

JRE (Java Çalışma Zamanı Ortamı)

Java Runtime Environment, JVM, sınıf kitaplıkları ve diğer destek dosyalarını içerir. JRE, Java dosyalarının yürütülmesi için hedeflenmiştir.

JVM (Java Sanal Makinesi)

JVM , temel işletim sistemine ve donanım kombinasyonuna bağlı olarak bayt kodunu makine koduna yorumlar . Çöp toplama, dizi sınırları denetimi, vb. Gibi her şeyden sorumludur. Java Sanal Makinesi, kod yürütmek için platformdan bağımsız bir yol sağlar.


6

JDK - Java'yı ByteCode'a derler. Hata ayıklayıcılar, Derleyiciler vb.

javac file.java // Is executed using JDK

JVM - Bayt kodunu yürütür. JVM, java platformunu bağımsız yapan kişidir. Ancak JVM platformlara göre değişir.

JRE - Java programları yürütmek için java çalışma zamanı kitaplıkları ile birlikte JVM.


4

Bahsetmeye değer başka bir husus:

JDK (java geliştirme kiti)

Adından da anlaşılacağı gibi geliştirme amaçları için ihtiyacınız olacak.

Örneğin: bir yazılım şirketinin bilgisayarında JDK yüklemesi olacaktır, çünkü Java programlarını da derlemeyi ve çalıştırmayı içeren yeni bir yazılım geliştirmeleri gerekecektir.

Yani JDK = JRE + JVM diyebiliriz.

JRE (java çalışma zamanı ortamı)

Java programlarını çalıştırmak gerekir. Bununla birlikte Java programlarını derleyemezsiniz.

Örneğin, bazı çevrimiçi oyunları çalıştırmak isteyen normal bir bilgisayar kullanıcısının Java programlarını çalıştırmak için sisteminde JRE'ye ihtiyacı olacaktır.

JVM (java sanal makinesi)

Bildiğiniz gibi bayt kodlarını çalıştırın. Java platformunu bağımsız yapar çünkü .classJava programını derledikten sonra aldığınız dosyayı Windows, Mac veya Linux'ta derleseniz de dikkate almaz.

JDK'yı aç

Yukarıda söylediğim gibi. Şimdi JDK farklı bir şirket tarafından üretildi, bunlardan biri açık kaynak ve kamu kullanımı için ücretsiz olan OpenJDK, bazıları ise Oracle Corporation'ın JRockit JDK veya IBM JDK.

Ancak hepsi genel kullanıcı için aynı görünebilir.

Sonuç

Bir Java programcısıysanız, sisteminizde JDK'ya ihtiyacınız olacak ve bu pakete JRE ve JVM de dahil olacak, ancak çevrimiçi oyun oynamaktan hoşlanan normal bir kullanıcıysanız, sadece JRE'ye ihtiyacınız olacak ve bu paketin içinde JDK olmayacak .

Başka bir deyişle JDK büyükbabadır JRE babası ve JVM oğullarıdır.


9
Yayınınız her yerde yanlış. JRE (çalışma zamanı ortamı) JVM (sanal makine) ve Java Sınıf Kitaplığı'nı içerir. JDK, JRE ve geliştiriciler için bir dizi programlama aracı içerir. en.wikipedia.org/wiki/JDK en.wikipedia.org/wiki/Java_virtual_machine Düzelttiğinizde yorumuma yanıt verin, ben de aşağı oyu kaldıracağım.
nhahtdh

@ nhahtdh diyebiliriz: jdk bağımsız bir pakettir, indirilebilir, ayrı olarak yüklenebilir. Jre = bazı sınıflar + java eklentisi + JVM
Prakash Pandey

3

Java dildir ve şimdiye kadar çok aşina olmanız gereken katı ve güçlü bir şekilde yazılan bir sözdizimi içerir.

Java 2 Platformu, Standard Edition, J2SE olarak da bilinir, platforma atıfta bulunur ve diğerleri arasında java.lang ve java.io paketlerindeki sınıfları içerir. Java uygulamalarının üzerine inşa edildiği yapı taşıydı.

Bir Java Sanal Makinesi veya JVM, derlenmiş Java kodunu çalıştıran bir yazılım sanal makinesidir. Derlenmiş Java kodu yalnızca bayt kodu olduğundan, JVM çalıştırmadan önce bu bayt kodunu makine koduna derlemekten sorumludur. (Buna genellikle Tam Zamanında Derleyici veya JIT Derleyicisi denir.) JVM ayrıca bellek yönetimiyle de ilgilenir, böylece uygulama kodu gerekmez.

Java Geliştirme Kiti veya JDK, Java geliştiricilerinin Java uygulamaları oluşturmak için kullandığı bir yazılımdı ve öyle kaldı. Hata ayıklama platformu sınıflarını etkinleştirmek için bir Java dil derleyicisi, bir belge oluşturucu, yerel kodla çalışma araçları ve (genellikle) platformun Java kaynak kodunu içerir.

Java Runtime Environment veya JRE, son kullanıcıların derlenmiş Java uygulamalarını çalıştırmak için indirdikleri yazılımın bir parçasıydı ve öyle kalıyor. Bir JVM içerir ancak JDK içinde paketlenmiş geliştirme araçlarından hiçbirini içermez. Ancak JDK, bir JRE içerir.


3

JVM: Bir java programını çalıştırma yolunu / kaynaklarını açıklayan bir belirtim. Aslında bayt kodunu çalıştırır ve java platformunu bağımsız hale getirir. Bunu yaparken farklı platformlar için farklıdır. Windows için JVM, UNIX için JVM olarak çalışamaz.

JRE: JVM'nin uygulanması. (JVM + çalışma zamanı kitaplıkları)

JDK: JRE + java derleyici ve sıfırdan bir java programı oluşturmak için diğer gerekli araçlar


2

JVM : Bu aslında bayt kodu yorumlayıcısı anlamına gelir. Platforma bağlıdır. Örneğin: Windows platformunda ' java.exe ' veya ' javaw.exe ' precessü jvm işlemidir.

JDK : Java programını / uygulamasını geliştirmek ve yürütmek için gerekli kitaplıkları ve yardımcı programları içeren bir araç setidir

JRE : bir java uygulaması için yürütme ortamıdır. Sadece derlenmiş program için jvm dahil çalışma zamanı bağımlılıklarını destekler. Bir java programı derlemek istiyorsak jdk'ye ihtiyacımız var.


2

JVM: Java'nın sanal makinesi. makineye Java Koduyla ne yapacağını söyler. JVM'yi olduğu gibi indiremezsiniz. Başka bir bileşende paketlenmiştir.

JRE: Yukarıda belirtilen diğer bazı bileşenler JRE'dir. Çalışma ortamı oluşturmak JVM + diğer kavanozlardır

JDK: JRE içerir (bu da JVM içerir). JDK'yı aldıktan sonra, JRE ve JVM'yi ayrıca yüklemenize gerek yoktur. .Java dosyalarınızı .class dosyalarına derleyen derleyici içerir


2

JVM

JVM (Java Sanal Makinesi) soyut bir makinedir. Java bayt kodunun çalıştırılabileceği çalışma ortamı sağlayan bir özelliktir. JVM'ler birçok donanım ve yazılım platformunda kullanılabilir.

JRE

JRE, Java Runtime Environment için bir kısaltmadır. Runtime ortamı sağlamak için kullanılır. JVM'nin uygulanmasıdır. Fiziksel olarak mevcuttur. JVM'nin çalışma zamanında kullandığı kütüphaneler + diğer dosyaları içerir.

JDK

JDK, Java Geliştirme Kiti'nin kısaltmasıdır. Fiziksel olarak mevcuttur JRE + geliştirme araçlarını içerir.

Bağlantı: - http://www.javatpoint.com/difference-between-jdk-jre-and-jvm


1

Özetle:

  • JRE = JVM + Java Paketleri (util, math, lang, awt, swing vb.) + Çalışma zamanı kitaplıkları
  • JDK = JRE + Geliştirme / hata ayıklama araçları

Java'da geliştirmek istiyorsanız, JDK'ya ihtiyacınız var, ama sadece java çalıştırmak istiyorsanız, JRE'ye ihtiyacınız var.


0

JVM Java Sanal Makinesi, aslında java bayt kodunu çalıştırır. JAVA platformundaki yürütme bloğudur. Bayt kodunu makine koduna dönüştürür.

JRE Java Runtime Environment, bir Java uygulaması yürütmek için minimum gereksinimleri sağlar; Java Sanal Makinesi (JVM), çekirdek sınıflar ve destek dosyalarından oluşur.

JDK Java Geliştirme Kiti, uygulama yazılımınızı geliştirmek için tüm araçlara sahiptir. JRE + JVM gibidir

Open JDK , Java Platformunun ücretsiz ve açık kaynaklı bir uygulamasıdır.


0

Layman terimleriyle: - JDK = JRE + JDK, Java ile çalışmak için derleme oluşturmadan onu çalıştırmaya kadar eksiksiz bir paketimiz olan geliştirme / hata ayıklama araçları .

Not: - JDK veya JRE kuruyor olsak da, JVM hem paketlerle birlikte gelirdi hem de JVM, JIT derleyicisinin bayt kodunu makineye özel koda dönüştürdüğü bölümdür.

Sadece JDK, JRE, JVM ve JIT ile ilgili makaleyi okuyun


0

JDK : Java kodu yazmanız ve çalıştırmanız gereken eksiksiz paket

OpenJDK : JDK'nın çok daha iyi olması için bağımsız bir uygulaması

JVM : Java kodunu bayt koduna dönüştürür ve bir Java kodunun nasıl derlenmesi, yüklenmesi, doğrulanması, hatalar için kontrol edilmesi ve yürütülmesi gerektiğini bildiren özellikleri sağlar.

JRE : Programı çalıştırmak için bazı Java kitaplıklarının kullanıldığı JVM uygulaması


0

JRE uygulamayı çalıştırır, ancak JVM yönergeleri satır satır okur, böylece yorumlayıcıdır.

JDK = JRE + Geliştirme Araçları

JRE = JVM + Kütüphane Sınıfları


0

JVM , Java Sanal Makinesi olarak kısaltılır , JVM, java mimarisinin ana bileşenidir. JVM C programlama dilinde yazılmıştır. Java derleyicisi JVM için bayt kodunu üretir. JVM, bayt kodunu doğrulayan ve kodu ibrary ile bağlayan bayt kodunu okur.

JRE , Java Runtime Environment olarak kısaltılır . çalışma zamanında ortam sağlamaktır. Fiziksel olarak mevcuttur. JVM + kitaplık seti (jar) + diğer dosyaları içerir.

JDK , Java Geliştirme Kiti olarak kısaltılmıştır . java uygulamaları geliştirmek. Ayrıca java uygulamalarında hata ayıklama ve izleme. JDK, JRE + geliştirme araçlarını içerir (javac, java)

OpenJDK OpenJDK, sun JDK'nın açık kaynaklı bir sürümüdür. Oracle JDK, Sun'ın resmi JDK'sıdır.

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.