Understanding How Java Works: Behind the Scenes


Java is one of the most widely used programming languages, known for its platform independence and versatility. Understanding how Java works behind the scenes can help you better grasp its powerful features.
The Journey of Java Code Execution
When you write Java code, the execution process involves several steps. Let’s go through them one by one:
1. Writing Java Code
As a programmer, you write Java code in a readable format, using commands like System.out.println("Hello, World!");
. This code is stored in a file with the .java
extension. For example, HelloWorld.java
.
2. Compiling the Code
Java uses a compiler to convert the human-readable .java
code into bytecode, which is a machine-independent intermediate format. The Java compiler, javac
, generates a .class
file from your .java
file. For instance, compiling HelloWorld.java
will produce HelloWorld.class
.
3. Running the Bytecode on the JVM
The .class
file (bytecode) is then executed by the Java Virtual Machine (JVM). The JVM interprets the bytecode and executes it on the underlying hardware.
Understanding JVM, JRE, and JDK
To fully understand the execution process, it’s essential to know the roles of JVM, JRE, and JDK.
Java Virtual Machine (JVM)
The JVM is the engine that runs your Java bytecode. It is responsible for:
Loading the bytecode
Verifying the bytecode for security
Executing the bytecode
Each operating system (Windows, macOS, Linux, etc.) has its version of the JVM, making the JVM platform-dependent. However, since the bytecode is platform-independent, Java programs can run on any platform with a compatible JVM.
Java Runtime Environment (JRE)
The JRE provides the runtime environment required to execute Java applications. It includes:
The JVM
Essential libraries and files needed to run Java programs
When you install Java on a machine for running applications, you are installing the JRE
Java Development Kit (JDK)
The JDK is what developers use to create Java applications. It includes:
The Java compiler (
javac
)Development tools
The JRE (and, therefore, the JVM)
If you’re developing Java programs, you need the JDK. For running applications, only the JRE is required
Key Features of Java
Platform Independence
Java is often described as “Write Once, Run Anywhere” (WORA). This means that once you write and compile a Java program, it can run on any device or operating system with a JVM. This is achieved by converting the code into platform-independent bytecode.
The Role of the Main Method
To execute a Java program, the JVM looks for the main
method with the following signature:
public static void main(String[] args)
This method is your program's entry point. Without it, the JVM doesn’t know where to start.
Classes and Object-Oriented Programming
Java is an object-oriented programming language, which means everything in Java revolves around objects and classes. Even a simple program requires at least one class.
Here’s an example of a complete Java program:
Compilation and Execution
Save the program in a file named
HelloWorld.java
Compile it using the command:
javac
HelloWorld.java
. This creates aHelloWorld.class
fileRun the program using the command:
java HelloWorld
. This executes the bytecode and prints the output
The JVM is built for specific operating systems and hardware, making it platform-dependent. For example, a JVM for Windows is different from a JVM for macOS. However, since the JVM interprets the platform-independent bytecode, Java programs can run on any system with a compatible JVM, ensuring platform independence.
Layers of Java Architecture
To summarize, here’s how the Java architecture layers work:
Hardware: Your physical machine (laptop, desktop, etc.)
Operating System (OS): The system running on your hardware (Windows, Linux, etc.)
JRE: Provides the runtime environment for Java programs
JVM: Executes the Java bytecode
For developers, the JDK is installed, which includes the JRE and JVM for program development.
Discover hands-on programming tutorials and resources! Visit my website: Fullstack Dev
Subscribe to my newsletter
Read articles from Tomas Svojanovsky directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Tomas Svojanovsky
Tomas Svojanovsky
I'm a full-stack developer. Programming isn't just my job but also my hobby. I like developing seamless user experiences and working on server-side complexities