Understanding the Java Virtual Machine (JVM)