smali

smali

четверг, 5 сентября 2013 г.

[Inside JVM. Step 2.] Давайте напишем jvm.

Решил снова покопать байт код.
Пока пролистал jvm spec, javap, reJ, ClassEditor.

Дальше хочется построить простейшую jvm на java.
В учебных целях.
Вернее даже не одну jvm, а серию итераций jvm с постепенным усложнением и с поясняющими презентациями.

Когда проект будет готов - можно будет на  его основе "играться" с чем-то более интересным.
Главное - максимальная простота и наглядность.
ОС - Windows.
Минимум зависимостей от сторонних библиотек.

Однако основная цель - сделать классный практический курс по jvm internals.
Чтоб разобраться самому (по крайней мере я о себе).
Плюс - помочь всем, кого интересует тема.

Начать можно с парсера .class файлов.
Затем сделать простейшую обработку небольшого набора команд + стек.
Затем добавить создание объектов и heap.
И так далее.

И наоборот - код и работающие примерчики будут пояснять презентации )
А потом возможно можно будет написать книжку на основе проекта.

Вот примеры похожего (но всё же не совсем то).

Home Made Java Virtual Machine
http://www.codeproject.com/Articles/24029/Home-Made-Java-Virtual-Machine

small java jvm
http://igormaznitsa.com/projects/mjvm/index.html

Home Made Java Virtual Machine
http://www.codeproject.com/Articles/24029/Home-Made-Java-Virtual-Machine

How to create your own virtual machine -- Part 2
http://www.codeproject.com/Articles/61924/How-to-create-your-own-virtual-machine-Part-2

companion to the book Inside the Java Virtual Machine
http://web.informatik.uni-bonn.de/IV/martini/Lehre/Veranstaltungen/SS00/InformatikII/JavaSimulation/index.html

Есть желание подсказать куда лучше копать?
Есть желание поучаствовать в "проекте"?

3 комментария:

  1. Подсказали покопать OpenJDK или JikesRVM и глянуть
    Oracle JRockit: The Definitive Guide
    http://www.packtpub.com/oracle-jrockit-definitive-guide/book

    На досуге копаю.

    Кто-то разбирался с OpenJDK / JikesRVM?

    ОтветитьУдалить
  2. Для изменения и генерации байт кода может пригодится ASM http://asm.ow2.org/ и Javassist http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/

    ОтветитьУдалить
    Ответы
    1. Спасибо.

      Учтём.
      А на практике приходилось работать с этими библиотеками?
      Какое о них сложилось мнение?

      Плюс - что вы думаете по поводу BPEL?
      http://commons.apache.org/proper/commons-bcel/

      Удалить