Saya memiliki kelas Java berikut
public class HelloWorld {
public static void main(String []args) {
}
}
Ketika saya mengkompilasi file ini dan menjalankan sha256 pada file kelas yang dihasilkan saya dapatkan
9c8d09e27ea78319ddb85fcf4f8085aa7762b0ab36dc5ba5fd000dccb63960ff HelloWorld.class
Selanjutnya saya memodifikasi kelas dan menambahkan baris kosong seperti ini:
public class HelloWorld {
public static void main(String []args) {
}
}
Sekali lagi saya menjalankan sha256 pada output mengharapkan untuk mendapatkan hasil yang sama tetapi saya malah mendapatkannya
11f7ad3ad03eb9e0bb7bfa3b97bbe0f17d31194d8d92cc683cfbd7852e2d189f HelloWorld.class
Saya telah membaca artikel TutorialsPoint ini bahwa:
Baris yang hanya berisi ruang putih, mungkin dengan komentar, dikenal sebagai baris kosong, dan Java benar-benar mengabaikannya.
Jadi pertanyaan saya adalah, karena Java mengabaikan baris kosong mengapa bytecode yang dikompilasi berbeda untuk kedua program?
Yaitu perbedaan dalam HelloWorld.class
satu 0x03
byte yang digantikan oleh 0x04
byte.
Set
s abadi baru dengan pengacakan secara internal, itu bisa menghasilkan urutan yang berbeda pada setiap proses. Itu juga bisa menambahkan atribut khusus yang berisi waktu kompilasi. Dan seterusnya ...