Sınıf yükleyici
- Java kursu
- Uzman
- Ders 2/46
- 5 dk
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
public class Main {
public static void main(String[] args) {
// String sınıfının yukleyicisini yazdır
}
}Örnek çözüm
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
ClassLoader loader = String.class.____();
System.out.println(loader);
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 |