Ответ
Байт-код — это промежуточный, низкоуровневый и платформенно-независимый набор инструкций, генерируемый компилятором Java (javac) из исходного кода (.java файлы). Он выполняется виртуальной машиной Java (JVM).
Как это работает:
- Пишется исходный код:
Main.java. - Компилятор
javacтранслирует его в байт-код:Main.class. - JVM (например, HotSpot) загружает, проверяет, интерпретирует или компилирует (JIT) этот байт-код в машинный код для конкретного процессора.
Просмотр байт-кода:
javap -c Main.class
Пример вывода (упрощенно):
public static void main(java.lang.String[]);
Code:
0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3 // String Hello, World!
5: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
Преимущества:
- Кроссплатформенность (WORA): один
.classфайл работает везде, где есть JVM. - Безопасность: JVM проверяет байт-код перед выполнением (верификация).
- Оптимизация: JIT-компилятор может оптимизировать "горячий" код во время выполнения.
Недостаток:
- Накладные расходы: необходимость интерпретации/JIT-компиляции, что может влиять на время старта и потребление памяти.