Цитата из книги "Java. Новое поколение разработки":
"В техническом отношении с точки зрения теории компиляции байт-код —
это действительно своеобразный промежуточный язык (intermediate
language), а не настоящий машинный код. Это означает, что процесс
преобразования исходного кода Java в байт-код не является компиляцией
в том смысле, в каком она понимается в языках C и С++. В свою очередь,
javac не назовешь таким же компилятором, как gcc. В сущности, это
генератор файлов классов для обработки исходного кода Java. Настоящим
компилятором в экосистеме Java является динамический компилятор
(JIT)".
Правильно ли я понимаю, что, в то время как JIT - динамический компилятор, javac - статический компилятор?
Ответ
Javac не является статическим компилятором. Потому, что он генерирует байт код, который уже в процессе выполнения программы будет динамически компилироваться в машинный код, или интерпретироваться
Но в java 9 появится возможность генерировать машинный код до запуска программы.
Комментариев нет:
Отправить комментарий