Why?
A tradeoff between fast(er) compilation and a reasonable runtime performance.
How?
Use an “intermediate language”
•more high-level than machine code => easier to
compile to
•more low-level than source language => easier to
implement as an interpreter
Example: A “Java Development Kit” for machine M