Tutorial sebelumnya telah membahas pengertian JVM atau Java Virtual Machine. Kali ini kita akan mempelajari istilah lain yang tidak kalah penting, yakni JRE dan JDK. Apakah keduanya masih berhubungan dengan JVM dan kenapa kita perlu membahas keduanya?
Dalam lanjutan tutorial belajar bahasa pemrograman Java di Duniailkom, saya akan membahas pengertian JRE (Java Runtime Environment) dan pengertian JDK (Java Development Kit).
Pengertian JRE (Java Runtime Environment)
JRE atau lengkapnya Java Runtime Environment adalah sebuah paket aplikasi yang berisi JVM (Java Virtual Machine) serta beberapa library kode program tambahan yang diperlukan untuk menjalankan aplikasi Java.
Meskipun kurang pas, tapi secara sederhana bisa dibilang bahwa untuk bisa menjalankan sebuah aplikasi Java di sebuah komputer, harus terinstall aplikasi JRE.
Dalam gambar di atas terlihat bahwa JRE berisi JVM ditambah beberapa library dan file-file lain. Di dalam JVM terlihat ada JIT, atau singkatan dari Just-In-Time compiler, yakni sebuah teknik yang dipakai Java untuk meningkatkan performa pada saat menjalankan program.
Jika kita hanya ingin menjalankan aplikasi Java saja dan tidak berencana membuat kode program Java, maka JRE adalah aplikasi yang dibutuhkan. Di dalam JRE terdapat perintah java yang bisa dipakai untuk menjalankan Java byte code.
Sayangnya, mulai dari versi 11 ke atas, Oracle tidak lagi merilis JDK secara terpisah. Kita harus menginstallnya satu paket dengan JDK (akan dibahas sesaat lagi). Jika anda berniat ingin menginstall JRE saja, bisa menggunakan JRE versi lama, misalnya JRE 10 atau JRE 8.
Pengertian JDK (Java Development Kit)
JDK atau lengkapnya Java Development Kit adalah sebuah paket aplikasi yang berisi JVM (Java Virtual Machine) + JRE (Java Runtime Environment) + berbagai aplikasi untuk proses pembuatan kode program Java.
Salah satu tambahan perintah yang ada di JDK adalah perintah javac yang dipakai untuk memproses kode program Java menjadi byte code. Cara penggunaan perintah ini akan kita bahas dalam beberapa tutorial ke depan.
Mengenal Oracle JDK vs OpenJDK
Secara garis besar, saat ini terdapat 2 jenis JDK: Oracle JDK dan OpenJDK. Kedua versi ini sebenarnya sangat mirip, namun ada sedikit perbedaan di lisensi.
Sesuai dengan namanya, OpenJDK adalah versi JDK yang "open source", yakni dirilis dengan lisensi GNU General Public License (GNU GPL). Open JDK tetap dikembangkan oleh Oracle (dulunya Sun Microsystem), beserta berbagai perusahaan lain, terutama RedHat.
Sedangkan Oracle JDK adalah versi OpenJDK yang di tambah beberapa fitur dari Oracle, kemudian di rilis dengan lisensi komersil. Januari 2019 lalu Oracle mengubah secara drastis isi dari lisensi Oracle JDK, terutama dalam hal dukungan untuk pengguna corporate (perusahaan).
Untuk bisa mendapat update dan dukungan, perusahaan yang menggunakan Oracle JDK harus membayar mulai dari $2.5 per pengguna per bulan. Namun untuk penggunaan individu atau pengembangan, kita tidak perlu membayar untuk memakai Oracle JDK.
Melihat perbedaan ini, saya berpendapat lebih baik menggunakan OpenJDK, karena komponen di dalam OpenJDK sendiri nyaris tidak berbeda dengan Oracle JDK, misalnya kita tetap memakai perintah javac untuk mencompile kode program Java dan perintah java untuk menjalankan Java bytecode.
Namun di luar sana masih banyak yang tidak menyadari perbedaan ini, saya yakin mayoritas buku atau tutorial Java berbahasa Indonesia untuk sistem operasi Windows masih menggunakan Oracle JDK. Karena inilah versi JDK yang langsung "ditawarkan" ketika kita mengunjungi web oracle. Jika ditulis "JDK" saja, maka kemungkinan besar itu merujuk ke Oracle JDK.
Oleh karena alasan ini saya juga akan menggunakan Oracle JDK sepanjang pembahasan di Duniailkom ini. Namun tetap berencana membuat tutorial terpisah tentang cara instalasi OpenJDK.
Isi dari JRE dan JDK
Sebagai penutup, berikut diagram yang memperlihatkan isi sebenarnya dari JRE dan JDK:
Diagram ini mungkin baru bisa anda pahami jika sudah malang melintang sebagai programmer Java profesional. Disini terlihat berbagai teknologi dan library yang merupakan pondasi yang membangun sebuah bahasa pemrograman Java.
Setidaknya di sini kita bisa perhatikan bahwa JDK berisi JRE, dan di dalam JRE juga terdapat JVM.
Disini kita telah membahas pengertian dari JRE dan JDK. Dalam tutorial selanjutnya akan membahas tentang cara instalasi JDK di dalam sistem operasi Windows.
Alhamdulillah. Trima kasih posting tentang java nya mas…sangat detil dan mudah dipahami. Ini memang jadi ciri khas penjelasan mas Andre. Semoga menjadi lahan amal …
Aamiin mas Yanto… terimakasih juga untuk dukungannya,..
Assalamu'alaikum, mas. Saya ingin sedikit meralat dan menambahkan kalimat, terutama di dalam bagian "Mengenal Oracle JDK vs OpenJDK".
Begini (sedikit) Ralatan nya:
1. "Sedangkan Oracle JDK adalah versi OpenJDK yang di tambah beberapa fitur dari Oracle, kemudian di rilis dengan <b>lisensi komersil</b>. "
Sebenarnya, kurang tepat kalo menggunakan istilah <b>lisensi komersil</b> sebagai sebutan lain dari Software yang tidak Open-source. Kenapa? Karena Software Open-source atau "Free Software" (Perangkat Lunak Bebas) itu meng-izinkan kita dan/atau pengembang untuk menggunakan nya dengan keperluan apapun, termasuk untuk keperluan komersial sekalipun.
Jadi, Open-source dan "Free Software" memberikan kebebasan dan hak pengguna/pengembang untuk meng-komersilkan Perangkat Lunak tersebut. Karena itulah, istilah tersebut akan menjadi ambigu kalau di gunakan.
Sebutan yang paling pas adalah <b>lisensi berpemilik</b> atau lebih tepatnya kalau Perangkat Lunak tersebut merupakan Perangkat Lunak Berpemilik (Proprietary Software).
Karena pada dasarnya, Oracle JDK itu merupakan Perangkat Lunak Berpemilik yang di lisensi kan dengan menggunakan "Binary Code License" (BCL) yang di buat oleh Oracle sendiri, yang mana kita tidak di perbolehkan untuk meng-komersilkan nya (selain Oracle, sebagai pengembang), dan memodifikasi nya (reverse engineering). Meski kita di perbolehkan untuk menyalin dan mendistribusikan nya, tapi ada syarat tertentu dari Oracle itu sendiri (berdasarkan Lisensi nya).
Oracle JDK (atau di sebut "JDK" saja) memang sudah lama bukanlah merupakan Open-source atau "Free Software" (Perangkat Lunak Bebas), dan adanya OpenJDK bukanlah hal yang baru, sudah sangat lama, bahkan sudah ada sejak tahun 2006 yang lalu.
Bukan cuma itu, ada beberapa Komponen Oracle JDK yang telah di paten oleh Oracle (atau Sun Microsystem) itu sendiri (seperti: US6061520 dan RE38104). Jangankan untuk menyalin nya atau membuat 'ide' yang sama, kita yang menggunakan nya saja, itu harus bayar royalti terlebih dahulu.
Karena Lisensi yang di gunakan nya tersebut beserta Paten nya, Oracle bisa membuat kebijakan yang "sewenangnya" terhadap JDK nya, yang akan berpengaruh pada pengguna JDK itu sendiri, terutama kalangan korporat atau perusahaan. Pihak Google saja sampai di gugat oleh Oracle karena melanggar Lisensi mereka atau melanggar hak cipta nya, serta melanggar Hak Paten nya (Diduga Paten yang di langgar adalah paten US6061520 dan RE38104), sejak Android sukses di pasaran.
Nah, agar Oracle tidak mengajukan gugatan lebih lanjut, akhirnya Pihak Google menggantikan Java pada Android yang tadinya menggunakan Oracle JDK menjadi OpenJDK sejak awal 2016 yang lalu (mungkin, sebelum dirilis nya Android N/Android Nougat). Bisa mas searching di Google kalo mau lihat berita nya, dengan keyword "Android moving to OpenJDK" atau apalah keyword nya :)
2. "Melihat perbedaan ini, saya berpendapat lebih baik menggunakan OpenJDK"
Jelas! Kalo mau lebih aman, saya bahkan bisa katakan "Wajib" untuk menggunakan OpenJDK daripada Oracle JDK, bukan berkata "lebih baik" lagi, untuk tujuan apapun! Apalagi kalo tujuan nya untuk belajar Java, yang ujung nya malah di gunakan untuk Produktivitas dan melakukan aktivitas komersial.
Tambahan nya:
Untuk meng-install OpenJDK di Windows dam macOS, itu sangatlah mudah, mas tinggal download saja OpenJDK lewat Website AdoptOpenJDK, yang ber-URL: https://adoptopenjdk.net/
Disitu, mas dan pembaca sekalian akan di sediakan versi OpenJDK yang bisa kalian download di komputer kalian, selain itu, mas dan pembaca sekalian juga bisa memilih JVM yang ingin di gunakan untuk JDK nya. Biasanya, JVM "HotSpot" paling sering di gunakan bila di bandingkan dengan Eclipse OpenJ9, dan itu adalah JVM default OpenJDK dan Oracle JDK.
Setelah di download, tinggal di Install saja. Setelah di Install, harusnya gak perlu nambahin lokasi JDK di dalam Environment Variable <code>PATH</code>, di dalam Registry dan membuat Variable JAVA_HOME atau JDK_HOME lagi.
Sedangkan untuk GNU/Linux, beberapa Distribusi (Distro), seperti Ubuntu, Fedora, RedHat, dll biasanya juga sudah ter-install OpenJDK secara default, dan sudah menggunakan versi terbaru nya.
Dan, sekalian, saya juga tunggu untuk Buku Python nya juga, yah.
Dah, itu aja sih ralatan dan tambahan nya, mohon maaf jika ada kekeliruan dalam komentar ini, semoga komentar ini bermanfaat bagi mas dan pembaca sekalian. Amiin Yaa Robbal 'Alamin.
Terima kasih ^_^
Waalaikumsalam…
Wah, terimakasih banyak untuk banyak koreksi dan tambahannya mas…
Kadang saya juga kesulitan menerjemahkan istilah "Proprietary Software", agar tidak rumit bagi pembaca awam jadi di translate saja sebagai "lisensi komersil". Tapi ternyata ada perbedaan di balik penggunaan istilah itu.
Saya juga sempat mendengar berita gugutan Oracle ke Google tentang masalah lisensi bahasa Java (yang dipakai android), tapi g mendalami juga gimana sejarah dan kelanjutannya. Ini jadi info tambahan baru bagi saya…
Mengenai OpenJDK, juga makin yakin untuk migrasi ke sana. Karena setelah dicoba pun cara pakainya g berbeda dengan Oracle JDK. Ini mirip seperti migrasi MySQL ke MariaBD, yang "pelakunya" juga Oracle :D
Btw, izin saya masukkan komentar ini ke dalam artikel ya mas… karena sangat bermanfaat untuk pengetahuan seputar Lisensi Java dan OpenJDK. Request untuk buku Python-nya juga ditampung.. Sukses terus kedepannya..
Silahkan, saya izinkan untuk memasukkan komentar saya ke dalam artikel, bahkan saya mau itu di masukkan kedalam artikel, hehe :-D
Ada istilah JAVA SE, JAVA FX, JAVA EE, JAVA ME. Itu apa ya?
Java SE = Java Standard Edition, Edisi bahasa Java standar dan inilah yang paling banyak dipakai.
Java FX = Edisi bahasa Java yang secara khusus dipakai untuk pembuatan aplikasi desktop berbasis grafis.
Java EE = Enterprise Edition, Edisi bahasa Java untuk kelas perusahaan, mencakup fitur advanced seperti distributed computing.
Java ME = Micro Edition, Edisi bahasa Java untuk perangkat embedded (perangkat kecil dengan memory terbatas), seperti TV, micro-controller, sensor, dll.
Saya juga tidak mendalami semuanya, tapi kemungkinan perbedaan antara satu versi dengan versi yang lain hanya di dukungan library bawaan. Cara pembuatan class Java tetap sama untuk semua versi.
Ebook Java Belom Ada ini?
Untuk saat ini masih belum tersedia, tapi mudah2an bisa menyusul di tahun depan…
mau nanya bang, kalo kita instal eclipse apakah jre dan jdk nya sudah lengkap disitu ?
mohon penjelasannya bang.
maaf pemula 🙏
bismillah saya coba belajar java, saya masih pemula tapi sebelumnya terima kasih sudah buatkan website yang beredukasi ini.
Sama2, semoga bisa bermanfaat dan lancar proses belajarnya…
ini sangat membantu terimakasih