Java Class File dan Fungsinya
/* hasil dari kompilasi bahasa program
ini akan menghasilkan beberapa class file */
/* deklarasi class */
class Sample { }
/* deklarasi class */
class Student { }
/* deklarasi class */
class Test{
public static void main(String[] args)
{
System.out.println("struktur Class File");
}
}
ClassFile
{
magic_number;
minor_version;
major_version;
constant_pool_count;
constant_pool[];
access_flags;
this_class;
super_class;
interfaces_count;
interfaces[];
fields_count;
fields[];
methods_count;
methods[];
attributes_count;
attributes[];
}
satu, magic_number: 4 bytes pertama dari class file disebut dengan magic_number. magic_number adalah nilai predefinisi dimana JVM menggunakannya untuk mengidentifikasi apakah .class file yang sudah di-generated oleh kompilator, baik secara benar ataupun tidak. Nilai dari magic_number akan dinyatakan dalam hexadesimal seperti berikut:
0xCAFEBABE
Sekarang lihat apa yang terjadi ketika JVM tidak menemukan magic_number. Misalkan memiliki .java file dengan nama Sample.java, setelah itu lakukan perintah step by step berikut ini pada sistem komputer.
/* deklarasi class */
class Sample
{
public static void main(String[] args)
{
System.out.println("Magic Number");
}
}
- step 1: Lakukan kompilasi program menggunakan perintah javac Sample.java.
- step 2: Buka file Sample.class, dan akan terlihat seperti gambar 1.
- step 3: Hapus salah satu simbol dari file Sample.class dan simpan kembali file tersebut.
- step 4: Jalankan program menggunakan java Sample command dan selanjutnya magic_number akan menampilkan run time exception seperti terlihat pada gambar 2.
Catatan: hasil ini akan bervariasi bergantung pada seberapa banyak data yang dihapus pada .class file.
Catatan: Lower version compiler dapat mengeksekusi generate .class file menggunakan major_version JVM, tetapi tidak sebaliknya. Jika hal tersebut dilakukan, maka akan didapatkan run time exception pada proses.
- step 1: Buka command prompt Windows dan coba periksa Kompilator Java dan versi JVM menggunakan perintah seperti diperlihatkan pada gambar 3 dan 4.
- step 2: Sekarang coba periksa versi lain yang lebih tinggi atau yang lebih rendah yang telah diinstal pada sistem komputer. Untuk melakukan instalasi versi terbaru Java dapat didownload melalui link oracle.com [klik]. Setelah itu, lakukan instalasi pada pc atau laptop dan catat lokasi instalasinya.
- step 3: Buka command prompt kedua pada Windows dan atur rute dari folder bin instalasi JDK seperti diperlihatkan pada step 2 sebelumnya. Dan periksa versi dari kompilator Java dan JVM yang telah diinstal tersebut seperti diperlihatkan pada gambar 5.
- step 4: Pada command prompt yang pertama coba lakukan kompilasi terhadap .java file yang tersedia sebelumnya, seperti file Sample.java. Hasil kompilasi diperlihatkan seperti gambar 6.
- step 5: Pada command prompt yang kedua pada Windows coba jalankan hasil kompilasi dari file Sample.java yang dilakukan sebelumnya, hasilnya muncul runtime exception seperti diperlihatkan pada gambar 7.
tiga, constant_pool_count: merepresentasikan angka dari konstanta pada konstanta pool. Ketika Java file dikompilasi, semua referensi variabel dan method ditampilkan pada konstanta class pool sebagai simbol referensi.
empat, constant_pool[]: merepresentasikan informasi mengenai konstanta yang ditampilkan dalam pool file.
lima, access_flags: menyediakan informasi mengenai modifier yang dideklarasikan untuk class file.
enam, this_class: merepresentasikan nama kualifikasi penuh dari class file.
tujuh, super_class: merepresentasikan nama kualifikasi penuh dari super class terdekat saat ini. Seperti pada file Sample.java, ketika melakukan kompilasi maka this_class bisa disebut sebagai Sample class dan super_class sebagai Object class.
delapan, interface_count: mengembalikan nilai dari implementasi interface oleh class file saat ini.
sembilan, interface[]: mengembalikan informasi implementasi interface oleh class file saat ini.
sepuluh, fields_count: merepresentasikan angka dari tampilan fields (variabel static) pada class file saat ini.
sebelas, fields[]: merepresentasikan informasi field (variabel static) dari class file saat ini.
dua_belas, method_count: merepresentasikan angka dari method yang ditampilkan dalam class file saat ini.
tiga_belas, method[]: mengembalikan informasi mengenai semua method yang ditampilkan dalam class file saat ini.
empat_belas, attributes_count: mengembalikan angka dari atribut (variabel instance) yang ditampilkan dalam class file saat ini.
lima_belas, attributes[]: menyediakan informasi mengenai semua atribut yang ditampilkan dalam class file saat ini.
Apa yang dimaksud dengan Java Class File pada bahasa pemrograman Java?
BalasHapusJava Class File adalah sebuah file dengan esktensi .class yang berisi kode byte Java yang dapat dijalankan pada Java Virtual Machine atau JVM. Java Class File tersebut biasanya dibuat oleh kompilator Java dari file kode sumber bahasa Java, dimana hal ini membuat aplikasi Java yang telah dikembangkan dapat berdiri secara mandiri pada platform yang digunakan.
HapusJava Class File adalah format yang ditentukan secara tepat untuk Java yang akan dikompilasi oleh kompilator. Kode sumber Java dikompilasi menjadi file class yang dapat dimuat dan dijalankan oleh JVM apapun. Java Class File memungkinkan untuk dapat dijalankan pada lintas jaringan sebelum dimuat oleh JVM.
BalasHapusApa keterkaitan antara Java Class FIle dan JVM pada bahasa pemrograman Java?
BalasHapusAlasan kenapa kode program Java dapat dijalankan pada begitu banyak sistem operasi yang berbeda adalah karena sifatnya sebagai bahasa pemrograman yang multiplatform.
HapusSaat dilakukan kompilasi file .java menjadi file .class, maka file .class tersebut secara dengan kode biner pada bahasa pemrograman lainnya, dimana kode teresbut adalah kode file mesin yang sebenarnya dijalankan ketika sebuat program berjalan pada komputer. Namun alih-alih menyimpan kode mesin yang dapat dibaca secara langsung oleh komputer, Java menyimpan kode biner tersebut pada JVM. Sistem JVM berbeda dengan sistem yang dibuat pada sistem komputer pada umumnya, namun JVM dapat membaca semua file dengan tipe .class dan menerjemahkannya cengan cara yang sama pada setiap sistem komputer yang digunakan.
Hal ini memiliki dampak yang positif sekaligus juga dampak yang negatif pada aplikasi yang dikembangkan dengan bahasa pemrograman tersebut. Artinya, file apapun yang bertipe .class dapat dijalankan pada mesin komputer apapun selama mesin komputer tersebut memiliki JVM. Namun, sebaliknya jika komputer yang akan digunakan untuk menjalankan aplikasi Java tidak memiliki JVM maka komputer tersebut sudah pasti tidak akan bisa menjalankan program apapun yang dibuat dengan menggunakan bahasa Java.