• All source code is first written in plain text files ending with the “.java” extension
• Those source files are then compiled into “.class” files by the javac compiler
• A “.class” file does not contain code that is native to your processor; it instead contains bytecodes — the machine language of the Java Virtual Machine (JVM)
• The java launcher tool then runs your application with an instance of the Java Virtual Machine, i.e. your code is run by JVM