Let's talk about java class loader
-
Upload
yongqiang-li -
Category
Software
-
view
981 -
download
0
Transcript of Let's talk about java class loader
![Page 1: Let's talk about java class loader](https://reader036.fdocuments.in/reader036/viewer/2022062503/587892e11a28ab375f8b6087/html5/thumbnails/1.jpg)
Let’s talk about Java ClassLoaderYongqiang
![Page 2: Let's talk about java class loader](https://reader036.fdocuments.in/reader036/viewer/2022062503/587892e11a28ab375f8b6087/html5/thumbnails/2.jpg)
Previously… (about 3 years ago) Let’s talk about JNI Let’s talk about Java Class File
![Page 3: Let's talk about java class loader](https://reader036.fdocuments.in/reader036/viewer/2022062503/587892e11a28ab375f8b6087/html5/thumbnails/3.jpg)
![Page 4: Let's talk about java class loader](https://reader036.fdocuments.in/reader036/viewer/2022062503/587892e11a28ab375f8b6087/html5/thumbnails/4.jpg)
What’s ClassLoader? A class loader is an object that is
responsible for loading classes. Without classloader, no class can be
loaded and run in JVM. Classes are loaded into JVM and by
demand (lazy initialization) Each ClassLoader has a parent, except
the bootstrap one.
![Page 5: Let's talk about java class loader](https://reader036.fdocuments.in/reader036/viewer/2022062503/587892e11a28ab375f8b6087/html5/thumbnails/5.jpg)
Parent-Child Structure of ClassLoader
•Load Java Core libraries (jre/lib/rt.jar)• Implemented by C++•not derived from java.lang.ClassLoader•No parent
Bootstrap Class Loader
•Load Java Extension (jre/ext/*.jar)Extensions
Class Loader
•Load libraries defined in CLASSPATHSystem Class Loader
•Custom class loader derived from java.lang.ClassLoaderCustom Class Loader
![Page 6: Let's talk about java class loader](https://reader036.fdocuments.in/reader036/viewer/2022062503/587892e11a28ab375f8b6087/html5/thumbnails/6.jpg)
Bootstrap class loader
Extensions class loader
System class loader
Custom class loader1
Custom class loader2
Default Loaders
Custom class loader3
![Page 7: Let's talk about java class loader](https://reader036.fdocuments.in/reader036/viewer/2022062503/587892e11a28ab375f8b6087/html5/thumbnails/7.jpg)
![Page 8: Let's talk about java class loader](https://reader036.fdocuments.in/reader036/viewer/2022062503/587892e11a28ab375f8b6087/html5/thumbnails/8.jpg)
APIs on ClassLoader• Get parent class loader.getParent()
• Load the class by given name, return a class instance.loadClass(String name)
• Find the class by given name, return a class instance findClass(String name)
• Find the loaded class by given namefindLoadedClass(String name)
• Generate class instance from its binary representation• Final function
defineClass(Strign, byte[] b, int off, int len)
• Link given classresolveClass(Class<?> c)
![Page 9: Let's talk about java class loader](https://reader036.fdocuments.in/reader036/viewer/2022062503/587892e11a28ab375f8b6087/html5/thumbnails/9.jpg)
Function of loadClass()
![Page 10: Let's talk about java class loader](https://reader036.fdocuments.in/reader036/viewer/2022062503/587892e11a28ab375f8b6087/html5/thumbnails/10.jpg)
Function of findClass (in URLClassLoader)
![Page 11: Let's talk about java class loader](https://reader036.fdocuments.in/reader036/viewer/2022062503/587892e11a28ab375f8b6087/html5/thumbnails/11.jpg)
URLClassLoader Sample
org.yli.test.jar
![Page 12: Let's talk about java class loader](https://reader036.fdocuments.in/reader036/viewer/2022062503/587892e11a28ab375f8b6087/html5/thumbnails/12.jpg)
![Page 13: Let's talk about java class loader](https://reader036.fdocuments.in/reader036/viewer/2022062503/587892e11a28ab375f8b6087/html5/thumbnails/13.jpg)
Q: If urlClassLoader3 loads class A first, will the output be changed?
![Page 14: Let's talk about java class loader](https://reader036.fdocuments.in/reader036/viewer/2022062503/587892e11a28ab375f8b6087/html5/thumbnails/14.jpg)
More… “Jar Hell”
Package A Package B
org.yli.test0.1
org.yli.test0.2
Package C Q: Any Solution?
![Page 15: Let's talk about java class loader](https://reader036.fdocuments.in/reader036/viewer/2022062503/587892e11a28ab375f8b6087/html5/thumbnails/15.jpg)
OSGi ClassLoader
To be continued…
![Page 16: Let's talk about java class loader](https://reader036.fdocuments.in/reader036/viewer/2022062503/587892e11a28ab375f8b6087/html5/thumbnails/16.jpg)
References Java ClassLoader on Wiki Execution on Java SE specification