SlideShare a Scribd company logo
@KonaTechAdda - 6
What is Class Loader
ন িঃস্বার্থ ক্লাশ-ল াডার
Md Imran Hasan Hira
Software Engineer
Kona Software Lab Ltd.
http://bd.linkedin.com/in/imranhasanhira
https://www.linkedin.com/company/kona-software-lab-ltd-
Part 1 – Brunch
Part 2 – Buffet Dinner
Java Class Bytecodes JVM
ClassLoading Example Loading Phases
Delegation Model Class Loading exceptions
References
Title Reference
Demystifying class loading problems, Part 1: An
introduction to class loading and debugging tools
http://www.ibm.com/developerworks/library/j-dclp1/
The basics of Java class loaders http://www.javaworld.com/article/2077260/learn-java/learn-
java-the-basics-of-java-class-loaders.html?null
Java Classloaders Tutorial http://zeroturnaround.com/rebellabs/rebel-labs-tutorial-do-
you-really-get-classloaders/
Core Java Security: Class Loaders, Security
Managers, and Encryption
http://www.informit.com/articles/article.aspx?p=1187967
Java Class Loader - Java Tutorial http://javapapers.com/core-java/java-class-loader/
Inside Class Loaders - O'Reilly Media http://www.onjava.com/pub/a/onjava/2003/11/12/classloader.
html
Discovering Class Members (The Java™ Tutorials >
The Reflection API > Classes)
https://docs.oracle.com/javase/tutorial/reflect/class/classMem
bers.html
Index
• What is Java ? How it runs on PC ?
• Different Java Virtual Machines
• A close look at the bytecodes
• Introduction to class loader
• Building the information from bytecode
• Maintaining the class loading chain
Part-1
What is Java
- ন িঃস্বার্থ জাভা
What is Java
Java iLand
http://vimeo.com/46871479
What we know java is
Java
Java
Technology
Java
Programming
Language
Object
Oriented
Write once, Run
Everywhere
GreenTalk > Oak > Java
A detail history can be found in http://oracle.com.edgesuite.net/timeline/java/
GreenTalk
• James Gosling initiated a project as Green Team
• Firstly it was called GreenTalk and file extension
was .gt
Oak
• After that it was called Oak and developed as part
of the Green Project
• Oak is a symbol for strength
Java
• Oak renamed to Java for trademark issue with Oak
Technologies
• Java was chosen amongst Silk, Jolt, DNA etc.
How java works
Main.java
Main.cpp Operating
System
.class
Operating
System
Java Virtual
Machine
(JVM)
C/C++ source file
Native executable
.exe
OS executes the
machine code
Java source file Java intermediate
bytecodes
JVM interprets* the
bytecodes
Let’s write some java
Welcome.java
Compile it
javac Welcome.java
Welcome.java
Compile command
Compile output Welcome.class
The Bytecodes (simplified view)
Run it
Welcome.java
java WelcomeRun command
What does JVM do?
bytecodes
Amazing
Things
Code Interpretation
Native Instruction mapping Type Conversion
Memory Management
Garbage Collection
Disk/Network access
Security Management
There is a specification about What JVM
should do
http://docs.oracle.com/javase/specs/
Virtual Machines
• Hotspot JVM (OpenJDK)
• Hotspot JVM (Oracle JDK)
• J9 by IBM
• Apache Harmony
• Kaffe OpenVM
• NanoVM
…
An Important part is to load the classes into
memory
Part-2
Class Loader
Takes classname
(i.e. com.konasl.test.Welcome)
Find the bytecode data
associated with this classname
Use defineClass() to decode
raw bytecode into Class
Return the Class
Simple Class Loading Procedure
Takes classname
(i.e. com.konasl.test.Welcome)
Find the bytecode data
associated with this classname
Use defineClass() to decode
raw bytecode into Class
Return the Class
Find in self cache for this class
Put the Class in self cache
Simple Class Loading Procedure (cont.)
Takes classname
(i.e. com.konasl.test.Welcome)
Find the bytecode data
associated with this classname
Use defineClass() to decode
raw bytecode into Class
Use resolveClass() to resolve
the other referenced classes
Return the Class
Find in super classloaders for
this class
Find in self cache for this class
Put the Class in self cache
Simple Class Loading Procedure (cont.)
Class Loader chain
• Bootstrap Class Loader
• <JAVA_HOME>/jre/lib
• Part of the core JVM, written in native code
• Extension Class Loader
• <JAVA_HOME>/jre/lib/ext
• java.ext.dirs.
• Implemented by sun.misc.Launcher$ExtClassLoader
• System Class Loader
• <CLASSPATH>
• java.class.path
• Implemented by the sun.misc.Launcher$AppClassLoader
Class Loader Delegation Model
Bootstrap
Class Loader
Extension
Class Loader
System Class
Loader
User Defined
Class Loader
User Defined
Class Loader
User Defined
Class Loader
Class Loader Delegation Model
Bootstrap
Class Loader
Extension
Class Loader
System Class
Loader
User Defined
Class Loader
User Defined
Class Loader
User Defined
Class Loader
$JAVAHOME/jre/lib/rt.jar
Known as
Primordial
Class Loader
Class Loader Delegation Model
Bootstrap
Class Loader
Extension
Class Loader
System Class
Loader
User Defined
Class Loader
User Defined
Class Loader
User Defined
Class Loader
$JAVAHOME/jre/lib/rt.jar
$JAVAHOME/jre/lib/ext/*.jar
$CLASSPATH
defineClass()
resolveClass()
findInParentClass()
findLoadedClass()
Put the Class in self cache
Simple class loading procedure
loadClass()
findClass()
Diving into Java Class Loader
Insight of defineClass() magic
grepcode.com, openJDK 6, ClassLoader.java
Phases of Class Loading
Loading
Verifying
Preparing
Resolving
Initializing
Linking
Phases of Class Loading
Loading
Verifying
Preparing
Resolving
Initializing
Linking
1. Bringing Binary
data from a class into
JVM
Phases of Class Loading
Loading
Verifying
Preparing
Resolving
Initializing
Linking
1. Bringing Binary
data from a class into
JVM
2. Incorporating the binary data
into the runtime state of the JVM
Phases of Class Loading
Loading
Verifying
Preparing
Resolving
Initializing
Linking
1. Bringing Binary
data from a class into
JVM
2. Incorporating the binary data
into the runtime state of the JVM
2.1 Ensure class is properly
formed and fit for use by the
JVM
Phases of Class Loading
Loading
Verifying
Preparing
Resolving
Initializing
Linking
1. Bringing Binary
data from a class into
JVM
2. Incorporating the binary data
into the runtime state of the JVM
2.1 Ensure class is properly
formed and fit for use by the
JVM
2.2 Allocating memory
needed by the Class
Phases of Class Loading
Loading
Verifying
Preparing
Resolving
Initializing
Linking
1. Bringing Binary
data from a class into
JVM
2. Incorporating the binary data
into the runtime state of the JVM
2.1 Ensure class is properly
formed and fit for use by the
JVM
2.2 Allocating memory
needed by the Class 3. Class variables are given
their proper initial values
Phases of Class Loading
Loading
Verifying
Preparing
Resolving
Initializing
Linking
1. Bringing Binary
data from a class into
JVM
2. Incorporating the binary data
into the runtime state of the JVM
2.1 Ensure class is properly
formed and fit for use by the
JVM
2.2 Allocating memory
needed by the Class
2.3 Transforming symbolic
references in the constant
pool, into direct references
3. Class variables are given
their proper initial values
Explicit Loading vs Implicit Loading
ClassLoader.loadClass()
Class.forName()
Class A
Class B Class C
Reference
Inheritance
Instantiation
Explicit Loading
Implicit Loading
…
…
ClassNotFoundException
NoClassDefFoundException
ClassFormatError
ClassCastException
ClassCircularityError
The Exceptions
ClassNotFoundException
• These calls below and the class is not found
• Class.forName()
• ClassLoader.findSystemClass()
• ClassLoader.loadClass()
• N.B. Unsuccessful Explicit attempt to load class
NoClassDefFoundException
• JVM or CL instance tries to load class and the class is not found while
• in regular method call
• creating a new instance using the ‘new’
• N.B. Unsuccessful Implicit class load
ClassCastException
• Casting an object to a subclass of which it is not an instance.
• i.e. Integer val = (Integer) new String(“1234”);
• or
UnsatisfiedLinkError
•Java Virtual Machine cannot find an appropriate
native language definition of a method declared
native. i.e.
ClassCircularityError
•Java Virtual Machine cannot find an appropriate
native language definition of a method declared
native. i.e.
Class A
Class B extends A
Class B
Class A extends B
A.class B.class A.class B.class
B.class A.classTry to load this two classes
IncompatibleClassChangeError
ClassFormatError
LinkageError
IllegalAccessError
More…
Power of Class Loader
•Dynamically loading desired classes
•Loading different versions of the classes
•Generating new class definitions on the fly
•Verify custom code signature before executing
code
•Use encrypted* bytecodes in program
Most of the programs don’t need to mess with Class Loader.
Quick Question Answer
&
Open Discussion
Thank You 

More Related Content

What's hot (20)

PPTX
Introduction to Spring Framework
Serhat Can
 
PPTX
Introduction to Spring Boot
Purbarun Chakrabarti
 
PPTX
Spring boot - an introduction
Jonathan Holloway
 
ODP
Xke spring boot
sourabh aggarwal
 
DOCX
Java collections notes
Surendar Meesala
 
PDF
Introduction to Spring Boot!
Jakub Kubrynski
 
PPTX
Spring Boot Tutorial
Naphachara Rattanawilai
 
PPTX
Hibernate in Action
Akshay Ballarpure
 
PDF
Java Servlets Tutorial | Introduction to Servlets | Java Certification Traini...
Edureka!
 
PPTX
Java 8 presentation
Van Huong
 
PDF
PUC SE Day 2019 - SpringBoot
Josué Neis
 
PPTX
Build RESTful API Using Express JS
Cakra Danu Sedayu
 
PPT
Java Programming for Designers
R. Sosa
 
PPTX
Presentation on java (8)
Shwetakant1
 
PPTX
Discover Quarkus and GraalVM
Romain Schlick
 
PDF
Java 8 features
NexThoughts Technologies
 
PPTX
Maven ppt
natashasweety7
 
PPTX
Introduction to MERN
ShyamMohanKunwar
 
PDF
Spring Boot
Pei-Tang Huang
 
PDF
Spring Data JPA
Knoldus Inc.
 
Introduction to Spring Framework
Serhat Can
 
Introduction to Spring Boot
Purbarun Chakrabarti
 
Spring boot - an introduction
Jonathan Holloway
 
Xke spring boot
sourabh aggarwal
 
Java collections notes
Surendar Meesala
 
Introduction to Spring Boot!
Jakub Kubrynski
 
Spring Boot Tutorial
Naphachara Rattanawilai
 
Hibernate in Action
Akshay Ballarpure
 
Java Servlets Tutorial | Introduction to Servlets | Java Certification Traini...
Edureka!
 
Java 8 presentation
Van Huong
 
PUC SE Day 2019 - SpringBoot
Josué Neis
 
Build RESTful API Using Express JS
Cakra Danu Sedayu
 
Java Programming for Designers
R. Sosa
 
Presentation on java (8)
Shwetakant1
 
Discover Quarkus and GraalVM
Romain Schlick
 
Java 8 features
NexThoughts Technologies
 
Maven ppt
natashasweety7
 
Introduction to MERN
ShyamMohanKunwar
 
Spring Boot
Pei-Tang Huang
 
Spring Data JPA
Knoldus Inc.
 

Similar to Diving into Java Class Loader (20)

DOC
Java Class Loading
Sandeep Verma
 
PDF
Java class loading tips and tricks - Java Colombo Meetup, January, 2014
Sameera Jayasoma
 
PDF
Java Interview Questions Answers Guide
DaisyWatson5
 
PPTX
How to run java program without IDE
Shweta Oza
 
PPT
Class loader basic
명철 강
 
KEY
5 the final_hard_part
Honnix Liang
 
PDF
Lecture 3
Debasish Pratihari
 
PDF
JAVA Object Oriented Programming (OOP)
Prof. Erwin Globio
 
PPT
Class
myrajendra
 
PPT
Class
myrajendra
 
PPT
Class
myrajendra
 
PPTX
Java class loader
benewu
 
PPT
testing ppt
techweb08
 
PDF
Advance java kvr -satya
Satya Johnny
 
PDF
Adv kvr -satya
Jyothsna Sree
 
PDF
Java bcs 21_vision academy_final
VisionAcademyClasses
 
PDF
java_bba_21_vision academy_final.pdf
akankshasorate1
 
PPTX
Do you really get class loaders?
guestd56374
 
PPT
A begineers guide of JAVA - Getting Started
Rakesh Madugula
 
Java Class Loading
Sandeep Verma
 
Java class loading tips and tricks - Java Colombo Meetup, January, 2014
Sameera Jayasoma
 
Java Interview Questions Answers Guide
DaisyWatson5
 
How to run java program without IDE
Shweta Oza
 
Class loader basic
명철 강
 
5 the final_hard_part
Honnix Liang
 
JAVA Object Oriented Programming (OOP)
Prof. Erwin Globio
 
Class
myrajendra
 
Class
myrajendra
 
Class
myrajendra
 
Java class loader
benewu
 
testing ppt
techweb08
 
Advance java kvr -satya
Satya Johnny
 
Adv kvr -satya
Jyothsna Sree
 
Java bcs 21_vision academy_final
VisionAcademyClasses
 
java_bba_21_vision academy_final.pdf
akankshasorate1
 
Do you really get class loaders?
guestd56374
 
A begineers guide of JAVA - Getting Started
Rakesh Madugula
 
Ad

More from Md Imran Hasan Hira (6)

PPTX
System design basics - Part 2
Md Imran Hasan Hira
 
PPTX
System design basics - Part 1
Md Imran Hasan Hira
 
PPTX
Pursuit of success
Md Imran Hasan Hira
 
PPTX
Linkedin Guide
Md Imran Hasan Hira
 
PPTX
Java Reflection @KonaTechAdda
Md Imran Hasan Hira
 
PPTX
UX Design - Think about it !
Md Imran Hasan Hira
 
System design basics - Part 2
Md Imran Hasan Hira
 
System design basics - Part 1
Md Imran Hasan Hira
 
Pursuit of success
Md Imran Hasan Hira
 
Linkedin Guide
Md Imran Hasan Hira
 
Java Reflection @KonaTechAdda
Md Imran Hasan Hira
 
UX Design - Think about it !
Md Imran Hasan Hira
 
Ad

Recently uploaded (20)

PDF
Streamline Contractor Lifecycle- TECH EHS Solution
TECH EHS Solution
 
PPTX
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 
PDF
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
 
PPTX
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
 
PPTX
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
PDF
Salesforce CRM Services.VALiNTRY360
VALiNTRY360
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PPTX
A Complete Guide to Salesforce SMS Integrations Build Scalable Messaging With...
360 SMS APP
 
PDF
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
PPTX
Human Resources Information System (HRIS)
Amity University, Patna
 
PDF
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Imma Valls Bernaus
 
PPTX
Tally software_Introduction_Presentation
AditiBansal54083
 
PDF
Alexander Marshalov - How to use AI Assistants with your Monitoring system Q2...
VictoriaMetrics
 
PDF
Mobile CMMS Solutions Empowering the Frontline Workforce
CryotosCMMSSoftware
 
PPTX
Feb 2021 Cohesity first pitch presentation.pptx
enginsayin1
 
PDF
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
PDF
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
PPTX
Platform for Enterprise Solution - Java EE5
abhishekoza1981
 
PPTX
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
PDF
Executive Business Intelligence Dashboards
vandeslie24
 
Streamline Contractor Lifecycle- TECH EHS Solution
TECH EHS Solution
 
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
 
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
 
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
Salesforce CRM Services.VALiNTRY360
VALiNTRY360
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
A Complete Guide to Salesforce SMS Integrations Build Scalable Messaging With...
360 SMS APP
 
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
Human Resources Information System (HRIS)
Amity University, Patna
 
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Imma Valls Bernaus
 
Tally software_Introduction_Presentation
AditiBansal54083
 
Alexander Marshalov - How to use AI Assistants with your Monitoring system Q2...
VictoriaMetrics
 
Mobile CMMS Solutions Empowering the Frontline Workforce
CryotosCMMSSoftware
 
Feb 2021 Cohesity first pitch presentation.pptx
enginsayin1
 
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
Platform for Enterprise Solution - Java EE5
abhishekoza1981
 
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
Executive Business Intelligence Dashboards
vandeslie24
 

Diving into Java Class Loader

  • 1. @KonaTechAdda - 6 What is Class Loader ন িঃস্বার্থ ক্লাশ-ল াডার Md Imran Hasan Hira Software Engineer Kona Software Lab Ltd. http://bd.linkedin.com/in/imranhasanhira https://www.linkedin.com/company/kona-software-lab-ltd-
  • 2. Part 1 – Brunch Part 2 – Buffet Dinner Java Class Bytecodes JVM ClassLoading Example Loading Phases Delegation Model Class Loading exceptions
  • 3. References Title Reference Demystifying class loading problems, Part 1: An introduction to class loading and debugging tools http://www.ibm.com/developerworks/library/j-dclp1/ The basics of Java class loaders http://www.javaworld.com/article/2077260/learn-java/learn- java-the-basics-of-java-class-loaders.html?null Java Classloaders Tutorial http://zeroturnaround.com/rebellabs/rebel-labs-tutorial-do- you-really-get-classloaders/ Core Java Security: Class Loaders, Security Managers, and Encryption http://www.informit.com/articles/article.aspx?p=1187967 Java Class Loader - Java Tutorial http://javapapers.com/core-java/java-class-loader/ Inside Class Loaders - O'Reilly Media http://www.onjava.com/pub/a/onjava/2003/11/12/classloader. html Discovering Class Members (The Java™ Tutorials > The Reflection API > Classes) https://docs.oracle.com/javase/tutorial/reflect/class/classMem bers.html
  • 4. Index • What is Java ? How it runs on PC ? • Different Java Virtual Machines • A close look at the bytecodes • Introduction to class loader • Building the information from bytecode • Maintaining the class loading chain
  • 5. Part-1 What is Java - ন িঃস্বার্থ জাভা
  • 8. What we know java is Java Java Technology Java Programming Language Object Oriented Write once, Run Everywhere
  • 9. GreenTalk > Oak > Java A detail history can be found in http://oracle.com.edgesuite.net/timeline/java/ GreenTalk • James Gosling initiated a project as Green Team • Firstly it was called GreenTalk and file extension was .gt Oak • After that it was called Oak and developed as part of the Green Project • Oak is a symbol for strength Java • Oak renamed to Java for trademark issue with Oak Technologies • Java was chosen amongst Silk, Jolt, DNA etc.
  • 10. How java works Main.java Main.cpp Operating System .class Operating System Java Virtual Machine (JVM) C/C++ source file Native executable .exe OS executes the machine code Java source file Java intermediate bytecodes JVM interprets* the bytecodes
  • 11. Let’s write some java Welcome.java
  • 12. Compile it javac Welcome.java Welcome.java Compile command Compile output Welcome.class
  • 15. What does JVM do? bytecodes Amazing Things Code Interpretation Native Instruction mapping Type Conversion Memory Management Garbage Collection Disk/Network access Security Management
  • 16. There is a specification about What JVM should do http://docs.oracle.com/javase/specs/
  • 17. Virtual Machines • Hotspot JVM (OpenJDK) • Hotspot JVM (Oracle JDK) • J9 by IBM • Apache Harmony • Kaffe OpenVM • NanoVM …
  • 18. An Important part is to load the classes into memory
  • 20. Takes classname (i.e. com.konasl.test.Welcome) Find the bytecode data associated with this classname Use defineClass() to decode raw bytecode into Class Return the Class Simple Class Loading Procedure
  • 21. Takes classname (i.e. com.konasl.test.Welcome) Find the bytecode data associated with this classname Use defineClass() to decode raw bytecode into Class Return the Class Find in self cache for this class Put the Class in self cache Simple Class Loading Procedure (cont.)
  • 22. Takes classname (i.e. com.konasl.test.Welcome) Find the bytecode data associated with this classname Use defineClass() to decode raw bytecode into Class Use resolveClass() to resolve the other referenced classes Return the Class Find in super classloaders for this class Find in self cache for this class Put the Class in self cache Simple Class Loading Procedure (cont.)
  • 23. Class Loader chain • Bootstrap Class Loader • <JAVA_HOME>/jre/lib • Part of the core JVM, written in native code • Extension Class Loader • <JAVA_HOME>/jre/lib/ext • java.ext.dirs. • Implemented by sun.misc.Launcher$ExtClassLoader • System Class Loader • <CLASSPATH> • java.class.path • Implemented by the sun.misc.Launcher$AppClassLoader
  • 24. Class Loader Delegation Model Bootstrap Class Loader Extension Class Loader System Class Loader User Defined Class Loader User Defined Class Loader User Defined Class Loader
  • 25. Class Loader Delegation Model Bootstrap Class Loader Extension Class Loader System Class Loader User Defined Class Loader User Defined Class Loader User Defined Class Loader $JAVAHOME/jre/lib/rt.jar Known as Primordial Class Loader
  • 26. Class Loader Delegation Model Bootstrap Class Loader Extension Class Loader System Class Loader User Defined Class Loader User Defined Class Loader User Defined Class Loader $JAVAHOME/jre/lib/rt.jar $JAVAHOME/jre/lib/ext/*.jar $CLASSPATH
  • 27. defineClass() resolveClass() findInParentClass() findLoadedClass() Put the Class in self cache Simple class loading procedure loadClass() findClass()
  • 29. Insight of defineClass() magic grepcode.com, openJDK 6, ClassLoader.java
  • 30. Phases of Class Loading Loading Verifying Preparing Resolving Initializing Linking
  • 31. Phases of Class Loading Loading Verifying Preparing Resolving Initializing Linking 1. Bringing Binary data from a class into JVM
  • 32. Phases of Class Loading Loading Verifying Preparing Resolving Initializing Linking 1. Bringing Binary data from a class into JVM 2. Incorporating the binary data into the runtime state of the JVM
  • 33. Phases of Class Loading Loading Verifying Preparing Resolving Initializing Linking 1. Bringing Binary data from a class into JVM 2. Incorporating the binary data into the runtime state of the JVM 2.1 Ensure class is properly formed and fit for use by the JVM
  • 34. Phases of Class Loading Loading Verifying Preparing Resolving Initializing Linking 1. Bringing Binary data from a class into JVM 2. Incorporating the binary data into the runtime state of the JVM 2.1 Ensure class is properly formed and fit for use by the JVM 2.2 Allocating memory needed by the Class
  • 35. Phases of Class Loading Loading Verifying Preparing Resolving Initializing Linking 1. Bringing Binary data from a class into JVM 2. Incorporating the binary data into the runtime state of the JVM 2.1 Ensure class is properly formed and fit for use by the JVM 2.2 Allocating memory needed by the Class 3. Class variables are given their proper initial values
  • 36. Phases of Class Loading Loading Verifying Preparing Resolving Initializing Linking 1. Bringing Binary data from a class into JVM 2. Incorporating the binary data into the runtime state of the JVM 2.1 Ensure class is properly formed and fit for use by the JVM 2.2 Allocating memory needed by the Class 2.3 Transforming symbolic references in the constant pool, into direct references 3. Class variables are given their proper initial values
  • 37. Explicit Loading vs Implicit Loading ClassLoader.loadClass() Class.forName() Class A Class B Class C Reference Inheritance Instantiation Explicit Loading Implicit Loading … …
  • 39. ClassNotFoundException • These calls below and the class is not found • Class.forName() • ClassLoader.findSystemClass() • ClassLoader.loadClass() • N.B. Unsuccessful Explicit attempt to load class
  • 40. NoClassDefFoundException • JVM or CL instance tries to load class and the class is not found while • in regular method call • creating a new instance using the ‘new’ • N.B. Unsuccessful Implicit class load
  • 41. ClassCastException • Casting an object to a subclass of which it is not an instance. • i.e. Integer val = (Integer) new String(“1234”); • or
  • 42. UnsatisfiedLinkError •Java Virtual Machine cannot find an appropriate native language definition of a method declared native. i.e.
  • 43. ClassCircularityError •Java Virtual Machine cannot find an appropriate native language definition of a method declared native. i.e. Class A Class B extends A Class B Class A extends B A.class B.class A.class B.class B.class A.classTry to load this two classes
  • 45. Power of Class Loader •Dynamically loading desired classes •Loading different versions of the classes •Generating new class definitions on the fly •Verify custom code signature before executing code •Use encrypted* bytecodes in program Most of the programs don’t need to mess with Class Loader.