Skip to content
Software Testing Help
Home
Resources
FREE eBooks
QA Testing
Automation
Types Of Testing
Tutorials
Data Tools
More Tutorials
Java Components: Java Platform, JDK, JRE, & Java Virtual Machine
By Vijay Updated April 1, 2025
This Tutorial gives a Detailed Description of Java as a Platform and its Components i.e. JRE, JDK,
Java Virtual Machine and Difference Between JRE vs JDK:
Java has been described as a programming language as well as the platform. In our introductory
tutorial, we already discussed that a platform is a software environment using which we can execute
programs or applications.
In this tutorial, we will discuss Java, as a platform. We will also discuss Java platform components and
see how they work.
=> Read Through The Easy Java Training Series.
Table of Contents: [Show]
Java Platform
Java platform is a software or collection of programs that help us to execute applications written in
Java programming language. A Java platform consists of a Java compiler, a set of libraries, and an
execution engine.
Java platform is independent of any particular OS which makes Java programming language a
platform-independent language.
Java platform consists of the following components.
Java language
The Java Development Kit (JDK)
The Java Runtime Environment (JRE)
The Java Compiler
The Java Virtual Machine (JVM)
Apart from the above main components, the Java platform also contains garbage collectors, a set of
libraries and other additional components and tools that are required to efficiently run the Java
applications.
Let’s consider the following diagram that depicts the relationship between all these components.
So from the above diagram, we can conclude that,
JRE = JVM + library classes.
JDK = JRE + Developer tools.
Before we take up each of the components, let’s understand the execution flow of Java program
execution first.
The following diagram shows the flow of a Java program.
So the above diagram shows a simple execution flow for a Java program. A program written in Java
language is compiled by the Java compiler (javac). Unlike other language compilers that generate
machine code after compilation, the Javac compiler generates a class file consisting of byte code.
Now, this class file is given to Java Virtual Machine (JVM) that translates the class file into an object
file containing machine-dependent code. Then this code is executed by the machine.
Let’s discuss each of these components in detail.
Java Language
Java is a programming language that the Java platform uses. Java is an object-oriented programming
language whose syntax is derived from C and OOPS features are derived from C++. It has its syntax,
rules, format, and programming paradigm.
In this series, we will learn all the major concepts in Java and programming in detail.
The Java Compiler
This is a compiler for Java programming language and its function is to generate Java class files from
the Java source code. Java class file contains a platform-independent Java byte code.
After generating class files, JVM loads these class files and either interprets the byte code or compiles
it to machine code using Just-in-time (JIT) compiler.
The Java Virtual Machine (JVM)
JVM is the center of Java programming language and Java platform. The JVM converts the byte code
into machine-specific code (also known as object code in other programmer languages).
JVM provides the functionality of garbage collection, memory management, security, etc. JVM is
platform-independent and we can customize its functionality using a Virtual interface it provides
which is not machine-dependent and is also independent of the operating system.
This platform-independence of JVM allows us to create Java programs on one machine and execute
them on another machine (WORA – Write – Once – Run – Anywhere).
The following diagram illustrates the various parts of a JVM.
The JVM is present on the RAM. When the Java program is converted to a class file by the Java
compiler, it needs to be executed.
For execution, the class file is brought on the Ram by the class loader. Here the BYTE code is verified
for any security issues. Classloader is also responsible for loading, linking and initialization of the
program to be executed.
The JVM memory shown in the diagram above contains various components as shown and they help
in the execution of the program by holding PC registers that contain current instruction to be
executed, Heap which holds variables, arrays, etc.
JVM memory also contains method area and Native method stack which contains method code and
native language specification respectively. JVM stack holds the instance of the program or the current
thread. If there is more than one thread than each thread will have its JVM stack.
Once the program is properly linked, then it is passed on to the execution engine. The execution
engine cooperates with the native method interface and native method libraries. Native method
interface is a programming framework that allows Java code to call libraries and native applications
that are a part of the native method libraries.
Next, the execution engine converts the Bytecode into Native machine code using just-in-time (JIT)
compiler. Then the program is executed by the machine.
Note: JIT or Just-in-time compiler is a part of the Java Virtual Machine (JVM). It interprets a part of
the Byte Code that has similar functionality at the same time. In other words, it converts the byte
code into native machine code at the same programming level. This is the reason for which Java is
compiled as well as an interpreted language.
The Java Runtime Environment (JRE)
JRE, as the name suggests, is the runtime environment that is required to execute Java programs and
applications. JRE consists of Java Virtual Machine (JVM) and binaries and other classes to successfully
execute Java programs.
JRE is a subset of JDK and doesn’t contain any development tools such as Java compiler, debugger,
etc. Hence if your Java applications are developed elsewhere, and you need to only execute them on
your machine, then you can install JRE separately. You do need to install JDK for this.
You need a JRE installed on your machine as it’s the minimum requirement to run Java programs on
your machine.
The JRE includes the following components.
Code libraries, property settings, and resource files: These include files like [Link],
[Link], etc.
DLL files: Used by Java hotspot client virtual machine and server virtual machine.
Java extension files: For Example, files related to locale specification like [Link]
Files required for security management. For Example, [Link], [Link]
Applet support classes.
True Type font files: Usually required by the platform.
To execute any application/program written in Java, you need JRE installed on your system. JRE is
platform dependent. This means you need to download and install JRE that’s compatible with your
O.S and architecture.
The Java Development Kit (JDK)
This is the core component of any Java environment. JDK contains JRE (Java Runtime Environment)
along with Java compiler, Java debugger, and other core classes. JDK is used for Java development as
it provides the entire executable and binaries as well as tools required to compile, debug a Java
program.
JDK is a platform-specific software and thus we will have separate JDK installers for each Operating
system.
JDK contains the following components:
jConsole: This is a Java monitoring and management Console.
jar: This is the archiver. This tool is used to package related class libraries into a single Jar file
as well as to manage Jar files.
jarSigner: This tool is used for jar signing and verifying.
javap: This is a tool for class file disassembler.
javaws: Java web start launcher for JNLP applications.
jhat: Java heap analysis tool.
jrunscript: Java command-line script shell.
jstack: Utility used to print stack traces for Java threads.
Javadoc: This automatically generates documentation from the source code comments.
appletviewer: Used for applet execution and debugging without a web browser.
apt: Annotation processing tool.
extCheck: Utility used to check jar file conflicts.
keytool: Using this utility you can manipulate Keystore.
policytool: This is a policy creation and management tool.
xjc: This is a part of the XML binding (JAXB) API that accepts XML schema and generates Java
classes.
Thus you can see that the components of JDK are the ones that are required by us from a
development point of view.
As shown in the above diagram, the Java source code is converted to byte codes by Java compiler
which is a part of JDK. Then this byte code is passed on to JVM (this process already described above)
and from there it goes to JRE where the code is executed.
Having seen the details about JDK and JRE, now let’s discuss the differences between JRE and JDK.
JRE Vs JDK
No JRE JDK
1 JRE stands for Java Runtime Environment. JDK stands for Java
2 Mostly used for the execution of Java programs. JDK is used by dev
3 Contains Java Virtual machine (JVM) bundled inside it. Doesn’t have JVM.
4 JRE doesn’t have Java compiler so cannot compile programs. JDK has javac com
5 Contains java class library, the java command, and other infrastructure. JDK contains tools
6 JRE can be installed as a standalone program. JDK is a separate in
7 Takes the compiled/interpreted Java program as input and generates output. Compiled Java sou
Conclusion
In this tutorial, we discussed the details of the Java Development Kit (JDK) that comes bundled with
Java Runtime Environment (JRE) and Java compiler. JRE, in turn, contains Java Virtual Machine (JVM)
which is responsible for converting byte code generated by Java compiler into machine-specific code.
All these including Java language are components of a parent entity called Java platform which is an
environment that helps us to run a Java application. We also discussed the detailed architecture and
working of JVM as well as the execution of a Java program here.
=> Take A Look At The Java Beginners Guide Here.
Was this helpful?
Recommended Reading
Java Virtual Machine: How JVM Helps in Running Java Application
A Complete Overview of Java Virtual Machine: Java Deployment was explained clearly in our last
tutorial. Here, we will explore more about JVM. Java Virtual Machine - JVM is a software
implementation of a machine. While downloading JDK, JVM also comes with that. JRE provides the
run-time environment. There are…
Java Deployment: Creation and Execution of Java JAR File
Introduction to Java deployment: We learned more about Java Swing in our previous tutorial, in this
tutorial, we will learn how to deploy a java project. Once coding has been completed, you have to
wrap all the files as a JAR file and that jar file can be deployed in…
Java Basics: Java Syntax, Java Class and Core Java Concepts
This Tutorial Provides an Introduction to the Basics of Java Coding Language. We will Introduce Topics
Such as Java Class, OOPS, Syntax, and Core Java Concepts: In our previous tutorials, we have
discussed the characteristics and features of the Java language. We have also learned about Java
applications. We got…
Java Vs Python - Key Differences Between Java And Python
In this Java Vs Python Tutorial, you will Learn the Major Differences Between Java and Python
Programming Languages and the Drawbacks of Both. Java and Python are the two most popular
programming languages today. While Java has been the most sought after programming language
since its release in 1995, Python…
READ MORE FROM THIS SERIES:
JAVA Tutorial For Beginners: 100+ Hands-on Java Video Tutorials
Introduction To Java Programming Language – Video Tutorial
Java DataTypes, Loops, Arrays, Switch and Assertions
OOP Java: Introduction To Object Oriented Programming In Java
Java Interface and Abstract Class Tutorial With Examples
Java Exceptions And Exception Handling With Examples
Java String Data Type With String Buffer And String Builder
Java Threads with Methods and Life Cycle
Basic I/O Operations In Java (Input/Output Streams)
Java Collections Framework (JCF) Tutorial
Java Reflection Tutorial With Examples
Java SWING Tutorial: Container, Components and Event Handling
Java Deployment: Creation and Execution of Java JAR File
Java Virtual Machine: How JVM Helps in Running Java Application
Access Modifiers In Java – Tutorial With Examples
Spock Tutorial: Testing With Spock And Groovy
Writing Unit Tests with Spock Framework
Spock Mocking and Stubbing (Examples with Video Tutorials)
Data-driven or Parameterized Testing With Spock Framework
Spock For Integration And Functional Testing With Selenium
Java Development Using Eclipse IDE
Prominent Java 8 Features With Code Examples
IntelliJ IDEA Tutorial – Java Development With IntelliJ IDE
Java Hello World – Create Your First Program In Java Today
Java ‘this’ Keyword: Tutorial With Code Examples
Java Generics Tutorial With Examples
What Is Static Keyword In Java?
Java Iterator: Learn To Use Iterators In Java With Examples
Introduction To Java Arrays And Related Concepts
Java Array Length Tutorial With Code Examples
Java Array – Declare, Create & Initialize An Array In Java
Java Array – How To Print Elements Of An Array In Java?
Java Operators – Arithmetic, Unary & Bitwise Operators In Java
How To Handle The ArrayIndexOutOfBoundsException in Java?
Array Data Types – int Array, Double array, Array of Strings Etc.
How To Add Elements To An Array In Java
Java Copy Array: How To Copy / Clone An Array In Java
Remove/Delete An Element From An Array In Java
How To Sort An Array In Java – Tutorial With Examples
Reverse An Array In Java – 3 Methods With Examples
Java String Array- Tutorial With Code Examples
Java Logical Operators – OR, XOR, Not & More
How To Pass / Return An Array In Java
Array Of Objects In Java: How To Create, Initialize And Use
MultiDimensional Arrays In Java (2d and 3d Arrays In Java)
Java Generic Array – How To Simulate Generic Arrays In Java?
Jagged Array In Java – Tutorial With Examples
Arrays In Java 8 – Stream Class And ParallelSort Method
Java Array Class Tutorial – [Link] Class with Examples
The Top 10+ Java IDEs & Online Java Compilers (2025 Rankings)
Java List – How To Create, Initialize & Use List In Java
ListIterator Interface In Java With Examples
Ternary Operator In Java – Tutorial With Examples
Java Components: Java Platform, JDK, JRE, & Java Virtual Machine
Java Basics: Java Syntax, Java Class and Core Java Concepts
How To Download, Install And Configure Java
Java List Methods – Sort List, Contains, List Add, List Remove
Java Scanner Class Tutorial With Examples
What Is Java Vector | Java Vector Class Tutorial With Examples
Java String Methods Tutorial With Examples
Java ArrayList – How To Declare, Initialize & Print An ArrayList
Covert List To Array And Other Collections In Java
Java ArrayList Conversions To Other Collections
Binary Search Algorithm In Java – Implementation & Examples
Doubly Linked List In Java – Implementation & Code Examples
ArrayList Methods In Java – Tutorial With Example Programs
Bubble Sort In Java – Java Sorting Algorithms & Code Examples
Insertion Sort In Java – Insertion Sort Algorithm & Examples
Selection Sort In Java – Selection Sort Algorithm & Examples
Linked List In Java – Linked List Implementation & Java Examples
Java Vs Python – Key Differences Between Java And Python
Java String compareTo Method With Programming Examples
Java String contains() Method Tutorial With Examples
QuickSort In Java – Algorithm, Illustration & Implementation
Merge Sort In Java – Program To Implement MergeSort
Java Map Interface Tutorial With Implementation & Examples
What Is A Java HashTable: HashTable Implementation & Example
What Is A HashMap In Java?
LinkedHashMap In Java – LinkedHashMap Example & Implementation
TreeMap In Java – Tutorial With Java TreeMap Examples
TreeSet In Java: Tutorial With Programming Examples
Java String Split() Method – How To Split A String In Java
Java Stack Tutorial: Stack Class Implementation With Examples
Set Interface In Java: Java Set Tutorial With Examples
Java Queue – Queue Methods, Queue Implementation With Examples
Java JDBC Tutorial: What Is JDBC (Java Database Connectivity)
Binary Search Tree In Java – Implementation & Code Examples
Deque In Java – Deque Implementation And Examples
How To Implement Dijkstra’s Algorithm In Java
Java Graph Tutorial – How To Implement Graph Data Structure
What Is A Heap Data Structure In Java
Java Priority Queue Tutorial – Implementation & Examples
Java String indexOf Method With Code Examples
Java String length() Method With Examples
Java String Replace(), ReplaceAll() & ReplaceFirst() Methods
Java Reverse String: Tutorial With Programming Examples
Java substring() Method – Tutorial With Examples
How To Use Java toString Method?
Java JDBC Connection Tutorial With Programming Example
Concurrency In Java: Semaphore And Executor Framework
Multithreading In Java – Tutorial With Examples
What Is NullPointerException In Java & How To Avoid It
Java Synchronized: What Is Thread Synchronization In Java
Try, Catch, Finally And Throw In Java With Examples
[Link]() – Thread Sleep() Method In Java With Examples
Assertions In Java – Java Assert Tutorial With Code Examples
What Is Garbage Collection In Java And How Does It Work
Recursion In Java – Tutorial With Examples
Java Class Vs Object – How To Use Class And Object In Java
Java Variables And Their Types With Examples
Java Integer And Java BigInteger Class With Examples
Important Java Keywords List – Reserved Words In Java
Types Of Classes In Java: Abstract, Concrete, Final, Static
Java Double – Tutorial With Programming Examples
Java Float Tutorial With Programming Examples
JDBC DriverManager, JDBC PreparedStatement And Statement
What Is Abstraction In Java – Learn With Examples
Java Constructor – Class, Copy And Default Constructors
Private, Abstract, Array And String Constructors In Java
Overriding Predefined Methods In Java
What Is Polymorphism In Java – Tutorial With Examples
Java @override: Method Overriding And Runtime Polymorphism
Encapsulation In Java: Complete Tutorial With Examples
Java Enum: Java Enumeration Tutorial With Examples
JDBC ResultSet: How To Use Java ResultSet To Retrieve Data
Comparable And Comparator Interfaces In Java
Java Composition – What Is Composition (Has-A) In Java
What Is Inheritance In Java – Tutorial With Examples
Types Of Inheritance In Java – Single Vs Multiple Inheritance
Marker Interface In Java: Serializable And Cloneable
Interface Enhancements In Java 8 – Java Functional Interface
Design Patterns In Java: Singleton, Factory And Builder
Introduction To JFC And GUI Programming In Java
Java Regex Tutorial With Regular Expression Examples
What Is Java Used For: 12 Real World Java Applications
What Is JavaDoc And How To Use It To Generate Documentation
Java Vs JavaScript: What Are The Important Differences
What Is Java AWT (Abstract Window Toolkit)
Java JDBC Transaction Management With Example
JDBC Exception Handling – How To Handle SQL Exceptions
Java If Statement Tutorial With Examples
Methods In Java – Tutorial With Programming Examples
HashSet In Java – Tutorial With Programming Examples
Java For Loop Tutorial With Program Examples
JDBC Batch Processing And Stored Procedure Tutorial
Java Switch Case Statement With Programming Examples
Java While Loop – Tutorial With Programming Examples
How To Convert Java String To Int – Tutorial With Examples
Java Do While Loop – Tutorial With Examples
8 Methods To Convert An Integer To String In Java
Java Break Statement – Tutorial With Examples
Java Continue Statement – How To Use Continue In Java
How To Convert Char To Int In Java [With Examples]
4 Methods To Convert Char To String In Java
Java Boolean – What Is A Boolean In Java (With Examples)
3 Methods To Convert Double To Int In Java
How To Use .equals Method In Java – Tutorial With Examples
Methods To Convert Java String To Double [With Examples]
Java char – Character Data Type In Java With Examples
Java Timer – How To Set A Timer In Java With Examples
Escape Characters OR Escape Sequences In Java
Java Pass By Reference And Pass By Value With Examples
TOP 15 Java Project Ideas for Beginners in 2025 (New LIST)
Get the Premium eBook
Download your copy now 👇
Our Bestselling eBook 'Software Testing Career package' Now Available FREE for Limited Period
DOWNLOAD NOW!
Leave a Comment
Comment
NameEmail
Software Testing Help
Communication Details
Main Office: A708, City Vista, Fountain Road, Kharadi, Pune, MH, 411014.
Email Us: info@[Link]
Facebook Linkedin X-twitter Youtube
Software Testing Tools
Test Management Tools
Web Application Testing Software
Cross Browser Testing Tools
Best ETL Testing Tools
Mobile Testing Tools
Regression Testing Tools
Defect Tracking Tools
GUI Testing Tools
Requirements Management Tools
ALL Testing Tools
Performance Testing Tools
Performance Testing Tools
Performance Testing Services
Computer Stress Test Tools
Cloud- Load Testing Service
Performance Testing Guide
Database Performance Tools
Website Performance Testing Tools
Application Performance Monitoring
Automation Testing Tools
Unit Testing Tools
API Testing Tools
Best ETL Tools
Open Source Testing Tools
Functional Testing Tools
Selenium Alternatives
Accessibility Testing Tools
Mobile Automation Tools
Automation Testing Software
Automation Testing Services
Data Tools
Data Masking Tools
Data Modeling Tools
Data Analysis Tools
Data Migration Software
Data Integration Tools
Data Mapping Tools
Data Loss Prevention
Test Data Management Tools
Data Recovery Software
Data Analytics Companies
ALL Data Tools
Coding Software
Best Code Editors
Code Coverage Tools
Low-Code Development Tools
Static Code Analysis Tools
Source Code Management Tools
Version Control Software
Code Review Tools
Javascript Online Editors
Code Review Tools
Code Quality Tools
Security Testing Tools
Penetration Testing Tools
App Security Testing Tools
Web Security Scanners
Vulnerability Assessment
Mobile App Security
Malware Removal Tools
Anti-Ransomware Tools
Spyware Removal Tools
Mobile Pen Testing Tools
Pen Testing as a Service
DAST Software
Testing Service Providers
Managed Testing Services
Mobile Testing Services
Software Testing Services
Performance Testing Services
Penetration Testing Companies
Cyber Security Companies
QA Outsourcing Companies
USA Testing Companies
Website Testing Services
Regression Testing Services
Software Development
Custom Software Companies
App Development Tools
Software Development Tools
Game Development Companies
Software Companies USA
SaaS Development Companies
Android App Development
DevOps Tools
DevOps Service Providers
App Development Companies
Healthcare Dev Companies
Networking Tools
Network Management
Network Security Tools
Network Scanning Tools
Application Scanners
Network Testing Tools
Network Monitoring Tools
Network Security Tools
Server Monitoring Tools
Network Mapping Software
SIEM Tools
System Monitoring Tools
Infrastructure Monitoring Tools
Project Management Tools
Project Management Software
Project Management Apps
Agile Project Management Tools
Workflow Management Software
Task Management Software
Team Collaboration Tools
JIRA Alternatives
Project Planning Tools
Team Management Software
Cloud Tools
Cloud Monitoring Tools
Crowdsourcing Platforms
Cloud Management
Crowdsourced Testing Companies
Cloud Mobile Testing
Cloud Computing Companies
Cloud Managed Services
Cloud Testing Tools
Cloud Security Companies
ALL Categories
Security Software
Free Antivirus Software
Cybersecurity Software
Internet Security Tools
External Vulnerability Scanner
Website Malware Scanner
Web Security Scanners
Zero Trust Security
Vulnerability Assessment
ALL Security Tools
IT Management Tools
Remote Desktop Software
Configuration Management
Incident Management Software
Change Management Software
IT Asset Management
Managed IT Services
ITSM Tools
Remote Monitoring Software
Remote Access Software
Asset Discovery Tools
Workload Automation Tools
IT Automation Tools
About us | Contact us | Advertise
All articles are copyrighted and cannot be reproduced without permission. SoftwareTestingHelp® is
a registered trademark.
©SoftwareTestingHelp 2025 — Read our Copyright Policy | Privacy Policy | Terms | Cookie
Policy | Affiliate Disclaimer
Ask Anything..