Languages can be classified as to how they are running. Some languages code runs directly on the hardware of the computer (and the functions provided by the operating system) and others require an interpreter, an additional program. C and C++ are compiled into an executable that can run on it's own in the OS the code is being compiled for, Java can't. After compiling, Java requires an interpreter (Java Virtual Machine, JVM) to read and execute the compiled code. This doesn't mean C++ is better than Java because no interpreter is required. Having an interpreter can have benefits. Consequentially, an OS has to load the JVM before a Java program can be executed which incurs some overhead but as I already pointed out there are (many) cases where this is worth while.