Bagaimana mesin virtual Java menangani pemanggilan dan pengembalian metode

Under The Hood bulan ini berfokus pada pemanggilan metode dan kembali ke dalam mesin virtual Java (JVM). Ini menjelaskan empat cara metode Java (dan native) dapat dipanggil, memberikan contoh kode yang menggambarkan empat cara, dan mencakup bytecode yang relevan.

Pemanggilan metode

Bahasa pemrograman Java menyediakan dua jenis metode dasar: metode instance dan metode kelas (atau statis). Perbedaan antara kedua jenis metode ini adalah:

  1. Instancemetode memerlukan sebuah instance sebelum mereka dapat dipanggil, sedangkan classmetode tidak.
  2. Instancemetode menggunakan pengikatan dinamis (terlambat), sedangkan classmetode menggunakan pengikatan statis (awal).

Saat mesin virtual Java memanggil metode kelas, ia memilih metode yang akan dipanggil berdasarkan jenis referensi objek, yang selalu diketahui pada waktu kompilasi. Di sisi lain, saat mesin virtual memanggil metode instance, ia memilih metode yang akan dipanggil berdasarkan kelas sebenarnya dari objek tersebut, yang mungkin hanya diketahui pada waktu proses.

JVM menggunakan dua instruksi berbeda, yang diperlihatkan dalam tabel berikut, untuk memanggil dua jenis metode ini: invokevirtual untuk instancemetode, dan invokestatic untuk classmetode.