Apa perbedaan antara JVM, JDK, JRE & OpenJDK?

Jawaban:

375

JVM

The Java Virtual Machine (JVM) adalah mesin virtual yang menjalankan bytecode Java. JVM tidak mengerti kode sumber Java; itu sebabnya Anda perlu mengkompilasi *.javafile Anda untuk mendapatkan *.classfile yang berisi bytecodes dipahami oleh JVM. Itu juga entitas yang memungkinkan Java menjadi "bahasa portabel" ( tulis sekali, jalankan di mana saja ). Memang, ada implementasi spesifik JVM untuk sistem yang berbeda (Windows, Linux, macOS, lihat daftar Wikipedia ), tujuannya adalah bahwa dengan bytecode yang sama mereka semua memberikan hasil yang sama.

JDK dan JRE

Untuk menjelaskan perbedaan antara JDK dan JRE, yang terbaik adalah membaca dokumentasi Oracle dan lihat diagram:

Java Runtime Environment (JRE)

Java Runtime Environment (JRE) menyediakan perpustakaan, Java Virtual Machine, dan komponen lainnya untuk menjalankan applet dan aplikasi yang ditulis dalam bahasa pemrograman Java. Selain itu, dua teknologi penyebaran utama adalah bagian dari JRE: Java Plug-in, yang memungkinkan applet dijalankan di browser populer; dan Java Web Start, yang menyebarkan aplikasi mandiri melalui jaringan. Ini juga merupakan dasar untuk teknologi di Java 2 Platform, Enterprise Edition (J2EE) untuk pengembangan dan penyebaran perangkat lunak perusahaan. JRE tidak mengandung alat dan utilitas seperti kompiler atau debugger untuk mengembangkan applet dan aplikasi.

Java Development Kit (JDK)

JDK adalah superset dari JRE, dan berisi semua yang ada di JRE, ditambah alat-alat seperti kompiler dan debugger yang diperlukan untuk mengembangkan applet dan aplikasi.

Perhatikan bahwa Oracle bukan satu-satunya yang menyediakan JDK.

OpenJDK

OpenJDK adalah implementasi open-source JDK dan basis untuk Oracle JDK. Hampir tidak ada perbedaan antara Oracle JDK dan OpenJDK.

Perbedaannya dinyatakan dalam blog ini :

T: Apa perbedaan antara kode sumber yang ditemukan dalam repositori OpenJDK, dan kode yang Anda gunakan untuk membangun Oracle JDK?

A: Sangat dekat - proses build kami untuk rilis Oracle JDK dibangun di OpenJDK 7 dengan menambahkan hanya beberapa bagian, seperti kode penempatan, yang mencakup implementasi Oracle dari Java Plugin dan Java WebStart, serta beberapa sumber tertutup ketiga komponen pihak seperti rasterizer grafis, beberapa komponen pihak ketiga sumber terbuka, seperti Badak, dan beberapa bagian di sana-sini, seperti dokumentasi tambahan atau font pihak ketiga. Ke depan, tujuan kami adalah untuk membuka sumber semua bagian dari Oracle JDK kecuali yang kami anggap fitur komersial seperti JRockit Mission Control (belum tersedia di Oracle JDK), dan mengganti komponen pihak ketiga yang terbebani dengan alternatif sumber terbuka untuk mendapatkan paritas yang lebih dekat. antara basis kode.

Pembaruan untuk JDK 11 - Sebuah artikel dari Donald Smith mencoba untuk membedakan perbedaan antara Oracle JDK dan Oracle OpenJDK: https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11- dan kemudian

alain.janinm
sumber
@ alain.janinm, Jadi apakah Anda akan memilih OracleJDK atau OpenJDK untuk pengembangan Anda?
Pacerier
@Pacerier Saya terbiasa menggunakan OracleJDK di tempat kerja tetapi saya tidak menentang OpenJDK :) Sebenarnya saya tidak pernah menemukan perbedaan nyata yang membuat saya memilih di antara mereka. Jika Anda lebih suka open source dan tidak perlu menggunakan lisensi kepemilikan kemudian buka OpenJDK.
alain.janinm
1
Tolong beritahu saya jika saya benar tentang hal berikut: Pada dasarnya tidak ada aplikasi Java nyata dapat dijalankan tanpa JRE. Jadi semua unduhan (mungkin kecuali beberapa hal eksotis untuk pengembang) mengandung JVM dan JRE (jika bukan JDK superset)?
Mads Skjern
8
@MadsSkjern Ya Anda memerlukan JRE untuk menjalankan aplikasi Java. Tetapi ketika Anda mengunduh aplikasi Java itu tidak datang dengan JRE, itu mengharapkan Anda memiliki satu diinstal pada komputer Anda.
alain.janinm
92

JVM adalah Java Virtual Machine - sebenarnya menjalankan Java ByteCode.

JRE adalah Java Runtime Environment - berisi JVM, di antaranya, dan itulah yang Anda perlukan untuk menjalankan program Java.

JDK adalah Java Development Kit - itu adalah JRE, tetapi dengan javac (yang Anda butuhkan untuk mengkompilasi kode sumber Java) dan alat pemrograman lainnya ditambahkan.

OpenJDK adalah implementasi JDK tertentu.

hvgotcodes
sumber
3
Mungkin karena Anda tidak menyebutkan yang other thingsterkandung dalam JVM. Apakah mereka ? Apakah artikel ini sepenuhnya menjawab pertanyaan itu - javabeat.net/what-is-the-difference-between-jrejvm-and-jdk
Erran Morad
OpenJDK berisi JVM yang merupakan salah satu implementasi dari Spesifikasi JVM. Oracle JDK berisi implementasi lain dari Spesifikasi JVM
AKh
46

JDK (Java Development Kit)

Java Developer Kit berisi alat yang diperlukan untuk mengembangkan program Java, dan JRE untuk menjalankan program. Alat termasuk kompiler (javac.exe), peluncur aplikasi Java (java.exe), Appletviewer, dll ...

Compiler mengubah kode java menjadi kode byte. Peluncur aplikasi Java membuka JRE, memuat kelas, dan memanggil metode utamanya.

Anda memerlukan JDK, jika Anda ingin menulis program sendiri, dan mengkompilasinya. Untuk menjalankan program java, JRE sudah cukup.

JRE ditargetkan untuk mengeksekusi file Java

yaitu JRE = JVM + Kelas Paket Java (seperti util, matematika, lang, awt, swing dll) + pustaka runtime.

JDK terutama ditargetkan untuk pengembangan java. Yaitu Anda dapat membuat file Java (dengan bantuan paket Java), kompilasi file Java dan jalankan file java.

JRE (Java Runtime Environment)

Java Runtime Environment berisi JVM, perpustakaan kelas, dan file pendukung lainnya. Itu tidak mengandung alat pengembangan seperti kompiler, debugger, dll. Sebenarnya JVM menjalankan program, dan menggunakan pustaka kelas, dan file pendukung lainnya yang disediakan di JRE. Jika Anda ingin menjalankan program java apa pun, Anda harus menginstal JRE di sistem

Java Virtual Machine menyediakan cara bebas platform untuk mengeksekusi kode; Itu berarti mengkompilasi sekali di mesin apa pun dan menjalankannya di mana saja (mesin apa pun).

JVM (Java Virtual Machine)

Seperti yang kita semua tahu ketika kita mengkompilasi file Java, output bukan file 'exe' tapi itu file '.class'. File '.class' terdiri dari kode byte Java yang dapat dimengerti oleh JVM. Java Virtual Machine menginterpretasikan kode byte ke dalam kode mesin tergantung pada sistem operasi dan kombinasi perangkat keras yang mendasarinya. Ia bertanggung jawab untuk semua hal seperti pengumpulan sampah, pemeriksaan batas array, dll ... JVM bergantung pada platform.

JVM disebut "virtual" karena menyediakan antarmuka mesin yang tidak tergantung pada sistem operasi yang mendasari dan arsitektur perangkat keras mesin. Kemandirian dari perangkat keras dan sistem operasi ini merupakan landasan dari nilai program Java yang pernah ditulis sebelumnya.

Ada beberapa implementasi JVM di sana. Ini mungkin berbeda dalam hal-hal seperti kinerja, keandalan, kecepatan, dll. Implementasi ini akan berbeda di daerah-daerah di mana spesifikasi Java tidak menyebutkan bagaimana mengimplementasikan fitur-fitur, seperti bagaimana proses pengumpulan sampah bekerja tergantung pada JVM, spesifikasi Java tidak tentukan cara spesifik untuk melakukan ini.

pengguna25226
sumber
23

Sebuah mesin virtual Java (JVM) adalah mesin virtual yang dapat mengeksekusi Java bytecode. Ini adalah komponen eksekusi kode dari platform perangkat lunak Java.

The Java Development Kit (JDK) merupakan produk Oracle Corporation ditujukan untuk pengembang Java. Sejak Java diperkenalkan, Java Kit Pengembangan Perangkat Lunak (SDK) sejauh ini telah digunakan secara luas.

Java Runtime Environment , juga disebut sebagai Java Runtime, Runtime Environment

OpenJDK (Open Java Development Kit) adalah implementasi gratis dan open source dari bahasa pemrograman Java. Ini adalah hasil dari upaya Sun Microsystems dimulai pada tahun 2006. Implementasinya dilisensikan di bawah GNU General Public License (GPL) dengan pengecualian yang menghubungkan.

nidhin
sumber
Jawaban bagus, tapi satu klarifikasi. Selain Oracle, menghasilkan JDK - misalnya IBM untuk AIX dan z / OS, HP untuk HP-UX, dll.
Trent Gray-Donald
16

JVM adalah mesin virtual yang dijalankan oleh kode Java

JRE adalah lingkungan (perpustakaan standar dan JVM) yang diperlukan untuk menjalankan aplikasi Java

JDK adalah JRE dengan alat dan dokumentasi pengembang

OpenJDK adalah versi open-source dari JDK, tidak seperti JDK umum yang dimiliki oleh Oracle

Garrett Hall
sumber
15

JDK (Java Development Kit):

  • berisi alat yang diperlukan untuk mengembangkan program Java.
  • Anda memerlukan JDK, jika Anda ingin menulis program sendiri, dan mengkompilasinya.
  • JDK terutama ditargetkan untuk pengembangan java.

JRE (Java Runtime Environment)

Java Runtime Environment berisi JVM, perpustakaan kelas, dan file pendukung lainnya. JRE ditargetkan untuk mengeksekusi file Java.

JVM (Java Virtual Machine)

JVM menerjemahkan kode byte ke dalam kode mesin tergantung pada sistem operasi dan kombinasi perangkat keras yang mendasarinya. Ia bertanggung jawab untuk semua hal seperti pengumpulan sampah, pemeriksaan batas array, dll ... Java Virtual Machine menyediakan cara independen platform untuk mengeksekusi kode.

SEORANG BOS
sumber
6

JDK - Mengkompilasi java ke ByteCode. Terdiri dari para debugger, Compiler dll

javac file.java // Is executed using JDK

JVM - Menjalankan kode byte. JVM adalah yang membuat platform java independen. Tetapi JVM bervariasi untuk platform.

JRE - JVM bersama dengan java runtime libraries untuk menjalankan program java.

bharanitharan
sumber
4

Aspek lain yang layak disebut:

JDK (java development kit)

Anda akan membutuhkannya untuk tujuan pengembangan seperti namanya.

Sebagai contoh: perusahaan perangkat lunak akan menginstal JDK di komputer mereka karena mereka perlu mengembangkan perangkat lunak baru yang melibatkan kompilasi dan menjalankan program Java mereka juga.

Jadi kita dapat mengatakan bahwa JDK = JRE + JVM.

JRE (lingkungan run-time java)

Diperlukan untuk menjalankan program Java. Anda tidak dapat mengkompilasi program Java dengannya.

Misalnya: pengguna komputer biasa yang ingin menjalankan beberapa game online maka akan membutuhkan JRE di sistemnya untuk menjalankan program Java.

JVM (mesin virtual java)

Seperti yang Anda ketahui, jalankan bytecodes. Itu membuat platform Java independen karena mengeksekusi .classfile yang Anda dapatkan setelah Anda mengkompilasi program Java terlepas dari apakah Anda mengkompilasinya pada Windows, Mac atau Linux.

Buka JDK

Seperti yang saya katakan di atas. Sekarang JDK dibuat oleh perusahaan yang berbeda, salah satunya yang merupakan open source dan gratis untuk penggunaan umum adalah OpenJDK, sementara beberapa lainnya adalah JRockit JDK dari Oracle Corporation atau IBM JDK.

Namun mereka semua mungkin tampak sama untuk pengguna umum.

Kesimpulan

Jika Anda seorang programmer Java, Anda akan membutuhkan JDK di sistem Anda dan paket ini akan menyertakan JRE dan JVM juga, tetapi jika Anda adalah pengguna normal yang suka bermain game online maka Anda hanya perlu JRE dan paket ini tidak akan memiliki JDK di dalamnya .

Dengan kata lain JDK adalah kakek JRE adalah ayah dan JVM adalah putra mereka.

Mrinal
sumber
9
Pos Anda salah di semua tempat. JRE (lingkungan runtime) berisi JVM (mesin virtual), dan Java Class Library. JDK berisi JRE dan banyak alat pemrograman untuk pengembang. en.wikipedia.org/wiki/JDK en.wikipedia.org/wiki/Java_virtual_machine Membalas komentar saya ketika Anda memperbaikinya dan saya akan menghapus downvote.
nhahtdh
@nhahtdh dapat kita katakan: jdk adalah paket independen, dapat diunduh, diinstal secara terpisah. Jre = beberapa kelas + plugin java + JVM
Prakash Pandey
3

Java adalah bahasa dan termasuk sintaks yang ketat dan sangat diketik dengan yang Anda harus sangat akrab sekarang.

Platform Java 2, Edisi Standar, juga dikenal sebagai J2SE, disebut platform dan termasuk kelas-kelas dalam paket java.lang dan java.io, antara lain. Itu adalah blok bangunan tempat aplikasi Java dibangun.

Java Virtual Machine, atau JVM, adalah mesin virtual perangkat lunak yang menjalankan kode Java yang dikompilasi. Karena kode Java yang dikompilasi hanya bytecode, JVM bertanggung jawab untuk mengkompilasi bytecode itu ke kode mesin sebelum menjalankannya. (Ini sering disebut Just In Time Compiler atau JIT Compiler.) JVM juga menangani manajemen memori sehingga kode aplikasi tidak harus.

Java Development Kit, atau JDK, adalah dan tetap menjadi bagian dari perangkat lunak yang digunakan pengembang Java untuk membuat aplikasi Java. Ini berisi kompiler bahasa Java, generator dokumentasi, alat untuk bekerja dengan kode asli, dan (biasanya) kode sumber Java untuk platform untuk mengaktifkan kelas platform debugging.

Java Runtime Environment, atau JRE, adalah dan tetap menjadi bagian dari perangkat lunak yang diunduh pengguna akhir untuk menjalankan aplikasi Java yang dikompilasi. Ini termasuk JVM tetapi tidak mengandung alat pengembangan apa pun yang dibundel dalam JDK. JDK, bagaimanapun, memang mengandung JRE.

Koray Tugay
sumber
3

JVM: Spesifikasi yang menjelaskan cara / sumber daya untuk menjalankan program java. Sebenarnya mengeksekusi kode byte dan membuat platform java independen. Dengan demikian, berbeda untuk platform yang berbeda. JVM untuk windows tidak dapat berfungsi sebagai JVM untuk UNIX.

JRE: Implementasi JVM. (JVM + run time libraries)

JDK: JRE + java compiler dan alat penting lainnya untuk membangun program java dari awal

pengguna2807418
sumber
2

JVM : ini sebenarnya berarti juru kode byte. Ini tergantung platform. Sebagai contoh: pada platform Windows, presesi ' java.exe ' atau ' javaw.exe ' adalah proses jvm.

JDK : adalah toolkit yang berisi pustaka dan utilitas yang diperlukan untuk mengembangkan dan menjalankan program / aplikasi java

JRE : adalah lingkungan eksekusi untuk application.ie java, itu hanya mendukung dependensi runtime termasuk jvm untuk program yang dikompilasi. Jika kita ingin mengkompilasi program java, kita perlu jdk.

Tom Sebastian
sumber
2

JVM: mesin virtual java. memberi tahu mesin apa yang harus dilakukan dengan Kode Java. Anda tidak dapat mengunduh JVM apa adanya. Muncul dikemas dalam beberapa komponen lainnya.

JRE: Beberapa komponen lain yang disebutkan di atas adalah JRE. Ini adalah JVM + guci lain untuk membuat lingkungan runtime

JDK: mengandung JRE (yang pada gilirannya berisi JVM). Setelah Anda mendapatkan JDK Anda tidak perlu menginstal JRE dan JVM secara terpisah. Ini berisi kompiler yang mengkompilasi file .java Anda ke file .class

Jain
sumber
2

JVM

JVM (Java Virtual Machine) adalah mesin abstrak. Ini adalah spesifikasi yang menyediakan lingkungan runtime di mana bytecode java dapat dieksekusi. JVM tersedia untuk banyak platform perangkat keras dan perangkat lunak.

JRE

JRE adalah akronim untuk Java Runtime Environment. Digunakan untuk menyediakan lingkungan runtime. Ini adalah implementasi dari JVM. Secara fisik ada. Ini berisi kumpulan perpustakaan + file lain yang digunakan JVM saat runtime.

JDK

JDK adalah akronim untuk Java Development Kit. Secara fisik ada. Ini berisi alat pengembangan JRE +.

Tautan: - http://www.javatpoint.com/difference-between-jdk-jre-and-jvm

Nikhil Kumar
sumber
1

Singkatnya:

  • JRE = JVM + Paket Java (seperti util, matematika, lang, awt, swing dll) + pustaka runtime
  • JDK = JRE + Alat pengembangan / debugging

Jika Anda ingin mengembangkan di java, Anda memerlukan JDK, tetapi jika Anda hanya ingin menjalankan java, Anda memerlukan JRE.

Hugo Valenza M
sumber
0

JVM Java Virtual Machine, sebenarnya mengeksekusi bytecode java. Ini adalah blok eksekusi pada platform JAWA. Itu mengkonversi bytecode ke kode mesin.

JRE Java Runtime Environment, menyediakan persyaratan minimum untuk menjalankan aplikasi Java; itu terdiri dari Java Virtual Machine (JVM), kelas inti, dan file pendukung.

JDK Java Development Kit, memiliki semua alat untuk mengembangkan perangkat lunak aplikasi Anda. Ini adalah sebagai JRE + JVM

Open JDK adalah implementasi Java Platform yang gratis dan open source.

Ankur Anandapu
sumber
0

Dalam istilah awam: - JDK = JRE + Alat pengembangan / debugging , di mana JDK adalah paket lengkap kami untuk bekerja dengan Java, dari membuat kompilasi hingga menjalankannya. Di sisi lain JRE hanya menjalankan kode (Byte Code).

Catatan: - Apakah kita menginstal JDK atau JRE, JVM akan dibundel dengan paket-paket dan JVM adalah bagian di mana kompiler JIT mengubah kode byte menjadi kode spesifik mesin.

Baca saja artikel tentang JDK, JRE, JVM dan JIT

AugustRush
sumber
0

JDK : Paket lengkap yang Anda butuhkan untuk menulis dan menjalankan kode java

OpenJDK : Implementasi JDK yang independen untuk membuatnya lebih baik

JVM : Mengubah kode Java menjadi bytecode dan memberikan spesifikasi yang memberitahu bagaimana kode Java dikompilasi, dimuat, diverifikasi, diperiksa untuk kesalahan dan dieksekusi.

JRE : Implementasi JVM dengan mana beberapa perpustakaan Java digunakan untuk Menjalankan program

dhirwan
sumber
0

JRE mengeksekusi aplikasi tetapi JVM membaca instruksi baris demi baris sehingga menjadi penerjemah.

JDK = JRE + Alat Pengembangan

JRE = JVM + Kelas Perpustakaan

KIBOU Hassan
sumber
0

JVM disingkat Java Virtual Machine , JVM adalah komponen utama arsitektur java. JVM ditulis dalam bahasa pemrograman C. Kompiler Java menghasilkan kode byte untuk JVM. JVM membaca kode byte memverifikasi kode byte dan menghubungkan kode dengan ibrary.

JRE disingkat Java Runtime Environment . itu menyediakan lingkungan saat runtime. Secara fisik ada. Ini berisi JVM + kumpulan perpustakaan (jar) + file lain.

JDK disingkat Java Development Kit . itu mengembangkan aplikasi java. Dan juga Debugging dan pemantauan aplikasi java. JDK berisi alat pengembangan JRE + (javac, java)

OpenJDK OpenJDK adalah versi open source dari sun JDK. Oracle JDK adalah JDK resmi Sun.

Poorna Senani Gamage
sumber