Virtual Machines, Runtime Compilation, Code Generation and Specialization Techniques