Langsung ke konten utama

Java Class File

File atau data dari Java class mengandung Java bytecode dan .class extension yang bisa dijalankan oleh JVM. Sebuah file Java diciptakan oleh kompilator Java dari .java files sebagai hasil dari proses kompilasi. Sebuah bahasa pemrograman Java source file (.java file) mengandung satu atau lebih class Java. Jadi jika  file .java mengandung lebih dari satu buah class maka setiap class akan dikompilasi menjadi class file yang berbeda.

Contoh: Lakukan save code Java dibawah ini dengan nama file Test.java pada sistem komputer.

/* 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");

}

 

}

Setelah dilakukan proses kompilasi oleh kompilator, maka akan dihasilkan tiga class file.

Tampilan dari 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[];
}

Berikut penjelasan dari beberapa elemen class file:
satu, magic_number: 4 bytes pertama dari class file disebut dengan magic_numbermagic_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.

hasil kompilasi file java dengan nama file Sample.java menggunakan jvm
Gambar 1 hasil kompilasi Sample.java

  • 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.

tampilan run time exception file java dari command prompt windows
Gambar 2 runtime exception Sample.java

Catatan: hasil ini akan bervariasi bergantung pada seberapa banyak data yang dihapus pada .class file.

dua, minor_version & major_version: kedunya berfungsi merepresentasikan versi dari .class file. JVM akan menggunakan kedua versi tersebut untuk mengidentifikasi versi mana dari kompilator yang melakukan generate dari .class file saat ini. Versi dari class file ditandai sebagai M.m, dimana M besar mewakili major_version dan m mewakili minor_version.

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.



Contoh demonstrasi program diperlihatkan dengan tahapan sebagai berikut (khusus os windows):
  • step 1: Buka command prompt Windows dan coba periksa Kompilator Java dan versi JVM menggunakan perintah seperti diperlihatkan pada gambar 3 dan 4.

periksa compiler java dengan menggunakan command prompt windows
Gambar 3 periksa kompilator Java

periksa versi java dengan menggunakan perintah command prompt pada windows
Gambar 4 periksa versi Java


  • 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.

periksa versi compiler Java dengan command prompt pada Windows
Gambar 5 periksa versi Java terbaru

  • 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.

kompilasi file Java dengan compiler pada command prompt Windows
Gambar 6 kompilasi file Java

  • 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.

hasil dari kompilasi memberikan runtime exception Java pada command prompt Windows
Gambar 7 runtime exception Java pada command prompt

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.

Komentar

  1. Apa yang dimaksud dengan Java Class File pada bahasa pemrograman Java?

    BalasHapus
    Balasan
    1. Java 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.

      Hapus
  2. Java 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.

    BalasHapus
  3. Apa keterkaitan antara Java Class FIle dan JVM pada bahasa pemrograman Java?

    BalasHapus
    Balasan
    1. Alasan kenapa kode program Java dapat dijalankan pada begitu banyak sistem operasi yang berbeda adalah karena sifatnya sebagai bahasa pemrograman yang multiplatform.

      Saat 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.

      Hapus

Posting Komentar

Respon komentar 7 x 24 jam, so please be patient :D