Будь-яка мова може бути скомпільований у байт-код, який розуміє JVM – все, що вам для цього потрібно, це компілятор, який видає байт-код. Відтоді різниці з точки зору JVM немає. Настільки, що ви можете взяти скомпільовані Scala, Clojure, Jython тощо.19 вересня 2021 р.
Наприклад, Java і Smalltalk код зазвичай зберігається у форматі байт-коду, який зазвичай компілюється JIT для перекладу байт-коду в машинний код перед виконанням.
Щоразу, коли ви запускаєте програму Python, ця програма (і все, що вона імпортує) буде скомпільовано з вихідного коду Python у байт-код Python, а потім виконується байт-код. Все це відбувається для вас автоматично, і ви можете навіть не помітити цього.
C# використовує комбінацію статичної компіляції та JIT-компіляції. Це тягне за собою те, що код компілюється до байт-коду в останній можливий момент. Статична компіляція компілює весь вихідний код заздалегідь.
На відміну від цього, JavaScript не має етапу компіляції. Натомість інтерпретатор у браузері читає код JavaScript, інтерпретує кожен рядок і запускає його. Більш сучасні браузери використовують технологію, відому як Just-In-Time (JIT) компіляція, яка компілює JavaScript у виконуваний байт-код саме тоді, коли він збирається запуститися.
Коли програма написана на Java, компілятор Java перетворює вихідний код на байт-код, виводячи байт-код у файл CLASS. Потім файл CLASS зчитується та обробляється віртуальною машиною Java (JVM), що працює в цільовій системі.