Arsitektur & Komponen Java Dijelaskan [2022]

Diterbitkan: 2021-01-04

Sebelum Anda menjadi programmer Java, Anda harus memahami setiap aspek dari bahasa ini. Salah satu aspek terpenting dari Java adalah arsitektur Java. Topik teknis lain dalam hal ini adalah mengetahui komponen JVM. Jadi, kami akan membahas kedua topik penting ini dalam artikel ini.

Artikel ini mengasumsikan bahwa Anda memiliki pemahaman umum tentang dasar-dasar Java. Bahkan jika Anda tidak terbiasa dengan dasar-dasar Java, Anda dapat mengajukan pertanyaan apa pun yang mungkin Anda miliki di bagian komentar di bawah. Mari kita mulai:

Daftar isi

Arsitektur Java Dijelaskan

Java memiliki dua proses, kompilasi, dan interpretasi. Kompilator Java mengubah kode yang ada di Java menjadi kode byte. Java Virtual Machine (JVM) mengubah kode byte menjadi kode mesin yang langsung dieksekusi oleh mesin.

Kami dapat menggambarkan proses ini dalam langkah-langkah berikut:

  • Kode sumber masuk ke Kompilator Java
  • Kompilator Java mengubahnya menjadi kode byte
  • Kode byte masuk ke Java Virtual Machine
  • Akhirnya, ia pergi ke OS (sistem operasi)

Sekarang setelah kita sedikit terbiasa dengan cara kerja arsitektur Java, kita dapat melihat berbagai komponennya:

JVM (Mesin Virtual Java)

Pembuat Java menginginkannya menjadi WORA (Write Once Run Anywhere). Ini berarti Anda dapat menjalankan aplikasinya di platform apa pun, tetapi hal yang memberi Java kualitas ini adalah JVM. JVM menyediakan lingkungan untuk mengeksekusi kode Java. Ini menafsirkan bytecode dan mengubahnya menjadi kode mesin sehingga mesin dapat menjalankan program Java.

Beban JVM memverifikasi dan mengeksekusi kode. Ini juga menyediakan lingkungan runtime ke kode sehingga bisa berjalan di mesin.

JRE (Lingkungan Waktu Proses Java)

JRE membangun lingkungan runtime di mana Anda dapat menjalankan program Java. Dibutuhkan kode Java dan menggabungkan yang sama dengan perpustakaan yang diperlukan. JRE juga memulai JVM untuk eksekusinya. Java Runtime Environment memiliki perangkat lunak dan pustaka yang diperlukan sehingga Anda dapat menjalankan program.

JDK (Java Development Kit)

Anda akan menggunakan JDK untuk mengembangkan aplikasi dan program Java. Ini adalah lingkungan pengembangan perangkat lunak dan berisi beberapa alat pengembangan termasuk JRE, kompiler, juru bahasa, generator dokumentasi, dan pengarsip dengan yang lain.

Komponen JVM

Sekarang setelah Anda terbiasa dengan arsitektur Java, mari kita lihat komponen-komponen JVM agar kita dapat memahaminya dengan lebih baik. Karena JVM melakukan salah satu tugas paling penting untuk Java, JVM memiliki banyak bagian untuk tujuan itu. Kami akan membahas setiap elemen secara rinci:

Subsistem ClassLoader

ClassLoader adalah subsistem dari Java Virtual Machine yang memuat file kelas. Ini adalah komponen pertama dari arsitektur saat memuat program sehingga tugas lain dapat dilakukan. Itu juga menautkan dan menginisialisasi file kelas. Kita dapat membagi kerjanya menjadi tiga bagian berikut:

Memuat

Komponen ini memuat kelas. Ia memiliki BootStrap ClassLoader untuk memuat kelas milik classpath bootstrap. Extension ClassLoader memuat kelas yang terletak di dalam folder ext, dan Application ClassLoader memuat jalur yang disebutkan Variabel Lingkungan dan file serupa.

menghubungkan

Di sini, subsistem memiliki verifier untuk memverifikasi apakah bytecode benar atau tidak. Jika bytecode tidak tepat, itu akan menghasilkan kesalahan verifikasi. Bagian penautan mengalokasikan semua memori variabel statis dan memberikan nilai default. Itu juga menggantikan referensi simbolis dari memori dengan yang asli.

inisialisasi

Di bagian ClassLoading ini, sistem menetapkan variabel statis ke nilai asli dan mengeksekusi blok statis.

Area Data Waktu Proses

Bagian JVM ini memiliki komponen berikut:

Area Metode

Area metode menyimpan semua data tingkat kelas. Setiap JVM hanya memiliki satu area metode.

Area Tumpukan

Area heap menyimpan semua Objects dan array serta variabel instannya. Seperti area metode, JVM hanya memiliki satu area tumpukan.

Area Tumpukan

Bagian ini membuat runtime stack unik untuk setiap ancaman dan membuat entri untuk setiap pemanggilan metode dalam memori stack (juga dikenal sebagai Stack Frame). Ini memiliki Array Variabel Lokal yang terkait dengan metode, tumpukan operan, yang bertindak sebagai ruang kerja untuk operasi perantara, dan data bingkai, tempat semua simbol yang terkait dengan metode tetap disimpan. Data bingkai menyimpan informasi blok tangkap kecuali ada pengecualian.

Register PC

Setiap utas memiliki Register PC terpisah yang menyimpan alamat instruksi yang sedang berjalan. Setelah instruksi selesai dieksekusi, register PC memperbarui dirinya dengan instruksi berikutnya.

Tumpukan Metode Asli

Seperti namanya, bagian ini menyimpan informasi tentang metode asli. Ini menciptakan tumpukan metode asli yang unik untuk setiap ancaman.

Anda harus mencatat bahwa dua komponen pertama dari Area Data Runtime (area metode dan area tumpukan) adalah sumber daya bersama sedangkan area tumpukan tidak.

Mesin Eksekusi

Mesin Eksekusi mengeksekusi bytecode. Ia membaca dan mengeksekusinya sepotong demi sepotong. Ini juga memiliki komponen yang berbeda:

Penerjemah

Komponen ini menginterpretasikan bytecode dengan cepat tetapi sedikit lambat dalam eksekusi. Ini memiliki kelemahan yang signifikan seperti ketika sistem memanggil satu metode beberapa kali, dan itu membutuhkan interpretasi baru setiap kali. Kelemahan penerjemah ini merusak efisiensi proses secara substansial.

Kompiler JIT

Kompilator JIT tidak memiliki kelemahan yang dimiliki juru bahasa. Jadi, ketika Mesin Eksekusi menemukan kode berulang, ia menggunakan Kompilator JIT, bukan penerjemah. Kompilator JIT mengubah bytecode menjadi kode asli setelah mengompilasinya. Sistem menggunakan kode asli secara langsung.

Kompilator JIT memiliki generator kode perantara untuk menghasilkan kode perantara dan pengoptimal kode untuk mengoptimalkan yang sama. Ini juga memiliki generator kode target yang menghasilkan rusa betina asli dan profil yang menemukan hotspot.

Pengumpul sampah

Komponen terakhir dari Execution Engine adalah pengumpul sampah yang mengumpulkan dan membuang objek yang tidak direferensikan. Anda dapat memicunya dengan memanggil system.gc() namun itu tidak menjamin eksekusinya.

Selain komponen ini, JVM juga memiliki JNI (Java Native Interface) dan Native Method Libraries. Yang pertama berinteraksi dengan yang terakhir dan menyediakan Perpustakaan Asli yang diperlukan untuk eksekusi.

Dapatkan Kursus Pengembangan Perangkat Lunak dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.

Pikiran Akhir

Kami telah mencoba untuk membuat artikel ini tetap ringkas dan bermanfaat, dan kami yakin bahwa Anda menganggap ini informatif. Jika Anda memiliki pertanyaan tentang komponen JVM atau arsitektur Java, Anda dapat menanyakan hal yang sama kepada kami dengan menghubungi kami melalui komentar.

Anda dapat mempelajari lebih lanjut tentang Java dan aplikasinya di blog kami. Kami memiliki banyak panduan dan artikel bermanfaat yang mencakup berbagai aspek bahasa pemrograman yang tangguh ini.

Jika Anda tertarik untuk mempelajari lebih lanjut tentang Java, OOP & pengembangan perangkat lunak full-stack, lihat Program PG Eksekutif upGrad & IIIT-B dalam Pengembangan Perangkat Lunak Full-stack yang dirancang untuk profesional yang bekerja dan menawarkan 500+ jam pelatihan yang ketat, 9+ proyek, dan tugas, status Alumni IIIT-B, proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan-perusahaan top.

Persiapkan Karir Masa Depan

Daftar Sekarang untuk Magister Rekayasa Perangkat Lunak