2015-04-02 3 views
0

Я пишу свой собственный язык программирования с компиляцией в java-байт-код в качестве моей выпускной работы и имея проблемы с созданием последнего частичного байт-кода. Я уже искал некоторые библиотеки для этого и даже написал некоторый код, используя библиотеку ASM, но я очень недоволен этой библиотекой, потому что это событие/посетитель (я не знаю, как правильно его зовут), основанная на архитектуре, разбивает мой мозг. Итак, что мне нужно:Генерация байт-кода Java

  • Мне нужно только создать байт-код Java. Поскольку многие сравнения, которые я смотрел, говорили о трансформации, мне это не нужно.
  • Мне нужно понять, как работает байт-код и JVM.
  • Существует нет большого количества о производительности. Это должно быть приемлемо.

Итак, какая библиотека генерации java-байт-кода более подходит для моего случая?

P.S. Кроме того, я хочу сказать, что я не полностью отказываюсь от ASM, может быть, это хорошо, но в этом случае мне нужно что-то понять эту архитектуру, потому что теперь я просто не могу представить, как правильно работать с ней.

+0

См. Http://docs.oracle.com/javase/specs/jvms/se8/html/index.html, особенно [глава 3] (http://docs.oracle.com/javase/specs/jvms/ se8/html/jvms-3.html), [глава 4] (http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html) и [глава 6] (http: //docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html) – Holger

+0

Добро пожаловать в SO saroff. Пожалуйста, не просите помощи в поиске программного обеспечения, ссылок, книг и т. Д., Так как такие вопросы [считаются вне темы] (http://stackoverflow.com/help/on-topic). –

ответ

1

Мне нужно понять, как работает байт-код и JVM.

Да. Это, вероятно, является основной причиной, по которой у вас возникли проблемы с использованием ASM. Скорее всего, в документации к библиотеке предполагается, что вы уже знакомы с этим. Сконфигурирование спецификации виртуальной машины Java даст вам общее представление о том, как работает байт-код.

+0

Я уже изучил некоторые основы байткода и очень малоуровневую манипуляцию байт-кодами в ASM, это не та вещь, о которой я боюсь. Но я никогда не слышал об этой модели, основанной на событиях, и я не знаю, как правильно работать с ней, кроме примеров учебников. – saroff

+0

@saroff Ну, единственное, что я могу предложить: выберите пример учебника, который будет ближе всего к тому, что вы пытаетесь сделать, начните его изменять и опубликуйте более конкретный вопрос, когда вы застрянете. – Atsby

2

Я предлагаю вам использовать библиотеку более высокого уровня, такую ​​как ByteBuddy, однако я создаю код Java, который он скомпилировал во время выполнения, например. Java Runtime Compiler

Чтение кода отладки Java часто бывает проще, чем делать то же самое для байтового кода.

Смежные вопросы