Это госы! Wiki
Это госы! Wiki
Advertisement

Интерфейс виртуальных компьютеров[]

Interface

Компиляция, интерпретация[]

Компиляция – преобразование исходного текста программы в машинный код.

  • Позволяет получить более эффективный код, чем исходный текст за счет оптимизации.
  • Применяется, как правило, для императивных языков со сложной структурой:dee Pascal, C, Ada, др.

Интерпретация – непосредственное исполнение исходного текста программы.

  • Легкость реализации операций отладки на уровне исходной программы.
  • Более медленна и требует больше памяти, чем компиляция.
  • Применяется, как правило, для языков с простой структурой: декларативные LISP, APL, языки сценариев ОС.

Смешанная система реализации языка предполагает два этапа:

  • Компиляция исходного текста программы в промежуточный язык, и затем
  • Интерпретация программы на промежуточном языке.

По сравнению с чистой интерпретацией в смешанной реализации этап компиляции позволяет уменьшить ошибки в интерпретируемом коде, получить компактный и мобильный интерпретируемый код (этапы смешанной реализации могут выполняться в разных аппаратно-программных средах). Примеры: Perl, Java.

Java-модель[]

Решение – замена JVM на компилятор с J-кода в машинный код компьютера-клиента.

  • Компиляция может выполняться "на лету" – одновременно или почти одновременно с приемом J-кода. В худшем случае скорость работы возрастет при втором выполнении апплета.
  • Это частичное решение – не очень практично встраивать сложный оптимизирующий компилятор внутрь браузера для каждой аппаратно-программной среды.

Проблема безопасности[]

Как контролировать действия апплета во время его интерпретации (format c:, вирусы и др.)?

Возможные стратегии:

  • Строгий контроль соответствия типов (устранение случайного или преднамеренного повреждения данных, вызванного выходом за границы массива, повисшими указателями и др.)
  • Проверка J-кода (JVM проверяет, действительно ли поток байтов, полученных с удаленного компьютера, состоит из допустимых инструкций J-кода)
  • Ограничения на апплет (апплету не разрешается выполнять некоторые операции на получающем компьютере: запись и удаление файлов и др.)

Независимость модели от языка[]

Java-модель может быть реализована на базе любого исходного языка программирования (не обязательно Java).

Существуют компиляторы, которые переводят исходный текст Ada в J-код.

Advertisement