Скомпилированный язык - это язык, который преобразует исходный код в машинный код. Также известен как собственное приложение.
Интерпретируемый язык - это язык, который преобразует исходный код в некоторый промежуточный. Во время выполнения программы интерпретатор запускает исходный код. Интерпретируемые языки, как правило, значительно медленнее, чем скомпилированные языки. Они полезны, однако, для мобильности.
C компилируется, поворачивая исходный код:
for (int i=1;i<=100;i++) { printf("%d",i); }
в сборку, затем в машинный код. Процессор выбирает каждую машинную инструкцию и выполняет ее. Это очень быстро.
Однако Java преобразует исходный код в промежуточный байт-код. Во время выполнения он запускается на «виртуальной машине», которая может быть медленнее, чем собственная скомпилированная программа.