How ClassLoader Works in Java?
Principle: Delegation, visibility and uniqueness
Delegation
principle forward request of class loading to parent class loader and only
loads the class, if parent is not able to find or load class. Visibility
principle allows child class loader to see all the classes loaded by parent
ClassLoader, but parent class loader can not see classes loaded by child.
Uniqueness principle allows to load a class exactly once, which is basically
achieved by delegation and ensures that child ClassLoader doesn't reload the
class already loaded by parent.
There
are three default class loader used in
Java, Bootstrap , Extension and System or Application
class loader. Every class loader has a predefined location, from where they
loads class files. Bootstrap ClassLoader is responsible for loading standard
JDK class files from rt.jar
In
short here is the location from which Bootstrap, Extension and Application
ClassLoader load Class files.
1)
Bootstrap ClassLoader - JRE/lib/rt.jar
2)
Extension ClassLoader - JRE/lib/ext or any directory denoted by java.ext.dirs
3)
Application ClassLoader - CLASSPATH environment variable, -classpath or -cp
option, Class-Path attribute of Manifest inside JAR file.
No comments:
Post a Comment