Jikes RVM , вероятно, самая известная реализация JVM, написанная на Java. Однако его реализация самого низкого уровня просто состоит из статических вызовов методов к «магическому» интерфейсу, который специально обрабатывается компилятором и переводится в собственный код.
Maxine VM (первоначально разработанная Sun Labs, в настоящее время Oracle Labs) - это настоящая метакруглая виртуальная машина, в которой не только все написано на Java, но и нет специальной в корпусе компилятора происходит. Более того: Maxine VM не только написана на Java, она даже запускает сама по себе ! Это может показаться сумасшедшим, и, честно говоря, я понятия не имею, как это работает, но оно основано на Klein VM (разработанном Sun Labs), который делает то же самое для языка программирования Self.
Это имеет некоторые очень интересные свойства: поскольку сама JVM является частью кодовой базы, которую интерпретирует JVM, той же кодовой базы, к которой принадлежит пользовательский код, это означает, что она может выполнять оптимизации, такие как встраивание через границу виртуальной машины. IOW: он может встроить код VM в код пользователя и наоборот. Это также означает, что сама виртуальная машина подвергается такому же профилированию во время выполнения и динамической оптимизации, как & ndash; на других виртуальных машинах (включая Jikes) & ndash; только пользовательский код, что означает, что сама виртуальная машина постоянно перекомпилируется и повторно оптимизируется для адаптации к изменяющимся нагрузкам, новым загружаемым классам, изменяющимся профилям, изменяющимся моделям использования и т. д.
На виртуальных машинах, таких как HotSpot, JRockit, J9 и других, эти оптимизации невозможны по той простой причине, что JVM знает только, как оптимизировать байт-код JVML, но виртуальная машина не написана на Java. Но даже в Jikes это невозможно, потому что, хотя виртуальная машина написана на Java, она статически компилируется в собственный код до запуска , и код самой виртуальной машины не является частью кода, который ВМ "видит".
Squawk VM также является JVM, разработанной Sun Labs, теперь Oracle Labs. В отличие от Maxine, который примерно похож на J9, HotSpot или JRockit в своей целевой аудитории, Squawk больше похож на KVM (первоначально разработанный Sun, в настоящее время Oracle), то есть нацеленный на встроенные устройства с ограниченными ресурсами. Squawk также вдохновлен Кляйном. В отличие от Maxine, он имеет небольшой уровень абстракции, написанный на C. Но имейте в виду, что Maxine требует ОС для запуска, тогда как Squawk работает без ОС. Таким образом, в некотором смысле Squawk даже чище, чем Maxine, потому что многие части, которые не являются частью Maxine, но являются частью ОС (где они часто реализуются в C, C ++ или других низкоуровневых языках), на самом деле являются частью Squawk сам. Драйверы устройств, например, написаны на Java. В C. написан только небольшой аппаратный уровень абстракции и библиотеки ввода-вывода.