Differences between JVM, JRE, and JDK
Java Virtual Machine
This is an abstract machine (as it is not physically there) which provides a runtime environment for Java bytecode.
This loads the code, verifies, and execute the code.
This also can run other programs written in different languages which are compiled in Java bytecode.
JVM, JRE, and JDK all are platform dependent as it requires different configuration for different OS. However, it is important to note that Java is platform independent.
The JIT (Just in time) complier coverts Java bytecode to machine code.
You can refer my article on Java Virtual Machine and Its architecture to get a better and more detailed understanding of this here. I have in depth discussed about the Class loader, Execution engine and many more in that article.
Java Runtime Environment
The JRE(Java Runtime Environment ) is software that is used to develop Java applications.
This is used to provide a runtime environment and it is an implementation of the Java Virtual Machine.
This however exists physically unlike the Java Virtual Machine.
Java Development Kit
The JDK (Java Development Kit) is a software development environment where Java applications are developed.
This contains the JRE + Development tools
This also exist physically.
There are several different types of platforms released by Oracle as well.
The JDK is like the full package that is necessary to develop a Java application as it has its own private Java Virtual Machine, an interpreter, a compiler, an archiver etc.
I hope this article has helped you to understand better about the differences between the JVM,JRE and JDK as it is confused by many mostly. You can also check my other article I have written on Java Virtual Machine and its architecture to get a clear and a better in-depth understanding of it and if you wish to gain more knowledge about JVM.
Please do feel free to provide a feedback on the above and do follow for more articles related to this and many more!