Memahami Perbedaan JDK dan JRE serta JVM
Tutorial pengenalan Java kali ini akan membahas tentang konsep dari Java Development Kit (JDK), Java Runtime Environment (JRE) dan Java Virtual Machine (JVM). Sehingga nantinya kita akan memahami perbedaan antara JDK dengan JRE dan juga JVM.
Pada tutorial sebelumnya telah disinggung tentang JDK dan JRE dan juga JVM secara garis besar. Silahkan baca tutorial " Java Version dan Java Technology". Dalam tutorial kali ini, kita akan membahasnya secara lebih mendalam yang kita mulai dengan memperkenalkan tentang machine language dan kaitannya dalam menterjemahkan bahasa program yang telah dicompile.
Ketika kita menjalankan aplikasi java pada komputer, cellphone atau platform lainnya, sebenarnya kita sedang memanggil bytecode ke JVM.
Jadi JVM membaca bytecode tersebut dan mengubahnya menjadi machine language yang dimengerti oleh sebuah platform (misal :sistem operasi) dimana tempat program tersebut dijalankan.
Seperti yang dijelaskan diatas, sebuah bahasa mesin (machine language) antara satu sistem operasi tidak sama dengan sistem operasi lainnya, maka bytecode dapat dibuat untuk tidak bergantung terhadap platform. Code byte yang dihasilkan dalam proses kompilasi akan selalu sama untuk setiap sistem operasi, namun JVM akan mengubah bytecode tersebut menjadi machine language tujuannya. Dalam hal ini JVM bersifat platform dependent, karena JVM antara satu sistem operasi dengan sistem operasi lainnya akan berbeda.
Pada tutorial sebelumnya telah disinggung tentang JDK dan JRE dan juga JVM secara garis besar. Silahkan baca tutorial " Java Version dan Java Technology". Dalam tutorial kali ini, kita akan membahasnya secara lebih mendalam yang kita mulai dengan memperkenalkan tentang machine language dan kaitannya dalam menterjemahkan bahasa program yang telah dicompile.
Apa itu Machine Language (Bahasa Mesin) ?
- Machine language adalah satu-satunya bahasa yang mampu dibaca oleh komputer atau perangkat digital lainnya. Hal ini dikarenakan di tingkat perangkat digital atau komputer hanya mampu mengenal instruksi biner (0 dan 1) yang biasa disebut Machine Code.
- Sebuah komputer tidak bisa langsung memahami bahasa pemrograman yang digunakan untuk membuat program komputer seperti : C, C++, Java dll, sehingga kode program harus dikompilasi. Setelah kode program dikompilasi, komputer dapat memahaminya karena kode program telah berubah menjadi bahasa mesin.
- Machine language bergantung pada Sistem Operasi yang digunakan, sehingga Machine Language antara Windows berbeda dengan Linux.
Apa itu Platform Dependent dan Platform Independent ?
- Sebuah aplikasi yang hanya dapat berjalan pada suatu platform atau environment dari sebuah Sistem Operasi (SO), maka kita katakan Platform Dependent.
Misalnya : Aplikasi yang ditulis dengan bahasa C, C++, VB dan lain-lain. - Sebuah aplikasi yang dapat berjalan di berbagai jenis Sistem Operasi, maka kita katakan Platform Independent.
Misalnya : Aplikasi yang ditulis dengan bahasa Java
Java Virtual Machine (JVM)
Ketika kita membangun projek yang menggunakan Java, maka programnya yang berekstensi .java akan dirubah ke dalam .class ketika program tersebut dicompile. File berekstensi .class berisikan bytecode.Ketika kita menjalankan aplikasi java pada komputer, cellphone atau platform lainnya, sebenarnya kita sedang memanggil bytecode ke JVM.
Jadi JVM membaca bytecode tersebut dan mengubahnya menjadi machine language yang dimengerti oleh sebuah platform (misal :sistem operasi) dimana tempat program tersebut dijalankan.
Seperti yang dijelaskan diatas, sebuah bahasa mesin (machine language) antara satu sistem operasi tidak sama dengan sistem operasi lainnya, maka bytecode dapat dibuat untuk tidak bergantung terhadap platform. Code byte yang dihasilkan dalam proses kompilasi akan selalu sama untuk setiap sistem operasi, namun JVM akan mengubah bytecode tersebut menjadi machine language tujuannya. Dalam hal ini JVM bersifat platform dependent, karena JVM antara satu sistem operasi dengan sistem operasi lainnya akan berbeda.
Java Runtime Environment (JRE)
- Java Runtime Environment merupakan bagian yang berfungsi untuk menjalankan sebuah aplikasi Java.
- Fungsi utama JRE adalah memabaca file yang berekstensi .class yang mengandung bytecode. Kemudian bytecode tersebut dapat dijalankan di platform manapun dengan mengggunakan JVM.
- JRE dapat didownload / didukung secara terpisah dari JDK. Jadi kalo hanya ingin menjalankan aplikasi, tidak perlu mendownload JDK (cukup JRE) saja.
- JRE lebih kecil dari JDK sehingga membutuhkan ruang Disk kurang.
- Berisikan JVM,core libraries dan komponen tambahan lainnya untuk menjalankan aplikasi dan applet ditulis dalam bahasa Java.
- Pada JRE terdapat dua kunci teknologi deployment , yaitu : Java Plug-in,yang mengizinkan applets berjalan pada browser dan Java Web Start yang mengdeploy aplikasi standalone pada suatu jaringan.
- The JRE tidak berisikan tool and utility seperti compiler atau debugger.
Java Development Kit (JDK)
- JDK merupakan superset dari JRE, dan berisi segala sesuatu yang ada di JRE, ditambah alat-alat seperti compiler dan debugger yang diperlukan untuk mengembangkan applet dan aplikasi.
- Memiliki tujuan untuk membangun program java (.java) serta mengubah kode program java dalam bentuk bytecode (.class)
- Karena bertujuan untuk membangun program java, maka JDK ini ditujukan bagi developer.