Java Virtual Machine & Runtime Environment

When you write a program in C++ it is known as source code. The C++ compiler
converts this source code into the machine code of underlying system (e.g. Windows) If
you want to run that code on Linux you need to recompile it with a Linux based compiler.
Due to the difference in compilers, sometimes you need to modify your code.
Java has introduced the concept of WORA (write once run anywhere). When you write a
java program it is known as the source code of java. The java compiler does not compile
this source code for any underlying hardware system, rather it compiles it for a software
system known as JVM (This compiled code is known as byte code). We have different
JVMs for different systems (such as JVM for Windows , JVM for Linux etc). When we
run our program the JVM interprets (translates) the compiled program into the language
understood by the underlying system. So we write our code once and the JVM runs it
everywhere according to the underlying system.
This concept is discussed in detail below :-jvm1

1)  Java programs (Source code) are compiled into a form called Java bytecodes.
2) The Java compiler reads Java language source (.java) files, translates the source into
Java bytecodes, and places the bytecodes into class (.class) files.
3) The compiler generates one class file for each class contained in java source file.



Java Virtual Machine (JVM)
1) The central part of java platform is java virtual machine
2) Java bytecode executes by special software known as a “virtual machine”.
3) Most programming languages compile source code directly into machine code,
suitable for execution
4) The difference with Java is that it uses bytecode – a special type of machine code.
5)  The JVM executes Java bytecodes, so Java bytecodes can be thought of as the
machine language of the JVM.


Java Runtime Environment (JRE)
1)  The Java Virtual Machine is a part of a large system i.e. Java Runtime Environment
2)  Each operating system and CPU architecture requires different JRE.
3)  The JRE consists of set of built- in classes, as well as a JVM.
4)  Without an available JRE for a given environment, it is impossible to run Java