1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/guxingke-mini-jvm

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Использование Java 8 для реализации JVM

Особенности

Метациклический

mini-jvm на mini-jvm на hotspot. Можно запустить mini-jvm внутри mini-jvm.

$ java -jar jvm-core/target/mini-jvm.jar -jar jvm-core/target/mini-jvm.jar -jar test.jar
# Hello World!

Мотивация

  1. Попытка понять принципы работы JVM, обучение через практику.
  2. Теория без практики поверхностна, нужна практика.
  3. Простой код помогает Java-разработчикам понять работу JVM.

Быстрый старт [для пользователей Macos]

Пример «Hello world»

brew tap guxingke/repo && brew install mini-jvm

cat <<EOF > HelloWorld.java
public class HelloWorld {
  public static void main(String[] args) {
    if (args.length == 0) {
      System.out.println("hello");
      return;
    }

    for(int i = 0; i < args.length; i ++) {
      System.out.println(args[i]);
    }
  }
}
EOF

javac HelloWorld.java

# no args
mini-jvm HelloWold
# => hello

# with program args
mini-jvm HelloWold hello mini-jvm
# =>  hello
# =>  mini-jvm

# Введите mini-jvm -help для получения дополнительной информации.

Быстрый старт [другие операционные системы]

Необходимо скачать и установить пакет вручную. Dev

План

  • Анализ файлов классов 90%
  • Выполнение байт-кода 90%
  • Загрузка классов 90%
  • Вызов методов 90%
  • Создание экземпляров 90%
  • Собственные методы 90%
  • Обработка исключений 60%
  • Самозагрузка 70%

Ограничения

  1. Не реализована сборка мусора.
  2. Не реализовано многопоточность.

Изменения

  • Реализован метациклический подход.
  • Основные функции отражения доступны.
  • Добавлен простой отладчик bin/jdb.
  • Поддерживаются вызовы Lambda, замыкания и каррирование.
  • Уровень Hello World доступен.

Личные заметки

Рекомендации

  • При использовании JDK1.8.0_121 могут возникнуть проблемы с компиляцией. Подробности см. в #25. Цель этого проекта — изучение JVM. Для того чтобы проект был достаточно маленьким, понятным и лёгким для понимания, мы не планируем выполнять различные адаптационные работы. Рекомендуется изучать его на MacOSX, Maven 3.3+,JDK 1.8.0_192+.

Связаться с автором

Группа в WeChat

Добавьте личный WeChat `guxingke_`, отметьте mini-jvm, чтобы присоединиться к группе.

Ссылки

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Использование Java 8 для реализации JVM. Развернуть Свернуть
LGPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/guxingke-mini-jvm.git
git@api.gitlife.ru:oschina-mirror/guxingke-mini-jvm.git
oschina-mirror
guxingke-mini-jvm
guxingke-mini-jvm
master