KEMBAR78
Let's talk about java class loader | PPTX
Let’s talk about
Java
ClassLoader
Yongqiang
Previously… (about 3 years ago)
 Let’s talk about JNI
 Let’s talk about Java Class File
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.
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 CLASSPATH
System Class
Loader
•Custom class loader derived from java.lang.ClassLoader
Custom Class
Loader
Bootstrap class
loader
Extensions class
loader
System class
loader
Custom class
loader1
Custom class
loader2
Default
Loaders
Custom class
loader3
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 instancefindClass(String name)
• Find the loaded class by given name
findLoadedClass(String
name)
• Generate class instance from its binary representation
• Final function
defineClass(Strign, byte[]
b, int off, int len)
• Link given classresolveClass(Class<?> c)
Function of loadClass()
Function of findClass (in
URLClassLoader)
URLClassLoader Sample
org.yli.test.jar
Q: If urlClassLoader3 loads class A
first, will the output be changed?
More…
 “Jar Hell”
Package A Package B
org.yli.test
0.1
org.yli.test
0.2
Package C Q: Any Solution?
 OSGi ClassLoader
References
 Java ClassLoader on Wiki
 Execution on Java SE specification

Let's talk about java class loader