Ответ
Compile time (время компиляции) — это этап, на котором исходный код Java (файлы .java) преобразуется компилятором (javac) в байт-код (файлы .class).
На этом этапе происходят:
- Синтаксический анализ и построение абстрактного синтаксического дерева (AST).
- Проверка типов (type checking) и разрешение имен.
- Оптимизации на уровне байт-кода (очень ограниченные).
Ошибки времени компиляции (compile-time errors) возникают из-за нарушений правил языка, которые компилятор может обнаружить статически, без запуска программы.
Примеры ошибок:
int number = "text"; // Ошибка: несовместимые типы
System.out.println(undeclaredVariable); // Ошибка: cannot find symbol
String s = null;
s.length(); // Компиляция пройдет! Это ошибка времени выполнения (NullPointerException).
Ключевое отличие от Runtime: Ошибки времени выполнения (например, NullPointerException, ArrayIndexOutOfBoundsException) возникают уже после успешной компиляции, во время выполнения программы JVM.