A Concise Understanding of Java’s JVM, JRE and JDK

Image of the text java on a computer screen

Table of Contents

For anyone beginning their journey into Java development, you will at some point (very soon) run into the acronyms JVM, JRE and JDK. This article is written to give you a very clear and concise definition of those terms and also the problems they solve.

Fun Fact: The orginal purpose of JAVA was not the internet!

The Solution OF Java

Interestingly, devices like toasters (yes, as in toasters for making toast) were the priority of the Java creators during its early days. They wanted to create a platform-independent language that would be used to write software for consumer devices such as the television, remote controllers and even toasters.


Java or Oak as it was known back then didn’t do too well in the consumer electronics market, but luckily for the team, the emergence of the world-wide-web gave them another avenue to pursue.

Write Once, Run Anywhere

The internet, as a global network of computers, operating systems and devices of every kind, presented an urgency for platform-independent programs. In realising that the issue of portability was also present in application programming, the creators of Java decided to pivot from their initial concept of software-powered consumer devices and focus on solving bigger issues such as portable programs.


Given its “write once and run anywhere” principle, Java was introduced as the ultimate solution to the portability problem because it allowed the programmer to write code on one system and run it on any other system — and this functionality is made possible through the JVM.


JVM

Java’s solution to the issue of portability was to make its compiler output bytecode rather than executable code. The Java bytecode is a series of instructions which is executed by the Java Virtual Machine or JVM.


By translating the Java code into bytecode, it becomes portable and can be run in numerous environments, because all that is required is for a Java Runtime Environment — which also includes the JVM — to be implemented on each platform.


Once a JRE is present on any system, then a Java application can run on it because all JREs understand the Java bytecode.


JRE

Imagine you had a special oven and this special oven had all the ingredients needed to bake your favourite cake, the instructions, the ingredients, the cake tin itself — everything. Interestingly, application programs have such a magical oven, only it’s called a runtime environment.


The runtime environment consists of everything required to execute any given application. The runtime environment handles memory allocation, CPU management, libraries, source code…etc. The Java Runtime Environment consists of all that is needed to run a Java program, including the JVM, as mentioned above.


In a lot of ways, the beauty and uniqueness of the Java language lie in the JRE, because it can be implemented in systems beyond web and mobiles.

JDK

The Java Development Kit is the package which enables programmers to create applications that can be executed by the JVM and JRE. So before you start developing in Java, you would need to first download the JDK and the JDK will come bundled with the JVM and the JRE.


As of the time of writing, the latest version of JDK is the JDK 14, but JDK 8 is still widely used and quickly followed by JDK 11.

Go and make something beautiful!

Final Thoughts

Super congrats for getting to the end of this article. I’ve tried to keep it as concise as possible, whilst explaining the key terminologies and the problems they solve.


You should now have a better understanding and hopefully an appreciation of the Java language, the problem that it solves and some of the moving parts involved in the solution it provides.


Drop me a message and let me know if there’s something you want me to clarify or further elaborate on. In the meanwhile, go and make something beautiful and don’t forget to send me a link!

get the best real-world tutorial, right to your inbox!

    let's get social!

    recent posts

    Get the best real-world projects, right to your inbox!