SlideShare una empresa de Scribd logo
1 de 5
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente (20)

JDK,JRE,JVM
JDK,JRE,JVMJDK,JRE,JVM
JDK,JRE,JVM
 
Java byte code & virtual machine
Java byte code & virtual machineJava byte code & virtual machine
Java byte code & virtual machine
 
Jdk,jre,jvm
Jdk,jre,jvmJdk,jre,jvm
Jdk,jre,jvm
 
Byte code jvm
Byte code jvmByte code jvm
Byte code jvm
 
Java Development Kit (jdk)
Java Development Kit (jdk)Java Development Kit (jdk)
Java Development Kit (jdk)
 
QSpiders - Memory (JVM architecture)
QSpiders - Memory (JVM architecture)QSpiders - Memory (JVM architecture)
QSpiders - Memory (JVM architecture)
 
Learn Java with Dr. Rifat Shahriyar
Learn Java with Dr. Rifat ShahriyarLearn Java with Dr. Rifat Shahriyar
Learn Java with Dr. Rifat Shahriyar
 
Diving into Java Class Loader
Diving into Java Class LoaderDiving into Java Class Loader
Diving into Java Class Loader
 
Java Streams
Java StreamsJava Streams
Java Streams
 
Introduction to java
Introduction to java Introduction to java
Introduction to java
 
Thread model of java
Thread model of javaThread model of java
Thread model of java
 
JVM
JVMJVM
JVM
 
Java basic
Java basicJava basic
Java basic
 
Assemblies
AssembliesAssemblies
Assemblies
 
Jvm Architecture
Jvm ArchitectureJvm Architecture
Jvm Architecture
 
Control statements in java programmng
Control statements in java programmngControl statements in java programmng
Control statements in java programmng
 
JAVA ENVIRONMENT
JAVA  ENVIRONMENTJAVA  ENVIRONMENT
JAVA ENVIRONMENT
 
Introduction to Java Programming, Basic Structure, variables Data type, input...
Introduction to Java Programming, Basic Structure, variables Data type, input...Introduction to Java Programming, Basic Structure, variables Data type, input...
Introduction to Java Programming, Basic Structure, variables Data type, input...
 
Control statements in java
Control statements in javaControl statements in java
Control statements in java
 
Introduction to java (revised)
Introduction to java (revised)Introduction to java (revised)
Introduction to java (revised)
 

Destacado

Third Generation Internet Applications
Third Generation Internet ApplicationsThird Generation Internet Applications
Third Generation Internet ApplicationsPatrick Koning
 
Inside Android's Dalvik VM - NEJUG Nov 2011
Inside Android's Dalvik VM - NEJUG Nov 2011Inside Android's Dalvik VM - NEJUG Nov 2011
Inside Android's Dalvik VM - NEJUG Nov 2011Doug Hawkins
 
JVM bytecode - The secret language behind Java and Scala
JVM bytecode - The secret language behind Java and ScalaJVM bytecode - The secret language behind Java and Scala
JVM bytecode - The secret language behind Java and ScalaTakipi
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data ScienceNiko Vuokko
 
Introduction to Data Science and Analytics
Introduction to Data Science and AnalyticsIntroduction to Data Science and Analytics
Introduction to Data Science and AnalyticsSrinath Perera
 
Dessler ch 09-performance management and appraisal
Dessler ch 09-performance management and appraisalDessler ch 09-performance management and appraisal
Dessler ch 09-performance management and appraisalShamsil Arefin
 
Introduction on Data Science
Introduction on Data ScienceIntroduction on Data Science
Introduction on Data ScienceEdureka!
 
Forms of Business Ownership and Organization
Forms of Business Ownership and OrganizationForms of Business Ownership and Organization
Forms of Business Ownership and Organization Qamar Farooq
 
HRM Dessler CH# 09
HRM Dessler CH# 09HRM Dessler CH# 09
HRM Dessler CH# 09Usman Rashid
 
HRM-Chapter1-Introduction to HRM
HRM-Chapter1-Introduction to HRMHRM-Chapter1-Introduction to HRM
HRM-Chapter1-Introduction to HRMsubnesh
 
HRM chapter no.7 (Interviw of employee)
HRM chapter no.7 (Interviw of employee)HRM chapter no.7 (Interviw of employee)
HRM chapter no.7 (Interviw of employee)Qamar Farooq
 

Destacado (20)

3. jvm
3. jvm3. jvm
3. jvm
 
Jvm internals
Jvm internalsJvm internals
Jvm internals
 
Third Generation Internet Applications
Third Generation Internet ApplicationsThird Generation Internet Applications
Third Generation Internet Applications
 
Perfect Patch
Perfect PatchPerfect Patch
Perfect Patch
 
Hands on presentatie
Hands on presentatieHands on presentatie
Hands on presentatie
 
Boekpresentatie (HAN)
Boekpresentatie (HAN)Boekpresentatie (HAN)
Boekpresentatie (HAN)
 
AVO-Café
AVO-CaféAVO-Café
AVO-Café
 
Inside Android's Dalvik VM - NEJUG Nov 2011
Inside Android's Dalvik VM - NEJUG Nov 2011Inside Android's Dalvik VM - NEJUG Nov 2011
Inside Android's Dalvik VM - NEJUG Nov 2011
 
JVM bytecode - The secret language behind Java and Scala
JVM bytecode - The secret language behind Java and ScalaJVM bytecode - The secret language behind Java and Scala
JVM bytecode - The secret language behind Java and Scala
 
Mediawijsheid 2.0
Mediawijsheid 2.0 Mediawijsheid 2.0
Mediawijsheid 2.0
 
Understanding the Dalvik Virtual Machine
Understanding the Dalvik Virtual MachineUnderstanding the Dalvik Virtual Machine
Understanding the Dalvik Virtual Machine
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Introduction to Data Science and Analytics
Introduction to Data Science and AnalyticsIntroduction to Data Science and Analytics
Introduction to Data Science and Analytics
 
Java: Exception
Java: ExceptionJava: Exception
Java: Exception
 
Dessler ch 09-performance management and appraisal
Dessler ch 09-performance management and appraisalDessler ch 09-performance management and appraisal
Dessler ch 09-performance management and appraisal
 
Introduction on Data Science
Introduction on Data ScienceIntroduction on Data Science
Introduction on Data Science
 
Forms of Business Ownership and Organization
Forms of Business Ownership and OrganizationForms of Business Ownership and Organization
Forms of Business Ownership and Organization
 
HRM Dessler CH# 09
HRM Dessler CH# 09HRM Dessler CH# 09
HRM Dessler CH# 09
 
HRM-Chapter1-Introduction to HRM
HRM-Chapter1-Introduction to HRMHRM-Chapter1-Introduction to HRM
HRM-Chapter1-Introduction to HRM
 
HRM chapter no.7 (Interviw of employee)
HRM chapter no.7 (Interviw of employee)HRM chapter no.7 (Interviw of employee)
HRM chapter no.7 (Interviw of employee)
 

Similar a Java Virtual Machine - Internal Architecture

A Brief study on JVM A Brief study on JVM
A Brief study on JVM A Brief study on JVMA Brief study on JVM A Brief study on JVM
A Brief study on JVM A Brief study on JVMBRNSSPublicationHubI
 
A begineers guide of JAVA - Getting Started
 A begineers guide of JAVA - Getting Started A begineers guide of JAVA - Getting Started
A begineers guide of JAVA - Getting StartedRakesh Madugula
 
Introduction of jvm|Java Training In Jaipur | Java Training Jaipur | Java Tra...
Introduction of jvm|Java Training In Jaipur | Java Training Jaipur | Java Tra...Introduction of jvm|Java Training In Jaipur | Java Training Jaipur | Java Tra...
Introduction of jvm|Java Training In Jaipur | Java Training Jaipur | Java Tra...Rhythm Suiwal
 
JVM Architecture – How It Works.pdf
JVM Architecture – How It Works.pdfJVM Architecture – How It Works.pdf
JVM Architecture – How It Works.pdfGeekster
 
Ijaprr vol1-2-13-60-64tejinder
Ijaprr vol1-2-13-60-64tejinderIjaprr vol1-2-13-60-64tejinder
Ijaprr vol1-2-13-60-64tejinderijaprr_editor
 
Top 10 Important Core Java Interview questions and answers.pdf
Top 10 Important Core Java Interview questions and answers.pdfTop 10 Important Core Java Interview questions and answers.pdf
Top 10 Important Core Java Interview questions and answers.pdfUmesh Kumar
 
Javanotes ww8
Javanotes ww8Javanotes ww8
Javanotes ww8kumar467
 
Java performance tuning
Java performance tuningJava performance tuning
Java performance tuningJerry Kurian
 
Advanced java training in bangalore
Advanced java training in bangaloreAdvanced java training in bangalore
Advanced java training in bangaloresiyaram ray
 
Advanced java-training-in-bangalore
Advanced java-training-in-bangaloreAdvanced java-training-in-bangalore
Advanced java-training-in-bangaloresiyaram ray
 

Similar a Java Virtual Machine - Internal Architecture (20)

Basic Java I
Basic Java IBasic Java I
Basic Java I
 
Java JDK.docx
Java JDK.docxJava JDK.docx
Java JDK.docx
 
A Brief study on JVM A Brief study on JVM
A Brief study on JVM A Brief study on JVMA Brief study on JVM A Brief study on JVM
A Brief study on JVM A Brief study on JVM
 
Jvm internal detail
Jvm internal detailJvm internal detail
Jvm internal detail
 
A begineers guide of JAVA - Getting Started
 A begineers guide of JAVA - Getting Started A begineers guide of JAVA - Getting Started
A begineers guide of JAVA - Getting Started
 
Introduction of jvm|Java Training In Jaipur | Java Training Jaipur | Java Tra...
Introduction of jvm|Java Training In Jaipur | Java Training Jaipur | Java Tra...Introduction of jvm|Java Training In Jaipur | Java Training Jaipur | Java Tra...
Introduction of jvm|Java Training In Jaipur | Java Training Jaipur | Java Tra...
 
JVM Architecture – How It Works.pdf
JVM Architecture – How It Works.pdfJVM Architecture – How It Works.pdf
JVM Architecture – How It Works.pdf
 
Ijaprr vol1-2-13-60-64tejinder
Ijaprr vol1-2-13-60-64tejinderIjaprr vol1-2-13-60-64tejinder
Ijaprr vol1-2-13-60-64tejinder
 
Top 10 Important Core Java Interview questions and answers.pdf
Top 10 Important Core Java Interview questions and answers.pdfTop 10 Important Core Java Interview questions and answers.pdf
Top 10 Important Core Java Interview questions and answers.pdf
 
Java unit 1
Java unit 1Java unit 1
Java unit 1
 
Introduction java programming
Introduction java programmingIntroduction java programming
Introduction java programming
 
JVM.pptx
JVM.pptxJVM.pptx
JVM.pptx
 
JAVA for Every one
JAVA for Every oneJAVA for Every one
JAVA for Every one
 
JAVA Program Examples
JAVA Program ExamplesJAVA Program Examples
JAVA Program Examples
 
Javanotes ww8
Javanotes ww8Javanotes ww8
Javanotes ww8
 
Java notes
Java notesJava notes
Java notes
 
Java performance tuning
Java performance tuningJava performance tuning
Java performance tuning
 
Advanced java training in bangalore
Advanced java training in bangaloreAdvanced java training in bangalore
Advanced java training in bangalore
 
Advanced java-training-in-bangalore
Advanced java-training-in-bangaloreAdvanced java-training-in-bangalore
Advanced java-training-in-bangalore
 
Java virtual machine
Java virtual machineJava virtual machine
Java virtual machine
 

Último

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 

Último (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

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