Java-реализация ... JVM? - PullRequest
       35

Java-реализация ... JVM?

11 голосов
/ 08 октября 2010

Некоторое время назад я нашел проект MJVM . К сожалению, этот проект был заброшен его автором (я спросил Игорь по электронной почте).

Интересно, есть ли (продолжение) проект с открытым исходным кодом полной реализации JVM на Java, подобный этому.

Под "полным" я имею в виду не только эмуляцию мобильных устройств.

Ответы [ 3 ]

30 голосов
/ 08 октября 2010

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. написан только небольшой аппаратный уровень абстракции и библиотеки ввода-вывода.

6 голосов
/ 08 октября 2010

Jikes RVM - это JVM, написанная на Java, используемая для исследований и находящаяся в стадии активной разработки.

1 голос
/ 08 октября 2010

JNode - это операционная система JVM +, написанная на Java, которая работает на одном компьютере с x86 или виртуальной.SVN проекта в последнее время был довольно неактивен (примерно за последние 6 месяцев), но я считаю, что в зеркалах GIT для этого проекта есть активность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...