In the Java world, developers write Java code in any Java IDE and compile it into bytecodes, which in turn are loaded into a virtual machine called the Java Virtual Machine, or JVM, behind the scenes through a Java class loader, and executed in the JVM. The JVM specification describes what is required of a JVM implementation and ensures the interoperability of Java programs across different implementations and underlying hardware platforms.
Similarly, in Ethereum, smart contracts and DApp developers code smart contracts in an Ethereum high-level language such as Solidity, compile them into bytecodes, and upload them on blockchain for invocation and execution. The EVM is the runtime execution environment for smart ...