Транслятор, Компилятор, Интерпретатор и Байт-Код
В этой статье мы будем говорить о таких терминах как транслятор, компилятор, интерпретатор и байт-код. Начнём с транслятора.
Транслятор
Итак, что же такое транслятор? Транслятор - это программа или техническое средство, выполняющее трансляцию программы. Вы написали свой код, и для того чтобы его преобразовать в бинарный, нам нужен транслятор. Трансляторы делятся условно на компиляторы и интерпретаторы.
Компилятор
Компилятор полностью берёт ваш код, проверяет его на наличие ошибок и если ошибок нет, то он преобразовывает его полностью в бинарный код. Исполняет же программу уже операционная система. Благодаря этому, ускоряется выполнение программы, и нет необходимости в наличии компилятора на компьютере пользователя. Однако, есть подводные камни: ваша программа становится зависимой от операционной системы, и любые изменения требуют перекомпиляции.
Схема работы компилятора:
Достоинства:
- Быстрота работы программ.
- Отсутствие надобности компилятора на компьютере пользователя.
Недостатки:
- Программа зависит от ОС, под которую была скомпилирована.
- При внесении изменений требуется перекомпиляция кода.
Интерпретатор
Интерпретатор читает ваш исходный код и воспроизводит его. Это происходит строчка за строчкой, что придает ему особую гибкость. Интерпретаторы отличаются независимостью от операционных систем — ваш код может мигрировать с легкостью. И самое главное, нет необходимости в трудоемкой перекомпиляции при внесении изменений. Но, к сожалению, за этой гибкостью часто кроется невысокая скорость выполнения.
Схема работы интерпретатора:
Достоинства:
- Независимость от ОС.
- При внесении изменений НЕ требуется перекомпиляция кода.
Недостатки:
- Низкая скорость работы.
- Для запуска программы требуется наличие интерпретатора.
Байт-код
В Java используется третий подход, который использует достоинства и компилятора, и интерпретатора — байт-код.
Процесс начинается с исходного кода на Java в файле с расширением .java.
Этот код проходит через компилятор, который не только проверяет его на ошибки, но и трансформирует в байт-код. При этом создается новый файл с расширением .class.
Байт-код здесь играет ключевую роль, забывая о конкретной платформе. Компилированный байт-код является универсальным языком, который может быть интерпретирован любым устройством, поддерживающим Java.
Здесь на сцену выходит виртуальная машина Java (JVM). JVM, наш виртуальный маг, читает байт-код и трансформирует его в машинный код, который уже может быть запущен на конкретной платформе. Таким образом, благодаря этому умелому сочетанию компиляции и интерпретации, Java обеспечивает гибкость и переносимость кода.
Презентацию с видео можно скачать на Patreon.
Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.