Java is a platform-independent programming language. It means that we can run Java on the platforms that have a Java interpreter. It is the reason that makes the Java platform-independent. The Java interpreter converts the Java bytecode (.class file) into the code understand by the operating system.
In this section, we will understand what is an interpreter in Java, the features of the interpreter, and how does the Java interpreter work. We will also see how it is different from a compiler.
What is an interpreter in Java?
Java interpreter is a computer program (system software) that implements the JVM. It is responsible for reading and executing the program. It is designed in such a way that it can read the source program and translate the source code instruction by instruction. It converts the high-level program into assembly language (machine language).
How does the Java interpreter work?
To convert the byte code into machine code, we deploy the .class file on the Java Virtual Machine (JVM). The JVM converts that code into machine code using the Java interpreter. The JVM uses the interpreter at runtime, after that it execute the code on the host machine.
As the Java compiler compiles the source code into the Java bytecode. In the same way, the Java interpreter converts or translates the bytecode into the machine-understandable format i.e. machine code, after that the machine code interacts with the operating system.
If the JVM is installed on any system it means that the platform is JVM enabled. The platform performs all the tasks of the Java run-time system. It loads the Java class file and interprets the compiled byte-code.
The browsers, like Google Chrome, Netscape, etc. are the popular example that contains the Java interpreter. It means these are Java-enabled browsers. It is used to run the Applet in the browser. The interpreter also serves as a specialized compiler in an implementation that supports dynamic or just-in-time (JIT) compilation which turns the Java bytecode into native machine instructions.
Let's see how an interpreter loads a Java program.
First, we specify the class by using the java command followed by the class name and options available for the interpreter, and command-line arguments if required. We use the following command to load the class:
In the above command, the class name should be a fully qualified name (the name of the class that includes the package name, if any). Remember that, we do not write the .class extension at the end of the class name. For example:
In the first command, Product is the class name. In the second command, com.javatpint.product is the name of the package in which the Mobile class is stored.
Once the class is loaded, Java follows a convention and searches for the class that contains the main() method. When the JVM founds the main() method, the interpreter starts the application by invoking the main() method. After executing the main() method, additional threads, and references other classes.
Features of Interpreter
It converts the source code into machine language, line by line at run time, without changing the sequence.
Difference Between Interpreter and Compiler
In the following table, we have summarized the key differences between an interpreter and a compiler.