Aiiighghghghhhhh!!!! Why, why, why do people keep saying this?!
Java is a compiled language. The Java source you write gets turned into native machine code. It's just that the compilation happens at runtime, unlike with many other languages where it happens earlier. Same process, different time.
Java is normally used as a compiled language, however it is not entirely accurate to say that it gets converted to native code always. It depends on what you are using to compile the source and run the resulting output.
If you use a standard Java compiler, the output is a JVM class file image consisting of byte-code instructions and meta-data. If this is then loaded in Sun's JVM for instance, it may be JIT compiled into native code--but it could also be interpreted. This depends on how the JVM instance is configured to use the JIT compiler. There are other JVM implementations that in fact are just use an interpreter.
In fact there exists a Java compiler that emit native code statically too.
The same goes for the Common Language Infrastructure (i.e..NET Framework), the MS implementation JIT compiles assemblies (the byte-code image of the CLI) into native code as needed. However, I believe GNU Portable.NET JIT compiles into another byte-code language (for the Converted Virtual Machine) and *if* a JIT compiler is available for the platform actually JIT compiles to native, otherwise uses an interpreter over the CVM byte-code.
Java is normally used as a compiled language, however it is not entirely accurate to say that it gets converted to native code always. It depends on what you are using to compile the source and run the resulting output.
If you use a standard Java compiler, the output is a JVM class file image consisting of byte-code instructions and meta-data. If this is then loaded in Sun's JVM for instance, it may be JIT compiled into native code--but it could also be interpreted. This depends on how the JVM instance is configured to use the JIT compiler. There are other JVM implementations that in fact are just use an interpreter.
In fact there exists a Java compiler that emit native code statically too.
The same goes for the Common Language Infrastructure (i.e.