The Java Virtual Machine
The Java Virtual Machine is a bytecode-oriented, garbage-collected virtual machine that specifies its own instruction set. The instructions have equivalent bytecodes that are interpreted and compiled to the underlying OS and hardware by the Java Runtime Environment (JRE). Objects are referred to using symbolic references. The data types in the JVM are fully standardized as a single spec across all JVM implementations on all platforms and architectures. The JVM also follows the network byte order, which means communication between Java programs on different architectures can happen using the big-endian byte order. Jvmtop (https://code.google.com/p/jvmtop/) is a handy JVM monitoring tool similar to the top command in Unix-like systems.
The just-in-time compiler
The just-in-time (JIT) compiler is part of the JVM. When the JVM starts up, the JIT compiler knows hardly anything about the running code so it simply interprets the JVM bytecodes. As the program keeps running...