SlideShare a Scribd company logo
2
Most read
4
Most read
1
| Article by Subnesh Sharma |
Java Virtual Machine
This article intends to reveal the most hidden, interesting and knowledgeable things about JVM and
its components. Across the globe, there are multiple articles on JAVA, its API and implementation
but very few literatures are written on JVM. Not many JAVA professional make an attempt to
understand the intricacies of internal working of Java Virtual Machine. So let’s get a deep insight of
JVM and Its components. The agenda of this paper would be:
Agenda:
1. What is JVM?
2. JVM subcomponents
2.1 Execution Engine
2.2 Class Loader
2.3 Method Area
3. Summary
1. What is JVM?
A Java Virtual Machine (JVM) is a self contained operating environment that behaves as if it is a separate
computer. Java applets, for example, run in a JVM that has no access to the host operating system.
JVM uses a virtual machine model (VMM) for the execution of other computer programs and scripts and it
enables a set of computer software programs and data structures to make use of VMM. This model accepts a
form of computer intermediate language commonly referred to as Java bytecode.
According to Oracle (Sun Mircosystems), a JVM definition is “A software ‘execution engine’ that safely and
compatibly executes the byte codes in Java class files on a microprocessor (whether in a computer or in
another electronic device)”.
According to Oracle (Sun Mircosystems), a Virtual Machine definition is “An abstract specification for a
computing device that can be implemented in different ways, in software or hardware. You compile to the
instruction set of a virtual machine much like you'd compile to the instruction set of a microprocessor. The
Java virtual machine consists of a bytecode instruction set, a set of registers, a stack, a garbage-collected
heap, and an area for storing methods.” VM model emulates the physical computer so as to execute the
bytecode.
Java works on WORA: “write once, run anywhere” concept. This is implements though JVM which is a
software for non virtual hardware and for standard operating systems.
JVM comes along with a set of libraries which implement JAVA API’s and constitutes JRE (Java Runtime
Environment). This environment can also be used to compile and execute the code of other language like Ada.
2
| Article by Subnesh Sharma |
In industry, JVM flavors are distributed by many vendors like Oracle, IBM, HP etc. These all flavors are
following the JVM specification published by Sun/Oracle.
2. JVM Subcomponents
After getting the conceptual understanding of JVM, let focus on its internal architecture:
Virtual machine instance is composed of subsystems, memory areas, data types, and instructions. These
components make an abstract inner architecture for the abstract Java virtual machine. The purpose of these
components is to define the behavior of JVM implementation towards the external resources rather than
implementation of internal architecture.
The specification defines the required behavior of any Java virtual machine implementation in terms of these
abstract components and their interactions.
JVM is composed of two major sub components
1. Execution engine
2. Class Loaders
2.1 Execution engine: it’s responsible for executing the instructions contained in the methods of
loaded classes
2.2 Class Loader: a mechanism for loading types (classes and interfaces) given fully qualified names.
3
| Article by Subnesh Sharma |
Class loaders are of two types:
2.2.1 System class loader
2.2.2 Custom Class loader
Following diagram shows the level of class loader
Bootstrap Class Loader is responsible to load all the prerequisites classes and interface to
accomplish the loading activity so as to launch application.
Ext class loader is used to load custom class loader which affects the loading process of all
applications for this JVM. The destination of this jar file is under “JRE_HOME/lib/ext” and it introduces global
customization to loading process.
App class loader is used to load custom class loader for this application only.
Custom Class Loaders are derived from java.lang.ClassLoader class. To load a class use loadClass()
method with appropriate parameters.
2.3 Method Area
JVM architecture consists of run time data area which contains components like method area, heap, method
stacks, thread stack frames, java stacks etc.
Method area is a vital part of run time data area. Inside a Java virtual machine instance, information
about loaded types is stored in a logical area of memory called the method area. When the Java virtual
machine loads a type, it uses a class loader to locate the appropriate class file. The class loader reads in the
class file--a linear stream of binary data--and passes it to the virtual machine. The virtual machine extracts
information about the type from the binary data and stores the information in the method area. Memory for
class (static) variables declared in the class is also taken from the method area.
Heap, again a vital and very important component of run time data area, contains all allocated
objects and references of these objects are kept in Method tables in Method area for JVM use and access.
Bootstrap Class Loader
Ext Class Loader
App Class Loader
4
| Article by Subnesh Sharma |
Java Stacks automatically gets create when a new thread is generated. These stacks are composed of
multiple stack frames which internally keep local variables and partial results, and play a part in method
invocation and return.
The Java virtual machine can support many threads of execution at once. Each Java virtual machine
thread has its own pc (program counter) register. At any point, each Java virtual machine thread is executing
the code of a single method, the current method for that thread. If that method is not native, the pc register
contains the address of the Java virtual machine instruction currently being executed. If the method currently
being executed by the thread is native, the value of the Java virtual machine's pc register is undefined. The
Java virtual machine's pc register is wide enough to hold a returnAddress or a native pointer on the specific
platform.
Native method stacks are in use when java application is going to interact with some native codes.
These stacks can be used by the implementation of an interpreter for the Java virtual machine's instruction
set in a language such as C and that’s why these conventional stacks are colloquially called "C stacks”.
Apart from these components, there are some more components which are playing magic games for
the execution of java application. These components are given below:
Byte Code Verifier:
The JVM verifies all bytecode before it is executed. Verification process includes the verification of
the magic number which is generated by “javac” compiler at the time of compilation. This
verification consists primarily of three types of checks:
 Branches are always to valid locations
 Data is always initialized and references are always type-safe
 Access to "private" or "package private" data and methods is rigidly controlled.
First two activities happen when verification process is going on where as last activity happens
dynamically.
JIT Compiler:
The simplest tool used to increase the performance of an application is the Just-In-Time (JIT)
compiler. A JIT is a code generator that converts Java bytecode into native machine code. Java programs
invoked with a JIT generally run much faster than when the bytecode is executed by the interpreter. The Java
Hotspot VM removes the need for a JIT compiler in most cases however JIT compiler being used in earlier
releases still.
3. Summary
Understanding of internal architecture of JVM will definitely help to better know the behavior of JVM in
different situations. These details must have revealed hidden facts about JVM and how java based programs
run and get executed. Keep learning!
5
| Article by Subnesh Sharma |
Bibliography:
http://www.oracle.com/technetwork/java/index.html
www.artima.com

More Related Content

PPTX
Presentation on Core java
mahir jain
 
PDF
java ppt.pdf
PriyaMaurya52
 
PPTX
Introduction to java
Sandeep Rawat
 
PDF
Introduction to java (revised)
Sujit Majety
 
PPT
Java tutorial PPT
Intelligo Technologies
 
PPTX
JRE , JDK and platform independent nature of JAVA
Mehak Tawakley
 
PPTX
Introduction to java
Saba Ameer
 
PDF
Introduction to Java Programming
Ravi Kant Sahu
 
Presentation on Core java
mahir jain
 
java ppt.pdf
PriyaMaurya52
 
Introduction to java
Sandeep Rawat
 
Introduction to java (revised)
Sujit Majety
 
Java tutorial PPT
Intelligo Technologies
 
JRE , JDK and platform independent nature of JAVA
Mehak Tawakley
 
Introduction to java
Saba Ameer
 
Introduction to Java Programming
Ravi Kant Sahu
 

What's hot (20)

PPT
Introduction to Java Programming, Basic Structure, variables Data type, input...
Mr. Akaash
 
PDF
Introduction to Java
Professional Guru
 
PPTX
Core java complete ppt(note)
arvind pandey
 
PPTX
Java Programming
Elizabeth alexander
 
PDF
Basic Java Programming
Math-Circle
 
PPTX
What is Server? (Web Server vs Application Server)
Amit Nirala
 
PPT
Netbeans IDE & Platform
Aatul Palandurkar
 
PPT
JDBC – Java Database Connectivity
Information Technology
 
PPTX
Core java
Shubham singh
 
PDF
Java Collections | Collections Framework in Java | Java Tutorial For Beginner...
Edureka!
 
PPTX
Introduction to java
Java Lover
 
PPT
Abstract class in java
Lovely Professional University
 
PPTX
Java virtual machine
Nikhil Sharma
 
PDF
Java Programming
Anjan Mahanta
 
PDF
Java keywords
Ravi_Kant_Sahu
 
PDF
Log4j in 8 slides
Tarin Gamberini
 
PPTX
Inheritance in JAVA PPT
Pooja Jaiswal
 
PPTX
Basics of JAVA programming
Elizabeth Thomas
 
PPTX
Spring boot
Gyanendra Yadav
 
PPTX
Java 8 Lambda and Streams
Venkata Naga Ravi
 
Introduction to Java Programming, Basic Structure, variables Data type, input...
Mr. Akaash
 
Introduction to Java
Professional Guru
 
Core java complete ppt(note)
arvind pandey
 
Java Programming
Elizabeth alexander
 
Basic Java Programming
Math-Circle
 
What is Server? (Web Server vs Application Server)
Amit Nirala
 
Netbeans IDE & Platform
Aatul Palandurkar
 
JDBC – Java Database Connectivity
Information Technology
 
Core java
Shubham singh
 
Java Collections | Collections Framework in Java | Java Tutorial For Beginner...
Edureka!
 
Introduction to java
Java Lover
 
Abstract class in java
Lovely Professional University
 
Java virtual machine
Nikhil Sharma
 
Java Programming
Anjan Mahanta
 
Java keywords
Ravi_Kant_Sahu
 
Log4j in 8 slides
Tarin Gamberini
 
Inheritance in JAVA PPT
Pooja Jaiswal
 
Basics of JAVA programming
Elizabeth Thomas
 
Spring boot
Gyanendra Yadav
 
Java 8 Lambda and Streams
Venkata Naga Ravi
 
Ad

Viewers also liked (20)

PDF
Jvm internals
Luiz Fernando Teston
 
PPT
Third Generation Internet Applications
Patrick Koning
 
PPT
Perfect Patch
Regine Deleu
 
ODP
Hands on presentatie
Jan Vansteenkiste
 
PPTX
Boekpresentatie (HAN)
Patrick Koning
 
PPTX
AVO-Café
Patrick Koning
 
PDF
Inside Android's Dalvik VM - NEJUG Nov 2011
Doug Hawkins
 
PPTX
JVM bytecode - The secret language behind Java and Scala
Takipi
 
PPTX
Mediawijsheid 2.0
Patrick Koning
 
PDF
Understanding the Dalvik Virtual Machine
National Cheng Kung University
 
PPT
Java-java virtual machine
Surbhi Panhalkar
 
PDF
Introduction to Data Science
Niko Vuokko
 
PDF
Introduction to Data Science and Analytics
Srinath Perera
 
PPT
Java: Exception
Tareq Hasan
 
PPTX
Dessler ch 09-performance management and appraisal
Shamsil Arefin
 
PDF
Introduction on Data Science
Edureka!
 
PPT
Forms of Business Ownership and Organization
Qamar Farooq
 
PPT
HRM Dessler CH# 09
Usman Rashid
 
PDF
HRM-Chapter1-Introduction to HRM
subnesh
 
Jvm internals
Luiz Fernando Teston
 
Third Generation Internet Applications
Patrick Koning
 
Perfect Patch
Regine Deleu
 
Hands on presentatie
Jan Vansteenkiste
 
Boekpresentatie (HAN)
Patrick Koning
 
AVO-Café
Patrick Koning
 
Inside Android's Dalvik VM - NEJUG Nov 2011
Doug Hawkins
 
JVM bytecode - The secret language behind Java and Scala
Takipi
 
Mediawijsheid 2.0
Patrick Koning
 
Understanding the Dalvik Virtual Machine
National Cheng Kung University
 
Java-java virtual machine
Surbhi Panhalkar
 
Introduction to Data Science
Niko Vuokko
 
Introduction to Data Science and Analytics
Srinath Perera
 
Java: Exception
Tareq Hasan
 
Dessler ch 09-performance management and appraisal
Shamsil Arefin
 
Introduction on Data Science
Edureka!
 
Forms of Business Ownership and Organization
Qamar Farooq
 
HRM Dessler CH# 09
Usman Rashid
 
HRM-Chapter1-Introduction to HRM
subnesh
 
Ad

Similar to Java Virtual Machine - Internal Architecture (20)

PDF
JVM Architecture – How It Works.pdf
Geekster
 
PDF
A Brief study on JVM A Brief study on JVM
BRNSSPublicationHubI
 
PPTX
JVM.pptx
ParvathiPPSGRKCW
 
DOCX
Java JDK.docx
Bornali Das
 
PPT
Java14
aiter2002
 
PPTX
Introduction of jvm|Java Training In Jaipur | Java Training Jaipur | Java Tra...
Rhythm Suiwal
 
PDF
Jvm internal detail
Mohammad Faizan
 
PPTX
Java byte code & virtual machine
Laxman Puri
 
PPTX
JVMkhushi[1].pptx JVMkhushi[1].pptxJVMkhushi[1].pptx
GAMINGWITHGURKEERAT
 
PDF
Inside JVM
Chinh Ngo Nguyen
 
PDF
Java Virtual Machine.pdf
Uncodemy
 
PPTX
Java Virtual Machine (JVM) and just in time compilation
ArunKumarPandey43
 
PPTX
Lecture 2 Java Virtual Machine .pptx
AnupamKumar559254
 
PDF
Ijaprr vol1-2-13-60-64tejinder
ijaprr_editor
 
PDF
Internal working JVM
ShubhamGupta345141
 
PPTX
Simple tweaks to get the most out of your JVM
Jamie Coleman
 
JVM Architecture – How It Works.pdf
Geekster
 
A Brief study on JVM A Brief study on JVM
BRNSSPublicationHubI
 
Java JDK.docx
Bornali Das
 
Java14
aiter2002
 
Introduction of jvm|Java Training In Jaipur | Java Training Jaipur | Java Tra...
Rhythm Suiwal
 
Jvm internal detail
Mohammad Faizan
 
Java byte code & virtual machine
Laxman Puri
 
JVMkhushi[1].pptx JVMkhushi[1].pptxJVMkhushi[1].pptx
GAMINGWITHGURKEERAT
 
Inside JVM
Chinh Ngo Nguyen
 
Java Virtual Machine.pdf
Uncodemy
 
Java Virtual Machine (JVM) and just in time compilation
ArunKumarPandey43
 
Lecture 2 Java Virtual Machine .pptx
AnupamKumar559254
 
Ijaprr vol1-2-13-60-64tejinder
ijaprr_editor
 
Internal working JVM
ShubhamGupta345141
 
Simple tweaks to get the most out of your JVM
Jamie Coleman
 

Recently uploaded (20)

PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PPTX
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PDF
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PDF
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
REPORT: Heating appliances market in Poland 2024
SPIUG
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
The Future of Artificial Intelligence (AI)
Mukul
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
REPORT: Heating appliances market in Poland 2024
SPIUG
 

Java Virtual Machine - Internal Architecture

  • 1. 1 | Article by Subnesh Sharma | Java Virtual Machine This article intends to reveal the most hidden, interesting and knowledgeable things about JVM and its components. Across the globe, there are multiple articles on JAVA, its API and implementation but very few literatures are written on JVM. Not many JAVA professional make an attempt to understand the intricacies of internal working of Java Virtual Machine. So let’s get a deep insight of JVM and Its components. The agenda of this paper would be: Agenda: 1. What is JVM? 2. JVM subcomponents 2.1 Execution Engine 2.2 Class Loader 2.3 Method Area 3. Summary 1. What is JVM? A Java Virtual Machine (JVM) is a self contained operating environment that behaves as if it is a separate computer. Java applets, for example, run in a JVM that has no access to the host operating system. JVM uses a virtual machine model (VMM) for the execution of other computer programs and scripts and it enables a set of computer software programs and data structures to make use of VMM. This model accepts a form of computer intermediate language commonly referred to as Java bytecode. According to Oracle (Sun Mircosystems), a JVM definition is “A software ‘execution engine’ that safely and compatibly executes the byte codes in Java class files on a microprocessor (whether in a computer or in another electronic device)”. According to Oracle (Sun Mircosystems), a Virtual Machine definition is “An abstract specification for a computing device that can be implemented in different ways, in software or hardware. You compile to the instruction set of a virtual machine much like you'd compile to the instruction set of a microprocessor. The Java virtual machine consists of a bytecode instruction set, a set of registers, a stack, a garbage-collected heap, and an area for storing methods.” VM model emulates the physical computer so as to execute the bytecode. Java works on WORA: “write once, run anywhere” concept. This is implements though JVM which is a software for non virtual hardware and for standard operating systems. JVM comes along with a set of libraries which implement JAVA API’s and constitutes JRE (Java Runtime Environment). This environment can also be used to compile and execute the code of other language like Ada.
  • 2. 2 | Article by Subnesh Sharma | In industry, JVM flavors are distributed by many vendors like Oracle, IBM, HP etc. These all flavors are following the JVM specification published by Sun/Oracle. 2. JVM Subcomponents After getting the conceptual understanding of JVM, let focus on its internal architecture: Virtual machine instance is composed of subsystems, memory areas, data types, and instructions. These components make an abstract inner architecture for the abstract Java virtual machine. The purpose of these components is to define the behavior of JVM implementation towards the external resources rather than implementation of internal architecture. The specification defines the required behavior of any Java virtual machine implementation in terms of these abstract components and their interactions. JVM is composed of two major sub components 1. Execution engine 2. Class Loaders 2.1 Execution engine: it’s responsible for executing the instructions contained in the methods of loaded classes 2.2 Class Loader: a mechanism for loading types (classes and interfaces) given fully qualified names.
  • 3. 3 | Article by Subnesh Sharma | Class loaders are of two types: 2.2.1 System class loader 2.2.2 Custom Class loader Following diagram shows the level of class loader Bootstrap Class Loader is responsible to load all the prerequisites classes and interface to accomplish the loading activity so as to launch application. Ext class loader is used to load custom class loader which affects the loading process of all applications for this JVM. The destination of this jar file is under “JRE_HOME/lib/ext” and it introduces global customization to loading process. App class loader is used to load custom class loader for this application only. Custom Class Loaders are derived from java.lang.ClassLoader class. To load a class use loadClass() method with appropriate parameters. 2.3 Method Area JVM architecture consists of run time data area which contains components like method area, heap, method stacks, thread stack frames, java stacks etc. Method area is a vital part of run time data area. Inside a Java virtual machine instance, information about loaded types is stored in a logical area of memory called the method area. When the Java virtual machine loads a type, it uses a class loader to locate the appropriate class file. The class loader reads in the class file--a linear stream of binary data--and passes it to the virtual machine. The virtual machine extracts information about the type from the binary data and stores the information in the method area. Memory for class (static) variables declared in the class is also taken from the method area. Heap, again a vital and very important component of run time data area, contains all allocated objects and references of these objects are kept in Method tables in Method area for JVM use and access. Bootstrap Class Loader Ext Class Loader App Class Loader
  • 4. 4 | Article by Subnesh Sharma | Java Stacks automatically gets create when a new thread is generated. These stacks are composed of multiple stack frames which internally keep local variables and partial results, and play a part in method invocation and return. The Java virtual machine can support many threads of execution at once. Each Java virtual machine thread has its own pc (program counter) register. At any point, each Java virtual machine thread is executing the code of a single method, the current method for that thread. If that method is not native, the pc register contains the address of the Java virtual machine instruction currently being executed. If the method currently being executed by the thread is native, the value of the Java virtual machine's pc register is undefined. The Java virtual machine's pc register is wide enough to hold a returnAddress or a native pointer on the specific platform. Native method stacks are in use when java application is going to interact with some native codes. These stacks can be used by the implementation of an interpreter for the Java virtual machine's instruction set in a language such as C and that’s why these conventional stacks are colloquially called "C stacks”. Apart from these components, there are some more components which are playing magic games for the execution of java application. These components are given below: Byte Code Verifier: The JVM verifies all bytecode before it is executed. Verification process includes the verification of the magic number which is generated by “javac” compiler at the time of compilation. This verification consists primarily of three types of checks:  Branches are always to valid locations  Data is always initialized and references are always type-safe  Access to "private" or "package private" data and methods is rigidly controlled. First two activities happen when verification process is going on where as last activity happens dynamically. JIT Compiler: The simplest tool used to increase the performance of an application is the Just-In-Time (JIT) compiler. A JIT is a code generator that converts Java bytecode into native machine code. Java programs invoked with a JIT generally run much faster than when the bytecode is executed by the interpreter. The Java Hotspot VM removes the need for a JIT compiler in most cases however JIT compiler being used in earlier releases still. 3. Summary Understanding of internal architecture of JVM will definitely help to better know the behavior of JVM in different situations. These details must have revealed hidden facts about JVM and how java based programs run and get executed. Keep learning!
  • 5. 5 | Article by Subnesh Sharma | Bibliography: http://www.oracle.com/technetwork/java/index.html www.artima.com