Introduction to Compiler Construction in a Java World