let's talk about java class loader
Post on 13-Jan-2017
981 Views
Preview:
TRANSCRIPT
Let’s talk about Java ClassLoaderYongqiang
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 CLASSPATHSystem Class Loader
•Custom class loader derived from java.lang.ClassLoaderCustom 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 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)
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.test0.1
org.yli.test0.2
Package C Q: Any Solution?
OSGi ClassLoader
To be continued…
References Java ClassLoader on Wiki Execution on Java SE specification
top related