CodeBlanks Logo Icon CodeBlanks

Sınıf yükleyici

Bootstrap, Platform ve Application sınıf yükleyicilerini öğrenirsin.

Sınıf yükleyici

Sınıf yükleyici (class loader), bir sınıfın bayt kodunu dosyadan bulup belleğe yükler. JVM üç katmanlı bir yükleme modeli kullanır: Bootstrap, Platform ve Application yükleyiciler.

Bootstrap yükleyici çekirdek Java sınıflarını (örneğin java.lang.String) yükler ve C++ ile yazılmıştır; getClassLoader() çağrısı null döndürür. Platform yükleyici Java standart kütüphanelerini, Application yükleyici ise kullanıcı sınıflarını yükler.

Bu katmanlı yapı güvenlik ve modüllük sağlar; her yükleyici kendi sorumluluk alanına bakar.

getParent zinciri

Her sınıf yükleyicinin bir ebeveyn yükleyicisi vardır. getParent() çağrısı üst yükleyiciyi döndürür. Application'in ebeveyni Platform, Platform'un ebeveyni Bootstrap'tir.

ClassLoader app = Main.class.getClassLoader();
ClassLoader plat = app.getParent();
System.out.println(plat);

Bu zincir, bir sınıfın önce ebeveyn yükleyicide aranmasini sağlar (parent-delegation modeli). Böylece çekirdek sınıflar her zaman güvenilir kaynaktan yüklenir.

Uygulama String yükleyicisini yazdır

Bir Main sınıfı tanımla. main yönteminde String.class.getClassLoader() sonucunu bir ClassLoader değişkenine ata. Bu değeri System.out.println ile yazdır. (Bootstrap sınıflar için null döner.)

Başlangıç kodu

Main.java
public class Main {
    public static void main(String[] args) {
        // String sınıfının yukleyicisini yazdır
    }
}

Örnek çözüm

Main.java
public class Main {
    public static void main(String[] args) {
        ClassLoader loader = String.class.getClassLoader();
        System.out.println(loader);
    }
}

Beklenen çıktı

null

Soru ve cevaplar

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

1 Bootstrap yükleyici çağrısını tamamla

Soru
ClassLoader loader = String.class.____();
System.out.println(loader);
Cevap
ClassLoader loader = String.class.getClassLoader();
System.out.println(loader);

Açıklama: getClassLoader() sınıfı yükleyen yükleyiciyi döndürür.

2 String.class.getClassLoader() ne döndürür?

  • Application yükleyici
  • Platform yükleyici
  • null (Bootstrap yükleyici) Doğru cevap
  • Bir hata fırlatır

Açıklama: Çekirdek sınıflar Bootstrap tarafından yuklendiginden null döner.

3 Yükleyici katmanlarını eşleştir

Kavram Anlamı
Bootstrap Çekirdek Java sınıfları
Platform Java standart kütüphane
Application Kullanıcı sınıfları
getParent() Üst yükleyici

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