CodeBlanks Logo Icon CodeBlanks

Proje tasarımı

Bytecode analiz projesinin iskeletini tasarlarsın.

Proje: bytecode denetleyici

Bu beş derslik projede bir bytecode denetleyici uygulayacaksın. Her derste bir parça ekleyecek, son derste çalışan bir mini denetleyici tamamlayacaksın. ASM kitaplığındaki visitor desenini düz Java ile modelleyeceksin.

İlk olarak ClassVisitor arabirimini tanımlayacaksın: void visitClass(String name); metodu sınıf adını ziyaret eder. Sonraki derslerde ClassReader ile sınıfı gezecek, ClassWriter ile çıktı üretecek, dönüşüm ve birleştirme yapacaksın.

sınıf dosyası biçimi

Bir .class dosyası sabit bir yapıdadır: sihirli sayı 0xCAFEBABE, sürüm, sabit havuz (constant pool), erişim bayrakları, this/super, alanlar, metotlar ve öznitelikler. ASM bu yapıyı ayrıştırır.

Bu projede ASM yerine düz Java ile bir visitor deseni modelleyeceğiz. ClassReader sınıfı, sanki bir sınıf dosyasını okuyormuş gibi metot adlarını gezerek visitor'ı çağırır. Bu, ASM'nin çalışma mantığını anlamak için yeterli.

Uygulama ClassVisitor arabirimini tanımla

ClassVisitor arabirimini tanımla; void visitClass(String name); metodu olsun. Main sınıfının main metodunda System.out.println("inspector ready"); yazdır.

Başlangıç kodu

Main.java
// ClassVisitor arabirimini tanımla (visitClass metodu)

// Main sınıfını tanımla ve main içinde inspector ready yazdır

Örnek çözüm

Main.java
interface ClassVisitor {
    void visitClass(String name);
}

public class Main {
    public static void main(String[] args) {
        System.out.println("inspector ready");
    }
}

Beklenen çıktı

inspector ready

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bu proje ne yapar?

  • Veri tabanı yönetir
  • Sınıf yapısını inceler Doğru cevap
  • Web sunucusu kurar
  • Grafik penceresi çizer

Açıklama: Proje sınıf yapısını visitor deseniyle gezer.

2 visitor metodunu tamamla

Soru
void ____(String name);
Cevap
void visitClass(String name);

Açıklama: visitClass sınıf adını ziyaret eden metottur.

3 sınıf dosyası bölümlerini eşleştir

Kavram Anlamı
0xCAFEBABE Sihirli sayı
constant pool Sabit havuz
access flags Erişim bayrakları
methods Metot tablosu

Uzman bölümündeki tüm dersler