Modern languages use both translation methods in order to execute source code. The most notable and most famous is Java. The Java complier firsts translates source code into class files. These class files are not object code as the machine does not understand them, but no longer is it Java. It is known as byte code and is closer to machine code than it is to source code. This byte code is then interpreted when it is run by an interpreter known as the Java virtual machine. The rational is that byte code can be produced then ran on any operating system which has a virtual machine running on it.