Bunun için ihtiyacımız olan şeyler herhangi bir konsol penceresi (Windows Command Prompt, Unix-Solaris Console vb.) ve sistemimizde kurulu olan JDK (JAVA Development Kit). Yapmamız gereken ise JDK'nın \bin klasörüne gidip javap dosyasını çalıştırmak... (Devam)
ÖNEMLİ NOT : Bloglarda yazılan yazıları kopyalayıp kendi sitenizde, forumlarda yayınlamak çok hoş gibi görünse de aslında makaleyi yazan kişinin cesaretini kıran, motivasyonunu yok eden bir davranıştır. Burada yazılan yazıların da bir kısmını ya da tamamını kaynak göstermeden kopyalayan kişi düdüklü tenceredir, Sarkozy'dir.
Evet, şimdi biraz Yazılım Yazalım! Ben bu amaçla 'Deneme' isminde bir proje oluşturdum ve 'deneme' isminde bir de package'ım var. Bu package altında ByteCodeTest isminde bir class oluşturdum. Şöyle ki:
public class ByteCodeTest {Projeyi derledikten sonra sıra geldi JAVA bytecode'u elde etmeye. Burada kullanacağımız komut:
int i;
public ByteCodeTest() {
i = 0;
}
public void artir() {
i = i + 1;
}
public void artirAlternatif() {
i++;
}
}
javap -c
olacak. Bunun için ben kendi sistemimde aşağıdaki komutu konsola yazdım (resmi büyütmek için üzerine tıklayın) :
Elde ettiğim çıktı şu şekilde oldu:
Compiled from "ByteCodeTest.java"Burada, yukarıda JAVA dilinde yazmış olduğumuz ByteCodeTest sınıfının JAVA bytecode'una dönüştürülmüş halini görmekteyiz. Constructor ve methodlarımız, bytecode gösteriminde de aynı isimlere sahip olduğundan ayırt etmekte sıkıntı çekmeyeceğiz.
public class deneme.ByteCodeTest {
int i;
public deneme.ByteCodeTest();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: aload_0
5: iconst_0
6: putfield #2 // Field i:I
9: return
public void artir();
Code:
0: aload_0
1: aload_0
2: getfield #2 // Field i:I
5: iconst_1
6: iadd
7: putfield #2 // Field i:I
10: return
public void artirAlternatif();
Code:
0: aload_0
1: dup
2: getfield #2 // Field i:I
5: iconst_1
6: iadd
7: putfield #2 // Field i:I
10: return
}
Bir sonraki yazımda dönüştürdüğümüz bu JAVA bytecode'un ayrıntılarını ve bize ne ifade ettiğini inceleyeceğiz.
Hiç yorum yok:
Yorum Gönder