Apakah JRE itu? Pengantar Java Runtime Environment

Bersama-sama, Java Development Kit (JDK), Java Virtual Machine (JVM), dan Java Runtime Environment (JRE) membentuk trifecta yang kuat dari komponen platform Java untuk mengembangkan dan menjalankan aplikasi Java. Saya sebelumnya telah memperkenalkan JDK dan JVM. Dalam tutorial singkat ini, Anda akan belajar tentang JRE, yang merupakan lingkungan runtime untuk Java.

Secara praktis, lingkungan runtime adalah perangkat lunak yang dirancang untuk menjalankan perangkat lunak lain. Sebagai lingkungan runtime untuk Java, JRE berisi pustaka kelas Java, pemuat kelas Java, dan Mesin Virtual Java. Dalam sistem ini:

  • The class loader bertanggung jawab untuk benar memuat kelas dan menghubungkan mereka dengan perpustakaan kelas Java inti.
  • The JVM bertanggung jawab untuk memastikan aplikasi Java memiliki sumber daya yang mereka butuhkan untuk menjalankan dan melakukan dengan baik di perangkat Anda atau lingkungan cloud.
  • The JRE terutama wadah untuk komponen-komponen lainnya, dan bertanggung jawab untuk mendalangi kegiatan mereka.

Kami akan menggali lebih dalam tentang bagaimana komponen-komponen ini bekerja bersama di bagian selanjutnya.

Menginstal JDK, JRE, dan JVM

Dari perspektif penginstalan, kapan pun Anda mendownload JDK, itu akan menyertakan JRE yang kompatibel dengan versi, dan JRE akan menyertakan JVM default. Anda juga dapat mengunduh JRE secara terpisah dari JDK, dan Anda dapat memilih dari berbagai JVM. Default berfungsi dengan baik untuk sebagian besar implementasi, terutama saat Anda memulai dengan Java.

Apa itu lingkungan runtime?

Program perangkat lunak perlu dijalankan, dan untuk melakukannya, program memerlukan lingkungan untuk dijalankan. Lingkungan waktu proses memuat file kelas dan memastikan ada akses ke memori dan sumber daya sistem lainnya untuk menjalankannya. Di masa lalu, sebagian besar perangkat lunak menggunakan sistem operasi (OS) sebagai lingkungan runtime-nya. Program ini berjalan di dalam komputer apa pun yang digunakan, tetapi mengandalkan pengaturan sistem operasi untuk akses sumber daya. Resource dalam hal ini akan menjadi hal-hal seperti memori dan file program serta dependensi. Java Runtime Environment mengubah semua itu, setidaknya untuk program Java.

WORA untuk Java

Ketika pertama kali diperkenalkan, prinsip Java "tulis sekali, jalankan di mana saja" dianggap revolusioner, tetapi saat ini prinsip tersebut telah diadopsi sebagai norma untuk sebagian besar sistem perangkat lunak.

Lingkungan Waktu Proses Java

Kita dapat melihat perangkat lunak sebagai rangkaian lapisan yang berada di atas perangkat keras sistem. Setiap lapisan menyediakan layanan yang akan digunakan (dan diperlukan) oleh lapisan di atasnya. Java Runtime Environment adalah lapisan perangkat lunak yang berjalan di atas sistem operasi komputer, menyediakan layanan tambahan khusus untuk Java.

JRE memperhalus keragaman sistem operasi, memastikan bahwa program Java dapat berjalan di hampir semua OS tanpa modifikasi. Ini juga menyediakan layanan bernilai tambah. Manajemen memori otomatis adalah salah satu layanan JRE yang paling penting, memastikan bahwa pemrogram tidak perlu mengontrol alokasi dan realokasi memori secara manual.

Singkatnya, JRE adalah semacam meta-OS untuk program Java. Ini adalah contoh klasik abstraksi , mengabstraksi sistem operasi yang mendasarinya menjadi platform yang konsisten untuk menjalankan aplikasi Java.

Bagaimana JRE bekerja dengan JVM

Mesin Virtual Java adalah sistem perangkat lunak yang berjalan yang bertanggung jawab untuk menjalankan program Java langsung. JRE adalah sistem pada disk yang mengambil kode Java Anda, menggabungkannya dengan pustaka yang diperlukan, dan memulai JVM untuk menjalankannya.

JRE berisi pustaka dan perangkat lunak yang perlu dijalankan oleh program Java Anda. Sebagai contoh, pemuat kelas Java adalah bagian dari Lingkungan Waktu Proses Java. Perangkat lunak penting ini memuat kode Java yang dikompilasi ke dalam memori dan menghubungkan kode tersebut ke pustaka kelas Java yang sesuai.

Dalam tampilan berlapis yang baru saja saya jelaskan, JVM dibuat oleh JRE. Dari perspektif paket, JRE berisi JVM, seperti yang ditunjukkan Gambar 1.

Matthew Tyson

Menginstal dan menggunakan JRE

Meskipun ada sisi konseptual dari JRE, dalam praktik dunia nyata, JRE hanyalah perangkat lunak yang diinstal di komputer, yang tujuannya adalah untuk menjalankan program Java Anda. Sebagai pengembang, Anda sebagian besar akan bekerja dengan JDK dan JVM, karena itu adalah komponen platform yang Anda gunakan untuk mengembangkan dan menjalankan program Java Anda. Sebagai pengguna aplikasi Java, Anda akan lebih terlibat dengan JRE, yang memungkinkan Anda menjalankan program tersebut.

Dalam kebanyakan kasus, komputer Anda akan dilengkapi dengan Java yang terinstal, dan JRE akan disertakan dengan itu. Jika Anda memang perlu menginstal atau meningkatkan secara manual, Anda dapat mendownload versi JRE saat ini dari Oracle.

Versi JRE

Java Runtime Environment diperbarui untuk setiap versi baru Java, dan nomor versinya selaras dengan sistem versi platform Java, jadi misalnya JRE 1.8 menjalankan Java 8. Meskipun Anda memiliki berbagai paket JDK untuk dipilih (seperti Edisi Enterprise atau Edisi Standar) yang tidak terjadi pada JRE. Sebagian besar komputer menjalankan JRE yang dikembangkan untuk Java SE, yang dapat menjalankan aplikasi Java apa pun terlepas dari bagaimana ia dikembangkan. Sebagian besar perangkat seluler dilengkapi dengan JRE untuk Java ME, yang telah diinstal sebelumnya di perangkat seluler dan tidak tersedia untuk diunduh.

Setelah JRE diinstal, Anda dapat berinteraksi dengannya di baris perintah dengan memasukkan  java -version, yang akan memberi tahu Anda versi apa yang diinstal. Pada sistem POSIX, Anda selalu dapat memeriksa lokasi yang dipasang dengan which java.

JRE di devops

JRE tidak terlalu terlihat dalam tahap pengembangan, di mana ia kebanyakan hanya menjalankan program Anda di OS atau IDE pilihan Anda. JRE memainkan peran yang sedikit lebih menonjol dalam devops dan administrasi sistem karena digunakan untuk pemantauan dan konfigurasi.

Pada dasarnya, JRE menyediakan "kenop" yang akan Anda gunakan untuk mengkonfigurasi dan mengontrol karakteristik aplikasi Java. Penggunaan memori adalah contoh utama, roti dan mentega dari administrasi sistem. Meskipun penggunaan memori selalu penting, itu penting dalam konfigurasi cloud, dan devops adalah teknologi berbasis cloud. Jika Anda bekerja di lingkungan pengembang, atau tertarik untuk bercabang menjadi pengembang, ada baiknya Anda memahami cara kerja memori Java dan cara memonitornya di JRE.

Devops atau sysadmin?

Devops adalah istilah baru, tetapi ini menggambarkan sesuatu yang telah terjadi selama beberapa dekade, yaitu interoperabilitas antara pengembangan dan operasi. Dalam pengertian ini, devops hanyalah istilah baru untuk apa yang dulu disebut operasi atau administrasi sistem. Seperti sysadmin, aspek penting dari pengembang adalah mengelola sistem yang diperlukan untuk menjalankan perangkat lunak. Mengelola JRE adalah bagian dari sistem pengelolaan yang menjalankan aplikasi Java.

Memori Java dan JRE

Memori Java terdiri dari tiga komponen: heap, stack dan metaspace (yang sebelumnya disebut permgen).

  • Metaspace adalah tempat Java menyimpan info program Anda yang tidak berubah seperti definisi kelas.
  • Heap space adalah tempat Java menyimpan konten variabel.
  • Stack space adalah tempat Java menyimpan eksekusi fungsi dan referensi variabel.

Manajemen memori di Java 8

Sampai Java 8, metaspace dikenal sebagai permgen. Selain menjadi nama yang jauh lebih keren, metaspace adalah perubahan signifikan dalam cara pengembang berinteraksi dengan ruang memori Java. Sebelumnya, Anda akan menggunakan perintah java -XX:MaxPermSizeuntuk memantau ukuran ruang permgen. Dari Java 8 ke depan, Java secara otomatis meningkatkan ukuran metaspace untuk mengakomodasi kebutuhan meta program Anda. Java 8 juga memperkenalkan flag baru MaxMetaspaceSize, yang dapat digunakan untuk membatasi ukuran metaspace.

Opsi memori lainnya, heap dan stack, tetap sama di Java 8.

Mengonfigurasi ruang heap

Ruang heap adalah bagian paling dinamis dari sistem memori Java. Anda dapat menggunakan flag -Xmsdan -Xmxuntuk memberi tahu Java seberapa besar memulai heap, dan seberapa besar untuk mengizinkannya menjadi. Memahami cara menyetel tanda ini untuk kebutuhan program tertentu merupakan aspek penting dari manajemen memori di Java. Idealnya adalah membuat tumpukan cukup besar untuk mencapai pengumpulan sampah yang paling efisien. Artinya, Anda ingin memberikan cukup memori untuk membiarkan program berjalan, tetapi Anda tidak ingin itu lebih besar dari yang diperlukan.

Mengonfigurasi ruang tumpukan

Stack space adalah tempat pemanggilan fungsi dan referensi variabel antri. Stack space adalah sumber kesalahan kedua paling terkenal dalam pemrograman Java: pengecualian stack overflow (yang pertama adalah pengecualian pointer nol). The stack overflow pengecualian menunjukkan bahwa Anda sudah kehabisan ruang stack karena terlalu banyak telah disediakan. Biasanya, Anda akan mendapatkan stack overflow saat sebuah metode atau metode memanggil satu sama lain secara melingkar, sehingga mencurahkan jumlah panggilan fungsi yang terus bertambah ke dalam tumpukan.

Anda menggunakan -Xsssakelar untuk mengonfigurasi ukuran awal tumpukan. Tumpukan kemudian tumbuh secara dinamis sesuai dengan kebutuhan program.

Pemantauan aplikasi Java

Meskipun pemantauan aplikasi adalah fungsi JVM, JRE menyediakan opsi konfigurasi, yang merupakan dasar yang diperlukan untuk pemantauan. Berbagai alat tersedia untuk memantau aplikasi Java, dari yang klasik (seperti perintah Unix top) hingga solusi pemantauan jarak jauh yang canggih seperti pemantauan infrastruktur Oracle.

Di antara opsi ini adalah profiler visual seperti VisualVM yang memungkinkan untuk memeriksa JVM yang sedang berjalan. Alat ini memungkinkan pelacakan hotspot dan kebocoran memori, serta memantau konsumsi memori secara keseluruhan di sistem Anda.

Kesimpulan

Java Runtime Environment adalah program di dalam disk yang memuat aplikasi Java untuk dieksekusi JVM. JRE disertakan secara default saat Anda mengunduh Java Development Kit, dan setiap JRE menyertakan pustaka kelas inti Java, pemuat kelas Java, dan Mesin Virtual Java. Sangat membantu untuk memahami bagaimana JVM, JDK dan JRE berinteraksi, terutama untuk bekerja di lingkungan cloud dan devops. Dalam lingkungan ini, JRE mengambil peran yang lebih kuat dalam pemantauan dan konfigurasi daripada dalam pengembangan aplikasi Java tradisional.

Artikel, "Apa itu JRE? Pengantar Lingkungan Waktu Proses Java" awalnya diterbitkan oleh JavaWorld.