Middle
Java'da ClassLoader nima?
sobes.tech AI
AIdan javob
Java'da ClassLoader JVMning (Java Virtual Machine) javobgar bo'lib, sinflarni JVM ga yuklash uchun javobgardir.
Asosiy funksiyalar:
- Yuklash: Turli manbalardan (
.classbayt kod fayllari) sinflarni topib, yuklaydi (fayl tizimi, tarmoq, JAR arxivlari). - Linking (Bog'lash):
- Tekshirish: Bayt kodining to'g'riligi va xavfsizlik standartlariga mosligini tekshiradi.
- Tayyorlash: Statik o'zgaruvchilar uchun xotira ajratadi va ularning standart qiymatlarini boshlang'ich holatga keltiradi.
- Yechish (ixtiyoriy): Sembolik havolalarni (masalan, boshqa sinflar yoki metodlarga havolalar) to'g'ridan-to'g'ri xotira havolalariga almashtiradi.
- Initsializatsiya: Sinfning statik bloklarini bajaradi va statik maydonlarga boshlang'ich qiymatlarni belgilaydi.
Hierarxiya:
ClassLoaderlar hierarxiyani tashkil qiladi. Agar ClassLoader sinfni yuklashga muhtoj bo'lsa, u avvalo o'z ota-klasslovchiga so'rov yuboradi. Agar ota-klasslovchi sinfni topa olmasa yoki yuklay olmasa, hozirgi ClassLoader o'zi harakat qiladi.
Asosiy integratsiya qilingan ClassLoaderlar:
- Bootstrap ClassLoader: JVM ning nativ qismi bo'lib, asosiy JDK sinflarini yuklaydi (masalan,
java.lang.Object). - Extension ClassLoader (zamonaviy JVM versiyalarida uni System ClassLoader bilan birlashtirish mumkin):
extkatalogidan sinflarni yuklaydi. - System ClassLoader: Ilovaning classpathidan sinflarni yuklaydi.
Foydalanish misoli:
// Hozirgi sinfning ClassLoaderini olish
ClassLoader classLoader = MyClass.class.getClassLoader();
try {
// To'liq nom bilan sinfni yuklash
Class<?> loadedClass = classLoader.loadClass("com.example.AnotherClass");
System.out.println("Yuklangan sinf: " + loadedClass.getName());
} catch (ClassNotFoundException e) {
System.err.println("Sinif topilmadi: " + e.getMessage());
}
Afzalliklari:
- Dinamik yuklash: Sinflarni talab qilinadigan vaqtda yuklash imkonini beradi, bu resurslarni tejashga yordam beradi.
- Modullilik: Ilovaning turli qismlari turli ClassLoaderlardan foydalanishi mumkin, bu kodni izolyatsiya qilishga yordam beradi.
- Xavfsizlik: Bayt kodining tekshiruvi asosiy xavfsizlikni ta'minlaydi.
- HotSwapping: Ba'zi muhitlarda ClassLoaderlar yuklangan sinflarni JVMni qayta ishga tushirmasdan almashtirish imkonini beradi.