Java здійснює компіляцію та інтерпретацію,
У Java програми не збираються у виконувані файли ; вони компілюються в байт-код (як обговорювалося раніше), який JVM (віртуальна машина Java) потім інтерпретує / виконує під час виконання. Вихідний код Java компілюється в байт-код, коли ми використовуємо компілятор javac. Байт-код зберігається на диску з розширенням файлу .class .
Коли програма має бути запущена, байт-код перетворюється, байт-код може бути перетворений, використовуючи щойно вчасно (JIT) компілятор. Результат - машинний код, який потім подається в пам'ять і виконується.
Javac - компілятор Java, який компілює Java-код у байт-код. JVM - це віртуальна машина Java, яка працює / інтерпретує / переводить байтовий код у код корінної машини. У Java, хоча вона розглядається як інтерпретована мова, вона може використовувати компіляцію JIT (Just-in-Time), коли байт-код знаходиться в JVM. Компілятор JIT зчитує байтові коди у багатьох розділах (або в повному обсязі, рідко) та динамічно компілює їх у машинний код, щоб програма могла працювати швидше, а потім кешуватись та використовувати повторно, не потребуючи перекомпіляції. Таким чином, компіляція JIT поєднує швидкість компільованого коду з гнучкістю інтерпретації.
Інтерпретована мова є типом мови програмування , для якого більшість його реалізацій виконання інструкцій безпосередньо і вільно, без попередньої компіляції програми в інструкцію машинного мови. Інтерпретатор виконує програму безпосередньо, переводячи кожне твердження в послідовність однієї або декількох підпрограм, вже складених у машинний код.
Мова компіляції - це мова програмування, реалізацією якої є, як правило, компілятори (перекладачі, які генерують машинний код із вихідного коду), а не інтерпретатори (покрокові виконавці вихідного коду, де не відбувається переклад перед виконанням часу).
У сучасних реалізаціях мови програмування, як у Java, платформа набуває все більшої популярності для надання обох варіантів.