Введение

Виртуальная машина Java

Jikes Research Virtual Machine (Jikes RVM) — это зрелая виртуальная машина, выполняющая программы, написанные для платформы Java. В отличие от большинства других виртуальных машин Java (JVM), она написана на языке программирования Java в стиле реализации, называемом метациркулярным. Это свободное программное обеспечение с открытым исходным кодом, распространяемое под лицензией Eclipse Public License.

История

В ноябре 1997 года проект Jalapeño стартует как внутренний исследовательский проект в исследовательском центре IBM Thomas J. Watson. В 1999–2000 годах исследователи IBM опубликовали научные работы, описывающие новые аспекты Jikes RVM, и нескольким университетам был предоставлен доступ к исходному коду. В октябре 2001 года Jikes RVM версии 2 был выпущен как проект с открытым исходным кодом под Common Public License. Эта версия поддерживает архитектуры PowerPC и Intel, а также ряд различных алгоритмов сборки мусора. В 2002 году вышла Jikes RVM 2.2, в которой точные сборщики мусора были переработаны в популярный набор точных сборщиков из Memory Management Toolkit. В 2004 году Jikes RVM 2.4 был выпущен с повышенной стабильностью и производительностью, в частности, с особым упором на запуск Eclipse. В 2007 году началась разработка Jikes RVM 2.9, в ходе которой кодовая база была значительно рефакторирована для использования возможностей Java 5.0 и системы сборки Apache Ant. В 2008 году был выпущен Jikes RVM 3.0, что ознаменовало завершение разработки 2.9 и достижение новой стабильности кодовой базы. В 2009 году Jikes RVM 3.1 был выпущен под Eclipse Public License (EPL) со значительным улучшением производительности по сравнению с версией 3.0.1 и переходом к нативным потокам. В 2012 году Jikes RVM получил награду Software Award от Association for Computing Machinery (ACM) Special Interest Group on programming languages (SIGPLAN) за "высокое качество и модульный дизайн".

Загрузка

Будучи метациркулярной, Jikes RVM требует наличия загрузочной JVM для запуска и создания загрузочного образа. Загрузочный образ представляет собой представление объектов, необходимых Jikes RVM для запуска, созданное с помощью рефлексии в загрузочной JVM. Небольшой загрузчик на C отвечает за загрузку загрузочного образа во время выполнения.

Магический виртуальный аппарат

VM Magic – это ситуация, когда компилятор генерирует код для класса, отличный от того, что должны выполнять байт-коды внутри этого класса. Классы VM Magic обеспечивают прямой доступ к памяти и играют ключевую роль в производительности инструментария управления памятью. Классы VM Magic находятся в пакете org.vmmagic и были повторно использованы в других Java-проектах.

Инструментарий управления памятью

Memory Management Toolkit (MMTk) – это набор точных сборщиков мусора, которые использовались в Jikes RVM и других проектах, таких как операционная система Singularity и инфраструктура общего языка с открытым исходным кодом (SSCLI, ранее известная как Rotor). Как и остальная часть Jikes RVM, реализация выполнена на Java, но основная зависимость – от VM Magic.

Классические библиотеки

Либо библиотеки классов Apache Harmony, либо GNU Classpath могут использоваться с Jikes RVM, с экспериментальной поддержкой библиотеки классов OpenJDK.

Компиляторы

Jikes RVM использует быстрый базовый компилятор для быстрой генерации кода для заданной архитектуры. Адаптивная компиляция затем перекомпилирует код с использованием оптимизирующего компилятора, включающего такие возможности, как замена кода во время выполнения (OSR). Система адаптивной компиляции использует модель анализа «затраты-выгода».

Время выполнения

В среде выполнения Jikes RVM реализовано множество инновационных функций, включая механизмы быстрой блокировки, совместного планирования и поддержку быстрого сбора и обработки исключений.

Обработочные предприятия

Jikes RVM поддерживает процессорные архитектуры PowerPC (или ppc) и IA 32 (или Intel x86, 32-битные).

Исследования

Поскольку Jikes RVM является исследовательским проектом, основной акцент в нем делается на изучении новых технологий, что подтверждается количеством научных публикаций, порожденных проектом – более 220 статей по состоянию на 2015 год. Jikes RVM также принимала участие в Google Summer of Code в 2007, 2008, 2010, 2011 и 2012 годах.