Java is an object oriented programming language based on the syntax from C. Unlike most other languages, Java source code is not compiled directly to machine language, but to something called bytecode. Still, bytecode can be considered machine language; only it is not readable by anything but a Java Virtual Machine, which basicly is a program that translates bytecode into machine language - hence the Java Virtual Machine can be thought of, as a software CPU.

The reason for this is, that the source code (and the bytecode) can run on any platform (Windows, Linux, Mac, Solaris, Unix etc.) where there is a Java Virtual Machine implemented. This provides platform independency, which is useful for many things: portability, Internet programming and so on.

The disadvantage is, that Java is slightly slower than for example C, C++ or machine language - even considerably slower when dealing with graphics.

Good news is, that anything is possible with Java, due to a large number of extensions, for example JNI, EJB and a lot of other tricky technologies, of which we will describe some.