logo
[КОМП СИСТЕМЫ] / KS1

Виртуальная машина java (jvm)

В отличии от других языков высокого уровня исходный код на языке JAVA компилируется не в объектный код, а сразу в машинные команды. Однако это команды не конкретной машины, а команды так называемой виртуальной машины JAVA - JVM (Java Virtual Machine). Команды JVM короткие, как правило в 1 байт, поэтому команды JVM называются байт-кодом. Таких команд 226. Упрощенно JVM можно представить в виде:

Гость

Прикладной процесс

Среда исполнения

ПО виртуализации

JVM

Хост

ОС

Оборудование

Процесс выполняющийся на JVM – гость. Базовая платформа поддерживающая JVM-хост. Среда исполнения – эмулирует команды пользовательской программы.

Эмулировать двоичный код с системой команд отличных от системы хоста непростая задача.

Проще эмулировать эти команды путем интерпретации. Так в Java программа-интерпретатор выбирает из памяти одну за другой команды пользовательской программы и выполняет их.

Этот процесс может быть долгим. Для его ускорения применяются различные приемы и оптимизация.

Интерпретаторы постоянно совершенствуются для достижения высокой скорости исполнения байт-кода. Разработаны JIT(just in time)-компиляторы запоминающие уже интерпретированные участки в машинных командах процессора и выполняющие их при повторном обращении.

Кроме программного обеспечения JVM и JIT фирма Sun и другие компании разработали специальные микросхемы JVM-процессоры.

Эти процессоры выполняют программы JVM без компиляции и интерпретации. Они имеют патент фирмы Sun и разработаны в рамках проекта PICO-Java. Микросхемы на основе PICO-Java встраиваются в пластиковые карты, мобильные телефоны, телевизоры и т.д.